| POST | /v1/CarConfiguratorStock | Validate and save a car configurator code for a vehicle search | This endpoint calls Agency API to validate and save a car configurator code. The code is validated and saved in the database and returns a response from a third party CCS which provides car configuration details. These get saved to open search and used to perform a vehicle search |
|---|
export class KeyInformation
{
public BM7NST: string;
public ConfigurationDate: string;
public ModelYear: string;
public HalfYear: string;
public TypeClass: string;
public IsPrivateVan: boolean;
public constructor(init?: Partial<KeyInformation>) { (Object as any).assign(this, init); }
}
export class EquipmentCache
{
public Code: string;
public Description: string;
public StandardFlag: string;
public Price: number;
public Category: string;
public Importance: string;
public constructor(init?: Partial<EquipmentCache>) { (Object as any).assign(this, init); }
}
export class OrderingOptions
{
public Interior: string[];
public Exterior: string[];
public Options: string[];
public WheelOptions: EquipmentCache[] = [];
public TrimOptions: EquipmentCache[] = [];
public EquipmentOptionCodes: EquipmentCache[] = [];
public OptionCodes: EquipmentCache[] = [];
public constructor(init?: Partial<OrderingOptions>) { (Object as any).assign(this, init); }
}
export class CarConfiguratorResponse
{
public Name: string;
public KeyInformation: KeyInformation;
public OrderingOptions: OrderingOptions;
public ResponseStatus: ResponseStatus;
public ConfiguratorCode: string;
public constructor(init?: Partial<CarConfiguratorResponse>) { (Object as any).assign(this, init); }
}
export class BackOrderVehicleDetailsBrand
{
public Description: string;
public constructor(init?: Partial<BackOrderVehicleDetailsBrand>) { (Object as any).assign(this, init); }
}
export class Engine
{
public Id: number;
public Badge: string;
public CubicCapacity: number;
public Cyclinders: number;
public HorsePower: string;
public Kw: string;
public Selected: boolean;
public constructor(init?: Partial<Engine>) { (Object as any).assign(this, init); }
}
export class VehicleAuditDetails
{
public UserId: string;
public Status: boolean;
public Notes: string;
public CreationDate: string;
public constructor(init?: Partial<VehicleAuditDetails>) { (Object as any).assign(this, init); }
}
export class RetailerService
{
public Id: number;
public Description: string;
public Priority: boolean;
public constructor(init?: Partial<RetailerService>) { (Object as any).assign(this, init); }
}
export class RetailerServices
{
public New: RetailerService[];
public Used: RetailerService[];
public constructor(init?: Partial<RetailerServices>) { (Object as any).assign(this, init); }
}
export class RetailerOpeningTime
{
public Day: string;
public OpenFrom: string;
public OpenTo: string;
public Special: string;
public constructor(init?: Partial<RetailerOpeningTime>) { (Object as any).assign(this, init); }
}
export class RetailerOpeningTimes
{
public New: RetailerOpeningTime[] = [];
public Used: RetailerOpeningTime[] = [];
public constructor(init?: Partial<RetailerOpeningTimes>) { (Object as any).assign(this, init); }
}
export class Retailer
{
public Id: number;
public GssnId: string;
public Description: string;
public Street: string;
public City: string;
public District: string;
public Postcode: string;
public GoogleMapPostcode: string;
public Phone: string;
public Fax: string;
public Email: string;
public Website: string;
public Latitude: number;
public Longitude: number;
public RetailerGroup_Id?: number;
public RetailerGroupId: string;
public RetailerGroupName: string;
public Distance: number;
public PaymentServiceGuid: string;
public IsOnline?: boolean;
public IsNewCarRetailer?: boolean;
public IsUsedCarRetailer?: boolean;
public IsCentralRetailer: boolean;
public ChatEnabled: boolean;
public TradeInEnabled: boolean;
public DisplayPhoneNumberNew: string;
public DisplayPhoneNumberUsed: string;
public Services: RetailerServices;
public smart: boolean;
public smartDescription: string;
public smartWebsite: string;
public smartEmail: string;
public smartPhone: string;
public AdditionalInformation: string;
public LegacyId: string;
public DriveTime: number;
public Agent: boolean;
public Port?: number;
public PortName: string;
public MarketAreaId?: number;
public MarketAreaName: string;
public MaintenanceDate: string;
public MaintenanceSource: string;
public STPAccountNumbers: string;
public CampaignExcluded?: boolean;
public DigitalLoungeParentGssnId: string;
public SendLeadsToDigitalLoungeParent: boolean;
public IsExcludedFromImport: boolean;
public OpeningTimes: RetailerOpeningTimes;
public RegionId?: number;
public RegionName: string;
public constructor(init?: Partial<Retailer>) { (Object as any).assign(this, init); }
}
export class Media
{
public ImageCount: number;
public MainImageUrl: string;
public MainImageUrlMobile: string;
public NoImage: boolean;
public ThreeSixtyDegreeImageUrls: string[];
public ThreeSixtyDegreeMobileImageUrls: string[];
public VehicleImageUrls: string[];
public VehicleMobileImageUrls: string[];
public constructor(init?: Partial<Media>) { (Object as any).assign(this, init); }
}
export enum OfferPriceProductType
{
LIST_PRICE = 'LIST_PRICE',
NUMBER_PLATE_FEE = 'NUMBER_PLATE_FEE',
DELIVERY_CHARGE = 'DELIVERY_CHARGE',
FUEL_CHARGE = 'FUEL_CHARGE',
MANUFACTURER_OFFER = 'MANUFACTURER_OFFER',
PERSONALISED_MONEYOFFER = 'PERSONALISED_MONEYOFFER',
PERSONALISED_NONMONEYOFFER = 'PERSONALISED_NONMONEYOFFER',
PERSONALISED_NONMONEYOFFER_NEG = 'PERSONALISED_NONMONEYOFFER_NEG',
SERVICE = 'SERVICE',
SERVICE_NEG = 'SERVICE_NEG',
GOVERNMENT_GRANT = 'GOVERNMENT_GRANT',
OUTRIGHT_PURCHASE_DISCOUNT = 'OUTRIGHT_PURCHASE_DISCOUNT',
VIP_OFFER = 'VIP_OFFER',
WALLBOX_OFFER = 'WALLBOX_OFFER',
WALLBOX_OFFER_NEG = 'WALLBOX_OFFER_NEG',
ROAD_FUND_LICENCE = 'ROAD_FUND_LICENCE',
FIRST_REGISTRATION_FEE = 'FIRST_REGISTRATION_FEE',
NOT_FOUND = 'NOT_FOUND',
ACCESSORY_OFFER = 'ACCESSORY_OFFER',
ACCESSORY_OFFER_NEG = 'ACCESSORY_OFFER_NEG',
MOTABILITY_DISCOUNT = 'MOTABILITY_DISCOUNT',
}
export class Price
{
public Id: string;
public Description: string;
public Net: number;
public VAT: number;
public Gross: number;
public Product: OfferPriceProductType;
public constructor(init?: Partial<Price>) { (Object as any).assign(this, init); }
}
export class Consumption
{
public Id: number;
public Lkm: number;
public Mpg: number;
public constructor(init?: Partial<Consumption>) { (Object as any).assign(this, init); }
}
export class EmissionClass
{
public Colour: string;
public Rating: string;
public constructor(init?: Partial<EmissionClass>) { (Object as any).assign(this, init); }
}
export class Equipment
{
public Id?: number;
public Code: string;
public Description: string;
public constructor(init?: Partial<Equipment>) { (Object as any).assign(this, init); }
}
export class Equipmentv2 extends Equipment
{
public Importance: number;
public IsAdditional: boolean;
public constructor(init?: Partial<Equipmentv2>) { super(init); (Object as any).assign(this, init); }
}
export class EquipmentCategoryv2
{
public Order: number;
public Code: string;
public Description: string;
public Equipment: Equipmentv2[];
public constructor(init?: Partial<EquipmentCategoryv2>) { (Object as any).assign(this, init); }
}
export class VehicleAttribute
{
public Description: string;
public Value: string;
public constructor(init?: Partial<VehicleAttribute>) { (Object as any).assign(this, init); }
}
export class IntegratedServiceCareOptions
{
public OptionCode: string;
public BM7NST: string;
public FullModelYear: string;
public IntegratedProductType: string;
public CustomerDescription: string;
public OneAgentProductType: string;
public constructor(init?: Partial<IntegratedServiceCareOptions>) { (Object as any).assign(this, init); }
}
export class BackOrderVehicleDetails implements IVehiclePrices, IVehiclePriceCollection, IImageUrl, IVehicleDetails
{
public Vin: string;
public CommissionNumber: string;
public Description: string;
public ShortDescription: string;
public ModelId: number;
public Model: string;
public FullModelYearCode: string;
public BrandId?: number;
public Brand: BackOrderVehicleDetailsBrand;
public RetailerId: number;
public ImageUrl: string;
public Colour: string;
public ColourCode: string;
public FuelType: string;
public FuelTypeId: number;
public Transmission: string;
public TransmissionType: string;
public Engine: Engine;
public EngineBadge: string;
public Package: string;
public Line: string;
public MappedLine: string;
public Upholstery: string;
public UpholsteryCode: string;
public UsageCode: string;
public Account: string;
public AccountType: string;
public NST: string;
public Baumuster: string;
public ElectricRange?: number;
public ElectricConsumption?: number;
public ActualPrice?: number;
public OTRPrice: number;
public RetailPriceExVat: number;
public P11D: number;
public VehicleType: string;
public UpholsteryDescription: string;
public UpholsteryType: string;
public BodyStyle: string;
public BodyStyleStyleCode: string;
public BodyStyleStyleCodeElectric: string;
public BodyStyleStyleCodeHybrid: string;
public AvailablePackages: string[];
public Mapped_Line?: number;
public Secured: boolean;
public Bm7NST: string;
public IsAvailableOnline: boolean;
public IsSpecialistCar: boolean;
public IsSellable: boolean;
public UnderOffer: boolean;
public VehicleAuditDetails: VehicleAuditDetails[];
public Retailer: Retailer;
public Media: Media;
public Emission?: number;
public ColourGroup: string;
public VehicleClass: string;
public ProductRange: string;
public IsHOBackOrderAccountVehicle: boolean;
public IsAllocatedToBackOrder: boolean;
public InBackOrderAccount: boolean;
public DeliveryCharge: number;
public DeliveryChargeNet?: number;
public DeliveryChargeVAT?: number;
public Plates: number;
public PlatesNet?: number;
public PlatesVAT?: number;
public FuelCharge: number;
public FuelChargeNet?: number;
public FuelChargeVAT?: number;
public RetailPrice_ExVAT: number;
public RetailPrice_IncVAT: number;
public VED_Year1: number;
public VED_Year2: number;
public FirstRegFee: number;
public OTR_Value: number;
public OTR: number;
public Prices: Price[];
public ProductionDate: string;
public PortArrivalDate?: string;
public Location: string;
public IsDisplayStock: boolean;
public DisplayRetailerId?: number;
public DisplayRetailer: string;
public DisplayRetailerGssnId: string;
public DisplayRetailerMarketAreaId?: number;
public IsSmartDisplayRetailer?: boolean;
public ColourDescription: string;
public Creation?: string;
public Modified?: string;
public VATQualifyingNumber?: number;
public VATQualifying: boolean;
public CurrentRetailerOfferPrice: number;
public GssnId: string;
public NoImage: boolean;
public RegistrationNumber: string;
public RegistrationDate?: string;
public Mileage?: number;
public TradeInDate?: string;
public VID: string;
public EmissionCombined: string;
public EmissionDirective: string;
public NormalisedEmissionDirective: string;
public HasMildHybridEquipmentCode: boolean;
public Acceleration?: number;
public ChassisNumber: string;
public NumberOfDoors: string;
public NumberOfSeats: string;
public SpecialInfo: boolean;
public EligibleForIntegratedServiceCare: boolean;
public ConsumptionCombined: Consumption;
public ConsumptionExtraUrban: Consumption;
public ConsumptionUrban: Consumption;
public WltpFuelConsumptionCombined: Consumption;
public WltpFuelConsumptionExtraHigh: Consumption;
public WltpFuelConsumptionHigh: Consumption;
public WltpFuelConsumptionLow: Consumption;
public WltpFuelConsumptionMedium: Consumption;
public EnergyEfficiencyClass: EmissionClass;
public Equipment: Equipmentv2[];
public EquipmentAdditional: Equipment[];
public EquipmentCategories: EquipmentCategoryv2[];
public VehicleData: VehicleAttribute[];
public IntegratedServiceCareOptions: IntegratedServiceCareOptions[];
public IspVehicleCustomerDescriptions: string[];
public MarketingCode: string;
public EligibleForMaTransfer: boolean;
public ConfirmedProductionDate: string;
public ForecastedArrivalDate: string;
public CesarIdShipToParty: string;
public constructor(init?: Partial<BackOrderVehicleDetails>) { (Object as any).assign(this, init); }
}
export class Package
{
public Id: number;
public Description: string;
public constructor(init?: Partial<Package>) { (Object as any).assign(this, init); }
}
export class BackOrderVehicleDetailsWithPackages extends BackOrderVehicleDetails implements IPackages
{
public Packages: Package[];
public PackageNames: string;
public constructor(init?: Partial<BackOrderVehicleDetailsWithPackages>) { super(init); (Object as any).assign(this, init); }
}
export class CarConfiguratorVehicle extends BackOrderVehicleDetailsWithPackages
{
public ModelYearCode: string;
public HalfModelYearCode: string;
public ActiveOffers: number[] = [];
public EligibleForMotability: boolean;
public NearestPort?: boolean;
public constructor(init?: Partial<CarConfiguratorVehicle>) { super(init); (Object as any).assign(this, init); }
}
export class CarConfiguratorStockMatch
{
public Vehicle: CarConfiguratorVehicle;
public IsSellable: boolean;
public VehicleWheels: string;
public VehicleTrim: string;
public VehicleKeyEquipment: EquipmentCache[] = [];
public VehicleAdditionalOptionCodes: EquipmentCache[] = [];
public FullModelYearDifferences: string[] = [];
public PaintDifferences: string[] = [];
public UpholsteryDifferences: string[] = [];
public WheelDifferences: string[] = [];
public TrimDifferences: string[] = [];
public EquipmentDifferences: string[] = [];
public KeyEquipmentDifferences: string[] = [];
public Differences: string[] = [];
public ExactMatch: boolean;
public OnCarNotConfig: string[] = [];
public constructor(init?: Partial<CarConfiguratorStockMatch>) { (Object as any).assign(this, init); }
}
export class CarConfiguratorStockMatches
{
public SellableMatches: CarConfiguratorStockMatch[] = [];
public NonSellableMatches: CarConfiguratorStockMatch[] = [];
public constructor(init?: Partial<CarConfiguratorStockMatches>) { (Object as any).assign(this, init); }
}
export class CarConfiguratorStockResponse
{
public TotalVehicles: number;
public CarConfiguratorResponse: CarConfiguratorResponse;
public ExactMatches: CarConfiguratorStockMatches;
public CloseMatches: CarConfiguratorStockMatches;
public constructor(init?: Partial<CarConfiguratorStockResponse>) { (Object as any).assign(this, init); }
}
export class CarConfiguratorStockRequest implements IPost
{
/** @description The configurator code to search on */
// @ApiMember(Description="The configurator code to search on", IsRequired=true)
public ConfiguratorCode: string;
/** @description Whether to return sellable vehicles */
// @ApiMember(Description="Whether to return sellable vehicles")
public IsSellable?: boolean;
/** @description Whether to only get exact matches */
// @ApiMember(Description="Whether to only get exact matches")
public ExactMatch: boolean;
/** @description Whether to restrict vehicles response to a GSSN */
// @ApiMember(Description="Whether to restrict vehicles response to a GSSN")
public GSSN: string;
public constructor(init?: Partial<CarConfiguratorStockRequest>) { (Object as any).assign(this, init); }
}
TypeScript CarConfiguratorStockRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/CarConfiguratorStock HTTP/1.1
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"ConfiguratorCode":"String","IsSellable":false,"ExactMatch":false,"GSSN":"String"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"TotalVehicles":4,"CarConfiguratorResponse":{"Name":"String","KeyInformation":{"BM7NST":"String","ConfigurationDate":"String","ModelYear":"String","HalfYear":"String","TypeClass":"String","IsPrivateVan":false},"OrderingOptions":{"Interior":["String"],"Exterior":["String"],"Options":["String"],"WheelOptions":[{"Code":"String","Description":"String","StandardFlag":"String","Price":0,"Category":"String","Importance":"String"}],"TrimOptions":[{"Code":"String","Description":"String","StandardFlag":"String","Price":0,"Category":"String","Importance":"String"}],"EquipmentOptionCodes":[{"Code":"String","Description":"String","StandardFlag":"String","Price":0,"Category":"String","Importance":"String"}],"OptionCodes":[{"Code":"String","Description":"String","StandardFlag":"String","Price":0,"Category":"String","Importance":"String"}]},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"ConfiguratorCode":"String"},"ExactMatches":{"SellableMatches":[{}],"NonSellableMatches":[{}]},"CloseMatches":{"SellableMatches":[{}],"NonSellableMatches":[{}]}}