POST | /v1/order | Creates an order for a selected vehicle via the Agency API | This endpoint is called from Online Showroom to create a vehicle order. It builds the order request object for the Agency API before calling it to create the order. The information it retrieves and builds for the Agency API request include 1.) The customer. 2.) The vehicle. 3.) Ourright purchase. 4.) Motability. 5.) Offers applicable to the vehicle Validation is performed on the input data which includes checking for mandatory items: 1.} Customer details 2.) Vehicle Vin 3.) Agent 4.) GSSN Outlet Id 5.) Source 6.) Order Type 7.) Customer Location Id 8.) Estimated Handover Date |
---|
export enum Source
{
OnlineShowroom = 1,
OneAdmin = 2,
}
export class Address
{
public Property: string;
public Street: string;
public Town: string;
public County: string;
public Locality: string;
public Postcode: string;
public constructor(init?: Partial<Address>) { (Object as any).assign(this, init); }
}
export enum CustomerMode
{
Private = 1,
Business = 2,
Motability = 3,
}
export class SalesforceCustomer implements ICustomer
{
public CustomerId: string;
public IsCiam: boolean;
public CompanyName: string;
public Title: string;
public Firstname: string;
public Surname: string;
public EmailAddress: string;
public Telephone: string;
public Address: Address;
public Mode: CustomerMode;
public constructor(init?: Partial<SalesforceCustomer>) { (Object as any).assign(this, init); }
}
export class Preferences
{
public OptinEmail: boolean;
public OptinPost: boolean;
public OptinSMS: boolean;
public OptinTelephone: boolean;
public constructor(init?: Partial<Preferences>) { (Object as any).assign(this, init); }
}
export class Customer extends SalesforceCustomer
{
public ProfileId?: string;
public Preferences?: Preferences;
public constructor(init?: Partial<Customer>) { super(init); (Object as any).assign(this, init); }
}
export class Vehicle
{
public Vin?: string;
public constructor(init?: Partial<Vehicle>) { (Object as any).assign(this, init); }
}
export class Option
{
public IsDefault: boolean;
public Value: number;
public constructor(init?: Partial<Option>) { (Object as any).assign(this, init); }
}
export class Term
{
public Options: Option[] = [];
public constructor(init?: Partial<Term>) { (Object as any).assign(this, init); }
}
export class Deposit
{
public Default: string;
public constructor(init?: Partial<Deposit>) { (Object as any).assign(this, init); }
}
export class Mileage
{
public Options: Option[] = [];
public constructor(init?: Partial<Mileage>) { (Object as any).assign(this, init); }
}
export class AdvanceRentals
{
public Options: Option[] = [];
public constructor(init?: Partial<AdvanceRentals>) { (Object as any).assign(this, init); }
}
export enum VehicleType
{
UNASSIGNED = 'UNASSIGNED',
NEW = 'NEW',
USED = 'USED',
}
export class FinanceCriteria
{
public Key: string;
public Name: string;
public Type: string;
public IsDefault: boolean;
public Term: Term;
public Deposit: Deposit;
public Mileage: Mileage;
public AdvanceRentals: AdvanceRentals;
public IsPersonalised: boolean;
public RegularPayment: string;
public PartExchange: string;
public Settlement: string;
public CustomerType: string;
public VehicleType: VehicleType;
public constructor(init?: Partial<FinanceCriteria>) { (Object as any).assign(this, init); }
}
export class OutrightPurchase
{
public IsOutrightPurchase: boolean;
public Reference: string;
public DiscountRate: number;
public Bm7NST: string;
public IsBackOrder: boolean;
public IsCOPConverter: boolean;
public constructor(init?: Partial<OutrightPurchase>) { (Object as any).assign(this, init); }
}
export enum MotabilityType
{
PIP = 1,
WPMS = 2,
UNASSIGNED = 3,
}
export class CreateOrderBase
{
public Source: Source;
public GssnId: string;
public AdditionalInformation: string;
public Cash: boolean;
public Finance: boolean;
public Customer: Customer;
public Vehicle: Vehicle;
public FinanceCriteria: FinanceCriteria;
public BackOrderGuid?: string;
public TagUrl?: string;
public OutrightPurchase?: OutrightPurchase;
public Motability: boolean;
public MotabilityPricingId?: number;
public FinanceApplicationReference: string;
public Specialist: boolean;
public GasId: string;
public PersonalisedItemOfferIds?: number[];
public SuggestedVin?: string;
public NonOptimumReason?: string;
public MotabilityType: MotabilityType;
public EstimatedHandoverDate: string;
public constructor(init?: Partial<CreateOrderBase>) { (Object as any).assign(this, init); }
}
export class CreateOrderResponse
{
public Guid: string;
public Reference: string;
public ResponseStatus: ResponseStatus;
public BackOrderReference: string;
public constructor(init?: Partial<CreateOrderResponse>) { (Object as any).assign(this, init); }
}
export class CreateOrderRequest extends CreateOrderBase implements IGet
{
public constructor(init?: Partial<CreateOrderRequest>) { super(init); (Object as any).assign(this, init); }
}
TypeScript CreateOrderRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/order HTTP/1.1
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<CreateOrderRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.ServiceModel.Orders">
<AdditionalInformation xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</AdditionalInformation>
<BackOrderGuid xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">00000000-0000-0000-0000-000000000000</BackOrderGuid>
<Cash xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">false</Cash>
<Customer xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mercedes.Agency.API.Shared.POCO" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">
<d2p1:Address>
<d2p1:County>String</d2p1:County>
<d2p1:Locality>String</d2p1:Locality>
<d2p1:Postcode>String</d2p1:Postcode>
<d2p1:Property>String</d2p1:Property>
<d2p1:Street>String</d2p1:Street>
<d2p1:Town>String</d2p1:Town>
</d2p1:Address>
<d2p1:CompanyName>String</d2p1:CompanyName>
<d2p1:CustomerId>String</d2p1:CustomerId>
<d2p1:EmailAddress>String</d2p1:EmailAddress>
<d2p1:Firstname>String</d2p1:Firstname>
<d2p1:IsCiam>false</d2p1:IsCiam>
<d2p1:Mode>Private</d2p1:Mode>
<d2p1:Surname>String</d2p1:Surname>
<d2p1:Telephone>String</d2p1:Telephone>
<d2p1:Title>String</d2p1:Title>
<d2p1:Preferences>
<d2p1:OptinEmail>false</d2p1:OptinEmail>
<d2p1:OptinPost>false</d2p1:OptinPost>
<d2p1:OptinSMS>false</d2p1:OptinSMS>
<d2p1:OptinTelephone>false</d2p1:OptinTelephone>
</d2p1:Preferences>
<d2p1:ProfileId>00000000-0000-0000-0000-000000000000</d2p1:ProfileId>
</Customer>
<EstimatedHandoverDate xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</EstimatedHandoverDate>
<Finance xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">false</Finance>
<FinanceApplicationReference xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</FinanceApplicationReference>
<FinanceCriteria xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mercedes.Agency.API.Shared.POCO" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">
<d2p1:AdvanceRentals>
<d2p1:Options>
<d2p1:Option>
<d2p1:IsDefault>false</d2p1:IsDefault>
<d2p1:Value>0</d2p1:Value>
</d2p1:Option>
</d2p1:Options>
</d2p1:AdvanceRentals>
<d2p1:CustomerType>String</d2p1:CustomerType>
<d2p1:Deposit>
<d2p1:Default>String</d2p1:Default>
</d2p1:Deposit>
<d2p1:IsDefault>false</d2p1:IsDefault>
<d2p1:IsPersonalised>false</d2p1:IsPersonalised>
<d2p1:Key>String</d2p1:Key>
<d2p1:Mileage>
<d2p1:Options>
<d2p1:Option>
<d2p1:IsDefault>false</d2p1:IsDefault>
<d2p1:Value>0</d2p1:Value>
</d2p1:Option>
</d2p1:Options>
</d2p1:Mileage>
<d2p1:Name>String</d2p1:Name>
<d2p1:PartExchange>String</d2p1:PartExchange>
<d2p1:RegularPayment>String</d2p1:RegularPayment>
<d2p1:Settlement>String</d2p1:Settlement>
<d2p1:Term>
<d2p1:Options>
<d2p1:Option>
<d2p1:IsDefault>false</d2p1:IsDefault>
<d2p1:Value>0</d2p1:Value>
</d2p1:Option>
</d2p1:Options>
</d2p1:Term>
<d2p1:Type>String</d2p1:Type>
<d2p1:VehicleType>UNASSIGNED</d2p1:VehicleType>
</FinanceCriteria>
<GasId xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</GasId>
<GssnId xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</GssnId>
<Motability xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">false</Motability>
<MotabilityPricingId xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">0</MotabilityPricingId>
<MotabilityType xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">PIP</MotabilityType>
<NonOptimumReason xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</NonOptimumReason>
<OutrightPurchase xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mercedes.Agency.API.Shared.POCO" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">
<d2p1:Bm7NST>String</d2p1:Bm7NST>
<d2p1:DiscountRate>0</d2p1:DiscountRate>
<d2p1:IsBackOrder>false</d2p1:IsBackOrder>
<d2p1:IsCOPConverter>false</d2p1:IsCOPConverter>
<d2p1:IsOutrightPurchase>false</d2p1:IsOutrightPurchase>
<d2p1:Reference>String</d2p1:Reference>
</OutrightPurchase>
<PersonalisedItemOfferIds xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">
<d2p1:int>0</d2p1:int>
</PersonalisedItemOfferIds>
<Source xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">OnlineShowroom</Source>
<Specialist xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">false</Specialist>
<SuggestedVin xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</SuggestedVin>
<TagUrl xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">String</TagUrl>
<Vehicle xmlns:d2p1="http://schemas.datacontract.org/2004/07/Mercedes.Agency.API.Shared.POCO" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Business.Poco">
<d2p1:Vin>String</d2p1:Vin>
</Vehicle>
</CreateOrderRequest>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <CreateOrderResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Mercedes.Agency.Orchestration.API.Clients.AgencyApi.Responses"> <BackOrderReference>String</BackOrderReference> <Guid>String</Guid> <Reference>String</Reference> <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types"> <d2p1:ErrorCode>String</d2p1:ErrorCode> <d2p1:Message>String</d2p1:Message> <d2p1:StackTrace>String</d2p1:StackTrace> <d2p1:Errors> <d2p1:ResponseError> <d2p1:ErrorCode>String</d2p1:ErrorCode> <d2p1:FieldName>String</d2p1:FieldName> <d2p1:Message>String</d2p1:Message> <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d5p1:KeyValueOfstringstring> <d5p1:Key>String</d5p1:Key> <d5p1:Value>String</d5p1:Value> </d5p1:KeyValueOfstringstring> </d2p1:Meta> </d2p1:ResponseError> </d2p1:Errors> <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d3p1:KeyValueOfstringstring> <d3p1:Key>String</d3p1:Key> <d3p1:Value>String</d3p1:Value> </d3p1:KeyValueOfstringstring> </d2p1:Meta> </ResponseStatus> </CreateOrderResponse>