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 |
---|
"use strict";
/** @typedef {number} */
export var Source;
(function (Source) {
Source[Source["OnlineShowroom"] = 1] = "OnlineShowroom"
Source[Source["OneAdmin"] = 2] = "OneAdmin"
})(Source || (Source = {}));
export class Address {
/** @param {{Property?:string,Street?:string,Town?:string,County?:string,Locality?:string,Postcode?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Property;
/** @type {string} */
Street;
/** @type {string} */
Town;
/** @type {string} */
County;
/** @type {string} */
Locality;
/** @type {string} */
Postcode;
}
/** @typedef {number} */
export var CustomerMode;
(function (CustomerMode) {
CustomerMode[CustomerMode["Private"] = 1] = "Private"
CustomerMode[CustomerMode["Business"] = 2] = "Business"
CustomerMode[CustomerMode["Motability"] = 3] = "Motability"
})(CustomerMode || (CustomerMode = {}));
export class SalesforceCustomer {
/** @param {{CustomerId?:string,IsCiam?:boolean,CompanyName?:string,Title?:string,Firstname?:string,Surname?:string,EmailAddress?:string,Telephone?:string,Address?:Address,Mode?:CustomerMode}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
CustomerId;
/** @type {boolean} */
IsCiam;
/** @type {string} */
CompanyName;
/** @type {string} */
Title;
/** @type {string} */
Firstname;
/** @type {string} */
Surname;
/** @type {string} */
EmailAddress;
/** @type {string} */
Telephone;
/** @type {Address} */
Address;
/** @type {CustomerMode} */
Mode;
}
export class Preferences {
/** @param {{OptinEmail?:boolean,OptinPost?:boolean,OptinSMS?:boolean,OptinTelephone?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
OptinEmail;
/** @type {boolean} */
OptinPost;
/** @type {boolean} */
OptinSMS;
/** @type {boolean} */
OptinTelephone;
}
export class Customer extends SalesforceCustomer {
/** @param {{ProfileId?:string,Preferences?:Preferences,CustomerId?:string,IsCiam?:boolean,CompanyName?:string,Title?:string,Firstname?:string,Surname?:string,EmailAddress?:string,Telephone?:string,Address?:Address,Mode?:CustomerMode}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {?string} */
ProfileId;
/** @type {?Preferences} */
Preferences;
}
export class Vehicle {
/** @param {{Vin?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?string} */
Vin;
}
export class Option {
/** @param {{IsDefault?:boolean,Value?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
IsDefault;
/** @type {number} */
Value;
}
export class Term {
/** @param {{Options?:Option[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {Option[]} */
Options = [];
}
export class Deposit {
/** @param {{Default?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Default;
}
export class Mileage {
/** @param {{Options?:Option[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {Option[]} */
Options = [];
}
export class AdvanceRentals {
/** @param {{Options?:Option[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {Option[]} */
Options = [];
}
/** @typedef {'UNASSIGNED'|'NEW'|'USED'} */
export var VehicleType;
(function (VehicleType) {
VehicleType["UNASSIGNED"] = "UNASSIGNED"
VehicleType["NEW"] = "NEW"
VehicleType["USED"] = "USED"
})(VehicleType || (VehicleType = {}));
export class FinanceCriteria {
/** @param {{Key?:string,Name?:string,Type?:string,IsDefault?:boolean,Term?:Term,Deposit?:Deposit,Mileage?:Mileage,AdvanceRentals?:AdvanceRentals,IsPersonalised?:boolean,RegularPayment?:string,PartExchange?:string,Settlement?:string,CustomerType?:string,VehicleType?:VehicleType}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Key;
/** @type {string} */
Name;
/** @type {string} */
Type;
/** @type {boolean} */
IsDefault;
/** @type {Term} */
Term;
/** @type {Deposit} */
Deposit;
/** @type {Mileage} */
Mileage;
/** @type {AdvanceRentals} */
AdvanceRentals;
/** @type {boolean} */
IsPersonalised;
/** @type {string} */
RegularPayment;
/** @type {string} */
PartExchange;
/** @type {string} */
Settlement;
/** @type {string} */
CustomerType;
/** @type {VehicleType} */
VehicleType;
}
export class OutrightPurchase {
/** @param {{IsOutrightPurchase?:boolean,Reference?:string,DiscountRate?:number,Bm7NST?:string,IsBackOrder?:boolean,IsCOPConverter?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
IsOutrightPurchase;
/** @type {string} */
Reference;
/** @type {number} */
DiscountRate;
/** @type {string} */
Bm7NST;
/** @type {boolean} */
IsBackOrder;
/** @type {boolean} */
IsCOPConverter;
}
/** @typedef {number} */
export var MotabilityType;
(function (MotabilityType) {
MotabilityType[MotabilityType["PIP"] = 1] = "PIP"
MotabilityType[MotabilityType["WPMS"] = 2] = "WPMS"
MotabilityType[MotabilityType["UNASSIGNED"] = 3] = "UNASSIGNED"
})(MotabilityType || (MotabilityType = {}));
export class CreateOrderBase {
/** @param {{Source?:Source,GssnId?:string,AdditionalInformation?:string,Cash?:boolean,Finance?:boolean,Customer?:Customer,Vehicle?:Vehicle,FinanceCriteria?:FinanceCriteria,BackOrderGuid?:string,TagUrl?:string,OutrightPurchase?:OutrightPurchase,Motability?:boolean,MotabilityPricingId?:number,FinanceApplicationReference?:string,Specialist?:boolean,GasId?:string,PersonalisedItemOfferIds?:number[],SuggestedVin?:string,NonOptimumReason?:string,MotabilityType?:MotabilityType,EstimatedHandoverDate?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {Source} */
Source;
/** @type {string} */
GssnId;
/** @type {string} */
AdditionalInformation;
/** @type {boolean} */
Cash;
/** @type {boolean} */
Finance;
/** @type {Customer} */
Customer;
/** @type {Vehicle} */
Vehicle;
/** @type {FinanceCriteria} */
FinanceCriteria;
/** @type {?string} */
BackOrderGuid;
/** @type {?string} */
TagUrl;
/** @type {?OutrightPurchase} */
OutrightPurchase;
/** @type {boolean} */
Motability;
/** @type {?number} */
MotabilityPricingId;
/** @type {string} */
FinanceApplicationReference;
/** @type {boolean} */
Specialist;
/** @type {string} */
GasId;
/** @type {?number[]} */
PersonalisedItemOfferIds;
/** @type {?string} */
SuggestedVin;
/** @type {?string} */
NonOptimumReason;
/** @type {MotabilityType} */
MotabilityType;
/** @type {string} */
EstimatedHandoverDate;
}
export class CreateOrderResponse {
/** @param {{Guid?:string,Reference?:string,ResponseStatus?:ResponseStatus,BackOrderReference?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Guid;
/** @type {string} */
Reference;
/** @type {ResponseStatus} */
ResponseStatus;
/** @type {string} */
BackOrderReference;
}
export class CreateOrderRequest extends CreateOrderBase {
/** @param {{Source?:Source,GssnId?:string,AdditionalInformation?:string,Cash?:boolean,Finance?:boolean,Customer?:Customer,Vehicle?:Vehicle,FinanceCriteria?:FinanceCriteria,BackOrderGuid?:string,TagUrl?:string,OutrightPurchase?:OutrightPurchase,Motability?:boolean,MotabilityPricingId?:number,FinanceApplicationReference?:string,Specialist?:boolean,GasId?:string,PersonalisedItemOfferIds?:number[],SuggestedVin?:string,NonOptimumReason?:string,MotabilityType?:MotabilityType,EstimatedHandoverDate?:string}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
JavaScript 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>