| 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.Orchestration.API.Business.Poco;
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 virtual string? TypeClass { get; set; }
public virtual bool IsPrivateVan { 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> EquipmentOptionCodes { get; set; } = [];
public virtual List<EquipmentCache> OptionCodes { get; set; } = [];
}
}
namespace Mercedes.Agency.Orchestration.API.Business.Poco
{
public partial class CarConfiguratorStockMatches
{
public virtual List<CarConfiguratorStockMatch> SellableMatches { get; set; } = [];
public virtual List<CarConfiguratorStockMatch> NonSellableMatches { 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.Agency.Orchestration.API.ServiceModel.BackOrders.CarConfigurator
{
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; }
}
}
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? MappedLine { 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 virtual string? CesarIdShipToParty { 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<EquipmentCache> VehicleKeyEquipment { get; set; } = [];
public virtual List<EquipmentCache> 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> KeyEquipmentDifferences { get; set; } = [];
public virtual List<string> Differences { get; set; } = [];
public virtual bool ExactMatch { get; set; }
public virtual List<string> OnCarNotConfig { 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 virtual int? RegionId { get; set; }
public virtual string RegionName { 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 .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/CarConfiguratorStock HTTP/1.1
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"ConfiguratorCode":"String","IsSellable":false,"ExactMatch":false,"GSSN":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
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":[{}]}}