| 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 |
|---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Mercedes.Agency.Orchestration.API.ServiceModel.BackOrders.CarConfigurator;
using Mercedes.Agency.API.Shared.POCO.CarConfigurator;
using Mercedes.OS.Vehicle.Shared.POCO;
using Mercedes.Agency.API.Shared.POCO;
using Mercedes.Agency.API.Shared.Enums;
using Mercedes.OS.Vehicle.Shared.POCO.Filters.v2;
namespace Mercedes.Agency.API.Shared.POCO
{
public partial class Price
{
public virtual string Id { get; set; }
public virtual string Description { get; set; }
public virtual decimal Net { get; set; }
public virtual decimal VAT { get; set; }
public virtual decimal Gross { get; set; }
public virtual OfferPriceProductType Product { get; set; }
}
public partial class RetailerOpeningTime
{
public virtual string Day { get; set; }
public virtual string OpenFrom { get; set; }
public virtual string OpenTo { get; set; }
public virtual string Special { get; set; }
}
public partial class VehicleAttribute
{
public virtual string Description { get; set; }
public virtual string Value { get; set; }
}
}
namespace Mercedes.Agency.API.Shared.POCO.CarConfigurator
{
public partial class CarConfiguratorResponse
{
public virtual string Name { get; set; }
public virtual KeyInformation KeyInformation { get; set; }
public virtual OrderingOptions OrderingOptions { get; set; }
public virtual ResponseStatus ResponseStatus { get; set; }
public virtual string ConfiguratorCode { get; set; }
}
public partial class KeyInformation
{
public virtual string BM7NST { get; set; }
public virtual string ConfigurationDate { get; set; }
public virtual string ModelYear { get; set; }
public virtual string HalfYear { get; set; }
}
public partial class OrderingOptions
{
public virtual List<string> Interior { get; set; }
public virtual List<string> Exterior { get; set; }
public virtual List<string> Options { get; set; }
public virtual List<EquipmentCache> WheelOptions { get; set; } = [];
public virtual List<EquipmentCache> TrimOptions { get; set; } = [];
public virtual List<EquipmentCache> OptionCodes { get; set; } = [];
}
}
namespace Mercedes.Agency.Orchestration.API.ServiceModel.BackOrders.CarConfigurator
{
public partial class CarConfiguratorStockMatches
{
public virtual List<CarConfiguratorStockMatch> SellableMatches { get; set; } = [];
public virtual List<CarConfiguratorStockMatch> NonSellableMatches { get; set; } = [];
}
public partial class CarConfiguratorStockRequest
: IPost
{
///<summary>
///The configurator code to search on
///</summary>
[ApiMember(Description="The configurator code to search on", IsRequired=true)]
public virtual string ConfiguratorCode { get; set; }
///<summary>
///Whether to return sellable vehicles
///</summary>
[ApiMember(Description="Whether to return sellable vehicles")]
public virtual bool? IsSellable { get; set; }
///<summary>
///Whether to only get exact matches
///</summary>
[ApiMember(Description="Whether to only get exact matches")]
public virtual bool ExactMatch { get; set; }
///<summary>
///Whether to restrict vehicles response to a GSSN
///</summary>
[ApiMember(Description="Whether to restrict vehicles response to a GSSN")]
public virtual string GSSN { get; set; }
}
public partial class CarConfiguratorStockResponse
{
public virtual int TotalVehicles { get; set; }
public virtual CarConfiguratorResponse CarConfiguratorResponse { get; set; }
public virtual CarConfiguratorStockMatches ExactMatches { get; set; }
public virtual CarConfiguratorStockMatches CloseMatches { get; set; }
}
}
namespace Mercedes.OS.Vehicle.Shared.POCO
{
public partial class BackOrderVehicleDetails
: IVehiclePrices, IVehiclePriceCollection, IImageUrl, IVehicleDetails
{
public virtual string Vin { get; set; }
public virtual string CommissionNumber { get; set; }
public virtual string Description { get; set; }
public virtual string ShortDescription { get; set; }
public virtual int ModelId { get; set; }
public virtual string Model { get; set; }
public virtual string FullModelYearCode { get; set; }
public virtual int? BrandId { get; set; }
public virtual BackOrderVehicleDetailsBrand Brand { get; set; }
public virtual int RetailerId { get; set; }
public virtual string ImageUrl { get; set; }
public virtual string Colour { get; set; }
public virtual string ColourCode { get; set; }
public virtual string FuelType { get; set; }
public virtual int FuelTypeId { get; set; }
public virtual string Transmission { get; set; }
public virtual string TransmissionType { get; set; }
public virtual Engine Engine { get; set; }
public virtual string EngineBadge { get; set; }
public virtual string Package { get; set; }
public virtual string Line { get; set; }
public virtual string Upholstery { get; set; }
public virtual string UpholsteryCode { get; set; }
public virtual string UsageCode { get; set; }
public virtual string Account { get; set; }
public virtual string AccountType { get; set; }
public virtual string NST { get; set; }
public virtual string Baumuster { get; set; }
public virtual decimal? ElectricRange { get; set; }
public virtual decimal? ElectricConsumption { get; set; }
public virtual decimal? ActualPrice { get; set; }
public virtual decimal OTRPrice { get; set; }
public virtual decimal RetailPriceExVat { get; set; }
public virtual decimal P11D { get; set; }
public virtual string VehicleType { get; set; }
public virtual string UpholsteryDescription { get; set; }
public virtual string UpholsteryType { get; set; }
public virtual string BodyStyle { get; set; }
public virtual string BodyStyleStyleCode { get; set; }
public virtual string BodyStyleStyleCodeElectric { get; set; }
public virtual string BodyStyleStyleCodeHybrid { get; set; }
public virtual List<string> AvailablePackages { get; set; }
public virtual int? Mapped_Line { get; set; }
public virtual bool Secured { get; set; }
public virtual string Bm7NST { get; set; }
public virtual bool IsAvailableOnline { get; set; }
public virtual bool IsSpecialistCar { get; set; }
public virtual bool IsSellable { get; set; }
public virtual bool UnderOffer { get; set; }
public virtual List<VehicleAuditDetails> VehicleAuditDetails { get; set; }
public virtual Retailer Retailer { get; set; }
public virtual Media Media { get; set; }
public virtual decimal? Emission { get; set; }
public virtual string ColourGroup { get; set; }
public virtual string VehicleClass { get; set; }
public virtual string ProductRange { get; set; }
public virtual bool IsHOBackOrderAccountVehicle { get; set; }
public virtual bool IsAllocatedToBackOrder { get; set; }
public virtual bool InBackOrderAccount { get; set; }
public virtual decimal DeliveryCharge { get; set; }
public virtual decimal? DeliveryChargeNet { get; set; }
public virtual decimal? DeliveryChargeVAT { get; set; }
public virtual decimal Plates { get; set; }
public virtual decimal? PlatesNet { get; set; }
public virtual decimal? PlatesVAT { get; set; }
public virtual decimal FuelCharge { get; set; }
public virtual decimal? FuelChargeNet { get; set; }
public virtual decimal? FuelChargeVAT { get; set; }
public virtual decimal RetailPrice_ExVAT { get; set; }
public virtual decimal RetailPrice_IncVAT { get; set; }
public virtual decimal VED_Year1 { get; set; }
public virtual decimal VED_Year2 { get; set; }
public virtual decimal FirstRegFee { get; set; }
public virtual decimal OTR_Value { get; set; }
public virtual decimal OTR { get; set; }
public virtual List<Price> Prices { get; set; }
public virtual string ProductionDate { get; set; }
public virtual DateTime? PortArrivalDate { get; set; }
public virtual string Location { get; set; }
public virtual bool IsDisplayStock { get; set; }
public virtual int? DisplayRetailerId { get; set; }
public virtual string DisplayRetailer { get; set; }
public virtual string DisplayRetailerGssnId { get; set; }
public virtual int? DisplayRetailerMarketAreaId { get; set; }
public virtual bool? IsSmartDisplayRetailer { get; set; }
public virtual string ColourDescription { get; set; }
public virtual DateTime? Creation { get; set; }
public virtual DateTime? Modified { get; set; }
public virtual int? VATQualifyingNumber { get; set; }
public virtual bool VATQualifying { get; set; }
public virtual decimal CurrentRetailerOfferPrice { get; set; }
public virtual string GssnId { get; set; }
public virtual bool NoImage { get; set; }
public virtual string RegistrationNumber { get; set; }
public virtual DateTime? RegistrationDate { get; set; }
public virtual int? Mileage { get; set; }
public virtual DateTime? TradeInDate { get; set; }
public virtual string VID { get; set; }
public virtual string EmissionCombined { get; set; }
public virtual string EmissionDirective { get; set; }
public virtual string NormalisedEmissionDirective { get; set; }
public virtual bool HasMildHybridEquipmentCode { get; set; }
public virtual decimal? Acceleration { get; set; }
public virtual string ChassisNumber { get; set; }
public virtual string NumberOfDoors { get; set; }
public virtual string NumberOfSeats { get; set; }
public virtual bool SpecialInfo { get; set; }
public virtual bool EligibleForIntegratedServiceCare { get; set; }
public virtual Consumption ConsumptionCombined { get; set; }
public virtual Consumption ConsumptionExtraUrban { get; set; }
public virtual Consumption ConsumptionUrban { get; set; }
public virtual Consumption WltpFuelConsumptionCombined { get; set; }
public virtual Consumption WltpFuelConsumptionExtraHigh { get; set; }
public virtual Consumption WltpFuelConsumptionHigh { get; set; }
public virtual Consumption WltpFuelConsumptionLow { get; set; }
public virtual Consumption WltpFuelConsumptionMedium { get; set; }
public virtual EmissionClass EnergyEfficiencyClass { get; set; }
public virtual List<Equipmentv2> Equipment { get; set; }
public virtual List<Equipment> EquipmentAdditional { get; set; }
public virtual List<EquipmentCategoryv2> EquipmentCategories { get; set; }
public virtual List<VehicleAttribute> VehicleData { get; set; }
public virtual List<IntegratedServiceCareOptions> IntegratedServiceCareOptions { get; set; }
public virtual List<string> IspVehicleCustomerDescriptions { get; set; }
public virtual string MarketingCode { get; set; }
public virtual bool EligibleForMaTransfer { get; set; }
public virtual string ConfirmedProductionDate { get; set; }
public virtual string ForecastedArrivalDate { get; set; }
}
public partial class BackOrderVehicleDetailsBrand
{
public virtual string Description { get; set; }
}
public partial class BackOrderVehicleDetailsWithPackages
: BackOrderVehicleDetails, IPackages
{
public virtual ICollection<Package> Packages { get; set; }
public virtual string PackageNames { get; set; }
}
public partial class CarConfiguratorStockMatch
{
public virtual CarConfiguratorVehicle Vehicle { get; set; }
public virtual bool IsSellable { get; set; }
public virtual string VehicleWheels { get; set; }
public virtual string VehicleTrim { get; set; }
public virtual List<string> VehicleAdditionalOptionCodes { get; set; } = [];
public virtual List<string> FullModelYearDifferences { get; set; } = [];
public virtual List<string> PaintDifferences { get; set; } = [];
public virtual List<string> UpholsteryDifferences { get; set; } = [];
public virtual List<string> WheelDifferences { get; set; } = [];
public virtual List<string> TrimDifferences { get; set; } = [];
public virtual List<string> EquipmentDifferences { get; set; } = [];
public virtual List<string> Differences { get; set; } = [];
public virtual bool ExactMatch { get; set; }
}
public partial class CarConfiguratorVehicle
: BackOrderVehicleDetailsWithPackages
{
public virtual string ModelYearCode { get; set; }
public virtual string HalfModelYearCode { get; set; }
public virtual List<int> ActiveOffers { get; set; } = [];
public virtual bool EligibleForMotability { get; set; }
public virtual bool? NearestPort { get; set; }
}
public partial class Consumption
{
public virtual int Id { get; set; }
public virtual decimal Lkm { get; set; }
public virtual decimal Mpg { get; set; }
}
public partial class EmissionClass
{
public virtual string Colour { get; set; }
public virtual string Rating { get; set; }
}
public partial class Engine
{
public virtual int Id { get; set; }
public virtual string Badge { get; set; }
public virtual int CubicCapacity { get; set; }
public virtual int Cyclinders { get; set; }
public virtual string HorsePower { get; set; }
public virtual string Kw { get; set; }
public virtual bool Selected { get; set; }
}
public partial class Equipment
{
public virtual int? Id { get; set; }
public virtual string Code { get; set; }
public virtual string Description { get; set; }
}
public partial class EquipmentCache
{
public virtual string Code { get; set; }
public virtual string Description { get; set; }
public virtual string StandardFlag { get; set; }
public virtual decimal Price { get; set; }
public virtual string Category { get; set; }
public virtual string Importance { get; set; }
}
public partial class EquipmentCategoryv2
{
public virtual int Order { get; set; }
public virtual string Code { get; set; }
public virtual string Description { get; set; }
public virtual List<Equipmentv2> Equipment { get; set; }
}
public partial class Equipmentv2
: Equipment
{
public virtual int Importance { get; set; }
public virtual bool IsAdditional { get; set; }
}
public partial class IntegratedServiceCareOptions
{
public virtual string OptionCode { get; set; }
public virtual string BM7NST { get; set; }
public virtual string FullModelYear { get; set; }
public virtual string IntegratedProductType { get; set; }
public virtual string CustomerDescription { get; set; }
public virtual string OneAgentProductType { get; set; }
}
public partial class Media
{
public virtual int ImageCount { get; set; }
public virtual string MainImageUrl { get; set; }
public virtual string MainImageUrlMobile { get; set; }
public virtual bool NoImage { get; set; }
public virtual string[] ThreeSixtyDegreeImageUrls { get; set; }
public virtual string[] ThreeSixtyDegreeMobileImageUrls { get; set; }
public virtual string[] VehicleImageUrls { get; set; }
public virtual string[] VehicleMobileImageUrls { get; set; }
}
public partial class Retailer
{
public virtual int Id { get; set; }
public virtual string GssnId { get; set; }
public virtual string Description { get; set; }
public virtual string Street { get; set; }
public virtual string City { get; set; }
public virtual string District { get; set; }
public virtual string Postcode { get; set; }
public virtual string GoogleMapPostcode { get; set; }
public virtual string Phone { get; set; }
public virtual string Fax { get; set; }
public virtual string Email { get; set; }
public virtual string Website { get; set; }
public virtual double Latitude { get; set; }
public virtual double Longitude { get; set; }
public virtual int? RetailerGroup_Id { get; set; }
public virtual string RetailerGroupId { get; set; }
public virtual string RetailerGroupName { get; set; }
public virtual double Distance { get; set; }
public virtual string PaymentServiceGuid { get; set; }
public virtual bool? IsOnline { get; set; }
public virtual bool? IsNewCarRetailer { get; set; }
public virtual bool? IsUsedCarRetailer { get; set; }
public virtual bool IsCentralRetailer { get; set; }
public virtual bool ChatEnabled { get; set; }
public virtual bool TradeInEnabled { get; set; }
public virtual string DisplayPhoneNumberNew { get; set; }
public virtual string DisplayPhoneNumberUsed { get; set; }
public virtual RetailerServices Services { get; set; }
public virtual bool smart { get; set; }
public virtual string smartDescription { get; set; }
public virtual string smartWebsite { get; set; }
public virtual string smartEmail { get; set; }
public virtual string smartPhone { get; set; }
public virtual string AdditionalInformation { get; set; }
public virtual string LegacyId { get; set; }
public virtual decimal DriveTime { get; set; }
public virtual bool Agent { get; set; }
public virtual int? Port { get; set; }
public virtual string PortName { get; set; }
public virtual int? MarketAreaId { get; set; }
public virtual string MarketAreaName { get; set; }
public virtual string MaintenanceDate { get; set; }
public virtual string MaintenanceSource { get; set; }
public virtual string STPAccountNumbers { get; set; }
public virtual bool? CampaignExcluded { get; set; }
public virtual string DigitalLoungeParentGssnId { get; set; }
public virtual bool SendLeadsToDigitalLoungeParent { get; set; }
public virtual bool IsExcludedFromImport { get; set; }
public virtual RetailerOpeningTimes OpeningTimes { get; set; }
}
public partial class RetailerOpeningTimes
{
public virtual List<RetailerOpeningTime> New { get; set; } = [];
public virtual List<RetailerOpeningTime> Used { get; set; } = [];
}
public partial class RetailerService
{
public virtual int Id { get; set; }
public virtual string Description { get; set; }
public virtual bool Priority { get; set; }
}
public partial class RetailerServices
{
public virtual List<RetailerService> New { get; set; }
public virtual List<RetailerService> Used { get; set; }
}
public partial class VehicleAuditDetails
{
public virtual string UserId { get; set; }
public virtual bool Status { get; set; }
public virtual string Notes { get; set; }
public virtual string CreationDate { get; set; }
}
}
namespace Mercedes.OS.Vehicle.Shared.POCO.Filters.v2
{
public partial class Package
{
public virtual int Id { get; set; }
public virtual string Description { get; set; }
}
}
C# CarConfiguratorStockRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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/jsv
Content-Type: text/jsv
Content-Length: length
{
ConfiguratorCode: String,
IsSellable: False,
ExactMatch: False,
GSSN: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
TotalVehicles: 4,
CarConfiguratorResponse:
{
Name: String,
KeyInformation:
{
BM7NST: String,
ConfigurationDate: String,
ModelYear: String,
HalfYear: String
},
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
}
],
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:
[
{
}
]
}
}