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 |
---|
<?php namespace dtos;
use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};
enum Source : int
{
case OnlineShowroom = 1;
case OneAdmin = 2;
}
class Address implements JsonSerializable
{
public function __construct(
/** @var string */
public string $Property='',
/** @var string */
public string $Street='',
/** @var string */
public string $Town='',
/** @var string */
public string $County='',
/** @var string */
public string $Locality='',
/** @var string */
public string $Postcode=''
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Property'])) $this->Property = $o['Property'];
if (isset($o['Street'])) $this->Street = $o['Street'];
if (isset($o['Town'])) $this->Town = $o['Town'];
if (isset($o['County'])) $this->County = $o['County'];
if (isset($o['Locality'])) $this->Locality = $o['Locality'];
if (isset($o['Postcode'])) $this->Postcode = $o['Postcode'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Property)) $o['Property'] = $this->Property;
if (isset($this->Street)) $o['Street'] = $this->Street;
if (isset($this->Town)) $o['Town'] = $this->Town;
if (isset($this->County)) $o['County'] = $this->County;
if (isset($this->Locality)) $o['Locality'] = $this->Locality;
if (isset($this->Postcode)) $o['Postcode'] = $this->Postcode;
return empty($o) ? new class(){} : $o;
}
}
enum CustomerMode : int
{
case Private = 1;
case Business = 2;
case Motability = 3;
}
class SalesforceCustomer implements ICustomer, JsonSerializable
{
public function __construct(
/** @var string */
public string $CustomerId='',
/** @var bool|null */
public ?bool $IsCiam=null,
/** @var string */
public string $CompanyName='',
/** @var string */
public string $Title='',
/** @var string */
public string $Firstname='',
/** @var string */
public string $Surname='',
/** @var string */
public string $EmailAddress='',
/** @var string */
public string $Telephone='',
/** @var Address|null */
public ?Address $Address=null,
/** @var CustomerMode|null */
public ?CustomerMode $Mode=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['CustomerId'])) $this->CustomerId = $o['CustomerId'];
if (isset($o['IsCiam'])) $this->IsCiam = $o['IsCiam'];
if (isset($o['CompanyName'])) $this->CompanyName = $o['CompanyName'];
if (isset($o['Title'])) $this->Title = $o['Title'];
if (isset($o['Firstname'])) $this->Firstname = $o['Firstname'];
if (isset($o['Surname'])) $this->Surname = $o['Surname'];
if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
if (isset($o['Telephone'])) $this->Telephone = $o['Telephone'];
if (isset($o['Address'])) $this->Address = JsonConverters::from('Address', $o['Address']);
if (isset($o['Mode'])) $this->Mode = JsonConverters::from('CustomerMode', $o['Mode']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->CustomerId)) $o['CustomerId'] = $this->CustomerId;
if (isset($this->IsCiam)) $o['IsCiam'] = $this->IsCiam;
if (isset($this->CompanyName)) $o['CompanyName'] = $this->CompanyName;
if (isset($this->Title)) $o['Title'] = $this->Title;
if (isset($this->Firstname)) $o['Firstname'] = $this->Firstname;
if (isset($this->Surname)) $o['Surname'] = $this->Surname;
if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
if (isset($this->Telephone)) $o['Telephone'] = $this->Telephone;
if (isset($this->Address)) $o['Address'] = JsonConverters::to('Address', $this->Address);
if (isset($this->Mode)) $o['Mode'] = JsonConverters::to('CustomerMode', $this->Mode);
return empty($o) ? new class(){} : $o;
}
}
class Preferences implements JsonSerializable
{
public function __construct(
/** @var bool|null */
public ?bool $OptinEmail=null,
/** @var bool|null */
public ?bool $OptinPost=null,
/** @var bool|null */
public ?bool $OptinSMS=null,
/** @var bool|null */
public ?bool $OptinTelephone=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['OptinEmail'])) $this->OptinEmail = $o['OptinEmail'];
if (isset($o['OptinPost'])) $this->OptinPost = $o['OptinPost'];
if (isset($o['OptinSMS'])) $this->OptinSMS = $o['OptinSMS'];
if (isset($o['OptinTelephone'])) $this->OptinTelephone = $o['OptinTelephone'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->OptinEmail)) $o['OptinEmail'] = $this->OptinEmail;
if (isset($this->OptinPost)) $o['OptinPost'] = $this->OptinPost;
if (isset($this->OptinSMS)) $o['OptinSMS'] = $this->OptinSMS;
if (isset($this->OptinTelephone)) $o['OptinTelephone'] = $this->OptinTelephone;
return empty($o) ? new class(){} : $o;
}
}
class Customer extends SalesforceCustomer implements JsonSerializable
{
/**
* @param string $CustomerId
* @param bool|null $IsCiam
* @param string $CompanyName
* @param string $Title
* @param string $Firstname
* @param string $Surname
* @param string $EmailAddress
* @param string $Telephone
* @param Address|null $Address
* @param CustomerMode|null $Mode
*/
public function __construct(
string $CustomerId='',
?bool $IsCiam=null,
string $CompanyName='',
string $Title='',
string $Firstname='',
string $Surname='',
string $EmailAddress='',
string $Telephone='',
?Address $Address=null,
?CustomerMode $Mode=null,
/** @var string|null */
public ?string $ProfileId=null,
/** @var Preferences|null */
public ?Preferences $Preferences=null
) {
parent::__construct($CustomerId,$IsCiam,$CompanyName,$Title,$Firstname,$Surname,$EmailAddress,$Telephone,$Address,$Mode);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['ProfileId'])) $this->ProfileId = $o['ProfileId'];
if (isset($o['Preferences'])) $this->Preferences = JsonConverters::from('Preferences', $o['Preferences']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->ProfileId)) $o['ProfileId'] = $this->ProfileId;
if (isset($this->Preferences)) $o['Preferences'] = JsonConverters::to('Preferences', $this->Preferences);
return empty($o) ? new class(){} : $o;
}
}
class Vehicle implements JsonSerializable
{
public function __construct(
/** @var string|null */
public ?string $Vin=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Vin'])) $this->Vin = $o['Vin'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Vin)) $o['Vin'] = $this->Vin;
return empty($o) ? new class(){} : $o;
}
}
class Option implements JsonSerializable
{
public function __construct(
/** @var bool|null */
public ?bool $IsDefault=null,
/** @var int */
public int $Value=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['IsDefault'])) $this->IsDefault = $o['IsDefault'];
if (isset($o['Value'])) $this->Value = $o['Value'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->IsDefault)) $o['IsDefault'] = $this->IsDefault;
if (isset($this->Value)) $o['Value'] = $this->Value;
return empty($o) ? new class(){} : $o;
}
}
class Term implements JsonSerializable
{
public function __construct(
/** @var array<Option>|null */
public ?array $Options=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Options'])) $this->Options = JsonConverters::fromArray('Option', $o['Options']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Options)) $o['Options'] = JsonConverters::toArray('Option', $this->Options);
return empty($o) ? new class(){} : $o;
}
}
class Deposit implements JsonSerializable
{
public function __construct(
/** @var string */
public string $Default=''
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Default'])) $this->Default = $o['Default'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Default)) $o['Default'] = $this->Default;
return empty($o) ? new class(){} : $o;
}
}
class Mileage implements JsonSerializable
{
public function __construct(
/** @var array<Option>|null */
public ?array $Options=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Options'])) $this->Options = JsonConverters::fromArray('Option', $o['Options']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Options)) $o['Options'] = JsonConverters::toArray('Option', $this->Options);
return empty($o) ? new class(){} : $o;
}
}
class AdvanceRentals implements JsonSerializable
{
public function __construct(
/** @var array<Option>|null */
public ?array $Options=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Options'])) $this->Options = JsonConverters::fromArray('Option', $o['Options']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Options)) $o['Options'] = JsonConverters::toArray('Option', $this->Options);
return empty($o) ? new class(){} : $o;
}
}
enum VehicleType : string
{
case UNASSIGNED = 'UNASSIGNED';
case NEW = 'NEW';
case USED = 'USED';
}
class FinanceCriteria implements JsonSerializable
{
public function __construct(
/** @var string */
public string $Key='',
/** @var string */
public string $Name='',
/** @var string */
public string $Type='',
/** @var bool|null */
public ?bool $IsDefault=null,
/** @var Term|null */
public ?Term $Term=null,
/** @var Deposit|null */
public ?Deposit $Deposit=null,
/** @var Mileage|null */
public ?Mileage $Mileage=null,
/** @var AdvanceRentals|null */
public ?AdvanceRentals $AdvanceRentals=null,
/** @var bool|null */
public ?bool $IsPersonalised=null,
/** @var string */
public string $RegularPayment='',
/** @var string */
public string $PartExchange='',
/** @var string */
public string $Settlement='',
/** @var string */
public string $CustomerType='',
/** @var VehicleType|null */
public ?VehicleType $VehicleType=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Key'])) $this->Key = $o['Key'];
if (isset($o['Name'])) $this->Name = $o['Name'];
if (isset($o['Type'])) $this->Type = $o['Type'];
if (isset($o['IsDefault'])) $this->IsDefault = $o['IsDefault'];
if (isset($o['Term'])) $this->Term = JsonConverters::from('Term', $o['Term']);
if (isset($o['Deposit'])) $this->Deposit = JsonConverters::from('Deposit', $o['Deposit']);
if (isset($o['Mileage'])) $this->Mileage = JsonConverters::from('Mileage', $o['Mileage']);
if (isset($o['AdvanceRentals'])) $this->AdvanceRentals = JsonConverters::from('AdvanceRentals', $o['AdvanceRentals']);
if (isset($o['IsPersonalised'])) $this->IsPersonalised = $o['IsPersonalised'];
if (isset($o['RegularPayment'])) $this->RegularPayment = $o['RegularPayment'];
if (isset($o['PartExchange'])) $this->PartExchange = $o['PartExchange'];
if (isset($o['Settlement'])) $this->Settlement = $o['Settlement'];
if (isset($o['CustomerType'])) $this->CustomerType = $o['CustomerType'];
if (isset($o['VehicleType'])) $this->VehicleType = JsonConverters::from('VehicleType', $o['VehicleType']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Key)) $o['Key'] = $this->Key;
if (isset($this->Name)) $o['Name'] = $this->Name;
if (isset($this->Type)) $o['Type'] = $this->Type;
if (isset($this->IsDefault)) $o['IsDefault'] = $this->IsDefault;
if (isset($this->Term)) $o['Term'] = JsonConverters::to('Term', $this->Term);
if (isset($this->Deposit)) $o['Deposit'] = JsonConverters::to('Deposit', $this->Deposit);
if (isset($this->Mileage)) $o['Mileage'] = JsonConverters::to('Mileage', $this->Mileage);
if (isset($this->AdvanceRentals)) $o['AdvanceRentals'] = JsonConverters::to('AdvanceRentals', $this->AdvanceRentals);
if (isset($this->IsPersonalised)) $o['IsPersonalised'] = $this->IsPersonalised;
if (isset($this->RegularPayment)) $o['RegularPayment'] = $this->RegularPayment;
if (isset($this->PartExchange)) $o['PartExchange'] = $this->PartExchange;
if (isset($this->Settlement)) $o['Settlement'] = $this->Settlement;
if (isset($this->CustomerType)) $o['CustomerType'] = $this->CustomerType;
if (isset($this->VehicleType)) $o['VehicleType'] = JsonConverters::to('VehicleType', $this->VehicleType);
return empty($o) ? new class(){} : $o;
}
}
class OutrightPurchase implements JsonSerializable
{
public function __construct(
/** @var bool|null */
public ?bool $IsOutrightPurchase=null,
/** @var string */
public string $Reference='',
/** @var float */
public float $DiscountRate=0.0,
/** @var string */
public string $Bm7NST='',
/** @var bool|null */
public ?bool $IsBackOrder=null,
/** @var bool|null */
public ?bool $IsCOPConverter=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['IsOutrightPurchase'])) $this->IsOutrightPurchase = $o['IsOutrightPurchase'];
if (isset($o['Reference'])) $this->Reference = $o['Reference'];
if (isset($o['DiscountRate'])) $this->DiscountRate = $o['DiscountRate'];
if (isset($o['Bm7NST'])) $this->Bm7NST = $o['Bm7NST'];
if (isset($o['IsBackOrder'])) $this->IsBackOrder = $o['IsBackOrder'];
if (isset($o['IsCOPConverter'])) $this->IsCOPConverter = $o['IsCOPConverter'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->IsOutrightPurchase)) $o['IsOutrightPurchase'] = $this->IsOutrightPurchase;
if (isset($this->Reference)) $o['Reference'] = $this->Reference;
if (isset($this->DiscountRate)) $o['DiscountRate'] = $this->DiscountRate;
if (isset($this->Bm7NST)) $o['Bm7NST'] = $this->Bm7NST;
if (isset($this->IsBackOrder)) $o['IsBackOrder'] = $this->IsBackOrder;
if (isset($this->IsCOPConverter)) $o['IsCOPConverter'] = $this->IsCOPConverter;
return empty($o) ? new class(){} : $o;
}
}
enum MotabilityType : int
{
case PIP = 1;
case WPMS = 2;
case UNASSIGNED = 3;
}
class CreateOrderBase implements JsonSerializable
{
public function __construct(
/** @var Source|null */
public ?Source $Source=null,
/** @var string */
public string $GssnId='',
/** @var string */
public string $AdditionalInformation='',
/** @var bool|null */
public ?bool $Cash=null,
/** @var bool|null */
public ?bool $Finance=null,
/** @var Customer|null */
public ?Customer $Customer=null,
/** @var Vehicle|null */
public ?Vehicle $Vehicle=null,
/** @var FinanceCriteria|null */
public ?FinanceCriteria $FinanceCriteria=null,
/** @var string|null */
public ?string $BackOrderGuid=null,
/** @var string|null */
public ?string $TagUrl=null,
/** @var OutrightPurchase|null */
public ?OutrightPurchase $OutrightPurchase=null,
/** @var bool|null */
public ?bool $Motability=null,
/** @var int|null */
public ?int $MotabilityPricingId=null,
/** @var string */
public string $FinanceApplicationReference='',
/** @var bool|null */
public ?bool $Specialist=null,
/** @var string */
public string $GasId='',
/** @var int[]|null */
public ?array $PersonalisedItemOfferIds=null,
/** @var string|null */
public ?string $SuggestedVin=null,
/** @var string|null */
public ?string $NonOptimumReason=null,
/** @var MotabilityType|null */
public ?MotabilityType $MotabilityType=null,
/** @var string */
public string $EstimatedHandoverDate=''
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Source'])) $this->Source = JsonConverters::from('Source', $o['Source']);
if (isset($o['GssnId'])) $this->GssnId = $o['GssnId'];
if (isset($o['AdditionalInformation'])) $this->AdditionalInformation = $o['AdditionalInformation'];
if (isset($o['Cash'])) $this->Cash = $o['Cash'];
if (isset($o['Finance'])) $this->Finance = $o['Finance'];
if (isset($o['Customer'])) $this->Customer = JsonConverters::from('Customer', $o['Customer']);
if (isset($o['Vehicle'])) $this->Vehicle = JsonConverters::from('Vehicle', $o['Vehicle']);
if (isset($o['FinanceCriteria'])) $this->FinanceCriteria = JsonConverters::from('FinanceCriteria', $o['FinanceCriteria']);
if (isset($o['BackOrderGuid'])) $this->BackOrderGuid = $o['BackOrderGuid'];
if (isset($o['TagUrl'])) $this->TagUrl = $o['TagUrl'];
if (isset($o['OutrightPurchase'])) $this->OutrightPurchase = JsonConverters::from('OutrightPurchase', $o['OutrightPurchase']);
if (isset($o['Motability'])) $this->Motability = $o['Motability'];
if (isset($o['MotabilityPricingId'])) $this->MotabilityPricingId = $o['MotabilityPricingId'];
if (isset($o['FinanceApplicationReference'])) $this->FinanceApplicationReference = $o['FinanceApplicationReference'];
if (isset($o['Specialist'])) $this->Specialist = $o['Specialist'];
if (isset($o['GasId'])) $this->GasId = $o['GasId'];
if (isset($o['PersonalisedItemOfferIds'])) $this->PersonalisedItemOfferIds = JsonConverters::fromArray('int', $o['PersonalisedItemOfferIds']);
if (isset($o['SuggestedVin'])) $this->SuggestedVin = $o['SuggestedVin'];
if (isset($o['NonOptimumReason'])) $this->NonOptimumReason = $o['NonOptimumReason'];
if (isset($o['MotabilityType'])) $this->MotabilityType = JsonConverters::from('MotabilityType', $o['MotabilityType']);
if (isset($o['EstimatedHandoverDate'])) $this->EstimatedHandoverDate = $o['EstimatedHandoverDate'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Source)) $o['Source'] = JsonConverters::to('Source', $this->Source);
if (isset($this->GssnId)) $o['GssnId'] = $this->GssnId;
if (isset($this->AdditionalInformation)) $o['AdditionalInformation'] = $this->AdditionalInformation;
if (isset($this->Cash)) $o['Cash'] = $this->Cash;
if (isset($this->Finance)) $o['Finance'] = $this->Finance;
if (isset($this->Customer)) $o['Customer'] = JsonConverters::to('Customer', $this->Customer);
if (isset($this->Vehicle)) $o['Vehicle'] = JsonConverters::to('Vehicle', $this->Vehicle);
if (isset($this->FinanceCriteria)) $o['FinanceCriteria'] = JsonConverters::to('FinanceCriteria', $this->FinanceCriteria);
if (isset($this->BackOrderGuid)) $o['BackOrderGuid'] = $this->BackOrderGuid;
if (isset($this->TagUrl)) $o['TagUrl'] = $this->TagUrl;
if (isset($this->OutrightPurchase)) $o['OutrightPurchase'] = JsonConverters::to('OutrightPurchase', $this->OutrightPurchase);
if (isset($this->Motability)) $o['Motability'] = $this->Motability;
if (isset($this->MotabilityPricingId)) $o['MotabilityPricingId'] = $this->MotabilityPricingId;
if (isset($this->FinanceApplicationReference)) $o['FinanceApplicationReference'] = $this->FinanceApplicationReference;
if (isset($this->Specialist)) $o['Specialist'] = $this->Specialist;
if (isset($this->GasId)) $o['GasId'] = $this->GasId;
if (isset($this->PersonalisedItemOfferIds)) $o['PersonalisedItemOfferIds'] = JsonConverters::toArray('int', $this->PersonalisedItemOfferIds);
if (isset($this->SuggestedVin)) $o['SuggestedVin'] = $this->SuggestedVin;
if (isset($this->NonOptimumReason)) $o['NonOptimumReason'] = $this->NonOptimumReason;
if (isset($this->MotabilityType)) $o['MotabilityType'] = JsonConverters::to('MotabilityType', $this->MotabilityType);
if (isset($this->EstimatedHandoverDate)) $o['EstimatedHandoverDate'] = $this->EstimatedHandoverDate;
return empty($o) ? new class(){} : $o;
}
}
class CreateOrderResponse implements JsonSerializable
{
public function __construct(
/** @var string */
public string $Guid='',
/** @var string */
public string $Reference='',
/** @var ResponseStatus|null */
public ?ResponseStatus $ResponseStatus=null,
/** @var string */
public string $BackOrderReference=''
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Guid'])) $this->Guid = $o['Guid'];
if (isset($o['Reference'])) $this->Reference = $o['Reference'];
if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
if (isset($o['BackOrderReference'])) $this->BackOrderReference = $o['BackOrderReference'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Guid)) $o['Guid'] = $this->Guid;
if (isset($this->Reference)) $o['Reference'] = $this->Reference;
if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
if (isset($this->BackOrderReference)) $o['BackOrderReference'] = $this->BackOrderReference;
return empty($o) ? new class(){} : $o;
}
}
class CreateOrderRequest extends CreateOrderBase implements IGet, JsonSerializable
{
/**
* @param Source|null $Source
* @param string $GssnId
* @param string $AdditionalInformation
* @param bool|null $Cash
* @param bool|null $Finance
* @param Customer|null $Customer
* @param Vehicle|null $Vehicle
* @param FinanceCriteria|null $FinanceCriteria
* @param string|null $BackOrderGuid
* @param string|null $TagUrl
* @param OutrightPurchase|null $OutrightPurchase
* @param bool|null $Motability
* @param int|null $MotabilityPricingId
* @param string $FinanceApplicationReference
* @param bool|null $Specialist
* @param string $GasId
* @param int[]|null $PersonalisedItemOfferIds
* @param string|null $SuggestedVin
* @param string|null $NonOptimumReason
* @param MotabilityType|null $MotabilityType
* @param string $EstimatedHandoverDate
*/
public function __construct(
?Source $Source=null,
string $GssnId='',
string $AdditionalInformation='',
?bool $Cash=null,
?bool $Finance=null,
?Customer $Customer=null,
?Vehicle $Vehicle=null,
?FinanceCriteria $FinanceCriteria=null,
?string $BackOrderGuid=null,
?string $TagUrl=null,
?OutrightPurchase $OutrightPurchase=null,
?bool $Motability=null,
?int $MotabilityPricingId=null,
string $FinanceApplicationReference='',
?bool $Specialist=null,
string $GasId='',
?array $PersonalisedItemOfferIds=null,
?string $SuggestedVin=null,
?string $NonOptimumReason=null,
?MotabilityType $MotabilityType=null,
string $EstimatedHandoverDate=''
) {
parent::__construct($Source,$GssnId,$AdditionalInformation,$Cash,$Finance,$Customer,$Vehicle,$FinanceCriteria,$BackOrderGuid,$TagUrl,$OutrightPurchase,$Motability,$MotabilityPricingId,$FinanceApplicationReference,$Specialist,$GasId,$PersonalisedItemOfferIds,$SuggestedVin,$NonOptimumReason,$MotabilityType,$EstimatedHandoverDate);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
return empty($o) ? new class(){} : $o;
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
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: text/csv
Content-Type: text/csv
Content-Length: length
{"Source":"OnlineShowroom","GssnId":"String","AdditionalInformation":"String","Cash":false,"Finance":false,"Customer":{"ProfileId":"00000000000000000000000000000000","Preferences":{"OptinEmail":false,"OptinPost":false,"OptinSMS":false,"OptinTelephone":false},"CustomerId":"String","IsCiam":false,"CompanyName":"String","Title":"String","Firstname":"String","Surname":"String","EmailAddress":"String","Telephone":"String","Address":{"Property":"String","Street":"String","Town":"String","County":"String","Locality":"String","Postcode":"String"},"Mode":"Private"},"Vehicle":{"Vin":"String"},"FinanceCriteria":{"Key":"String","Name":"String","Type":"String","IsDefault":false,"Term":{"Options":[{"IsDefault":false,"Value":0}]},"Deposit":{"Default":"String"},"Mileage":{"Options":[{"IsDefault":false,"Value":0}]},"AdvanceRentals":{"Options":[{"IsDefault":false,"Value":0}]},"IsPersonalised":false,"RegularPayment":"String","PartExchange":"String","Settlement":"String","CustomerType":"String","VehicleType":"UNASSIGNED"},"BackOrderGuid":"00000000000000000000000000000000","TagUrl":"String","OutrightPurchase":{"IsOutrightPurchase":false,"Reference":"String","DiscountRate":0,"Bm7NST":"String","IsBackOrder":false,"IsCOPConverter":false},"Motability":false,"MotabilityPricingId":0,"FinanceApplicationReference":"String","Specialist":false,"GasId":"String","PersonalisedItemOfferIds":[0],"SuggestedVin":"String","NonOptimumReason":"String","MotabilityType":"PIP","EstimatedHandoverDate":"String"}
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"Guid":"String","Reference":"String","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"BackOrderReference":"String"}