/* Options: Date: 2025-12-18 12:26:26 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://prod-api-agency-orch-mb-dhc.rapp-customers.co.uk //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CarConfiguratorStockRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/CarConfiguratorStock", "POST") public class CarConfiguratorStockRequest : IReturn, IPost, Codable { public typealias Return = CarConfiguratorStockResponse /** * The configurator code to search on */ // @ApiMember(Description="The configurator code to search on", IsRequired=true) public var configuratorCode:String? /** * Whether to return sellable vehicles */ // @ApiMember(Description="Whether to return sellable vehicles") public var isSellable:Bool? /** * Whether to only get exact matches */ // @ApiMember(Description="Whether to only get exact matches") public var exactMatch:Bool? /** * Whether to restrict vehicles response to a GSSN */ // @ApiMember(Description="Whether to restrict vehicles response to a GSSN") public var gssn:String? required public init(){} } public class CarConfiguratorStockResponse : Codable { public var totalVehicles:Int? public var carConfiguratorResponse:CarConfiguratorResponse? public var exactMatches:CarConfiguratorStockMatches? public var closeMatches:CarConfiguratorStockMatches? required public init(){} } public class CarConfiguratorStockMatches : Codable { public var sellableMatches:[CarConfiguratorStockMatch] = [] public var nonSellableMatches:[CarConfiguratorStockMatch] = [] required public init(){} } public class Price : Codable { public var id:String? public var Description:String? public var net:Double? public var vat:Double? public var gross:Double? public var product:OfferPriceProductType? required public init(){} } public class Retailer : Codable { public var id:Int? public var gssnId:String? public var Description:String? public var street:String? public var city:String? public var postcode:String? public var googleMapPostcode:String? public var phone:String? public var fax:String? public var email:String? public var website:String? public var retailerGroupId:String? public var retailerGroupName:String? public var isOnline:Bool? public var isNewCarRetailer:Bool? public var isUsedCarRetailer:Bool? public var isCentralRetailer:Bool? public var chatEnabled:Bool? public var tradeInEnabled:Bool? public var smart:Bool? public var displayPhoneNumberNew:String? public var displayPhoneNumberUsed:String? public var latitude:Double? public var longitude:Double? public var smartDescription:String? public var smartWebsite:String? public var smartPhone:String? public var legacyId:String? public var agent:Bool? public var marketAreaId:Int? public var digitalLoungeParentGssnId:String? public var sendLeadsToDigitalLoungeParent:Bool? public var openingTimes:RetailerOpeningTimes? required public init(){} } public class VehicleAttribute : Codable { public var Description:String? public var value:String? required public init(){} } public class CarConfiguratorStockMatch : Codable { public var vehicle:CarConfiguratorVehicle? public var isSellable:Bool? public var vehicleWheels:String? public var vehicleTrim:String? public var vehicleAdditionalOptionCodes:[String] = [] public var fullModelYearDifferences:[String] = [] public var paintDifferences:[String] = [] public var upholsteryDifferences:[String] = [] public var wheelDifferences:[String] = [] public var trimDifferences:[String] = [] public var equipmentDifferences:[String] = [] public var differences:[String] = [] public var exactMatch:Bool? required public init(){} } public class Engine : Codable { public var id:Int? public var Description:String? public var brandId:Int? public var brand:String? public var badge:String? required public init(){} } public class Package : Codable { public var id:Int? public var Description:String? required public init(){} } public class Retailer : Codable { public var gssn:String? public var Description:String? public var campaignExcluded:Bool? required public init(){} } public class Engine : Codable { public var id:Int? public var badge:String? required public init(){} } public class Media : Codable { public var noImage:Bool? public var mainImageUrl:String? required public init(){} } public class Equipmentv2 : Equipment { public var importance:Int? public var isAdditional:Bool? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case importance case isAdditional } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) importance = try container.decodeIfPresent(Int.self, forKey: .importance) isAdditional = try container.decodeIfPresent(Bool.self, forKey: .isAdditional) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if importance != nil { try container.encode(importance, forKey: .importance) } if isAdditional != nil { try container.encode(isAdditional, forKey: .isAdditional) } } } public class Package : IFilters, Codable { public var id:Int? public var Description:String? required public init(){} } public protocol IPackages { var packages:[Package]? { get set } } public class CarConfiguratorVehicle : BackOrderVehicleDetailsWithPackages { public var modelYearCode:String? public var halfModelYearCode:String? public var activeOffers:[Int] = [] public var eligibleForMotability:Bool? public var nearestPort:Bool? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case modelYearCode case halfModelYearCode case activeOffers case eligibleForMotability case nearestPort } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) modelYearCode = try container.decodeIfPresent(String.self, forKey: .modelYearCode) halfModelYearCode = try container.decodeIfPresent(String.self, forKey: .halfModelYearCode) activeOffers = try container.decodeIfPresent([Int].self, forKey: .activeOffers) ?? [] eligibleForMotability = try container.decodeIfPresent(Bool.self, forKey: .eligibleForMotability) nearestPort = try container.decodeIfPresent(Bool.self, forKey: .nearestPort) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if modelYearCode != nil { try container.encode(modelYearCode, forKey: .modelYearCode) } if halfModelYearCode != nil { try container.encode(halfModelYearCode, forKey: .halfModelYearCode) } if activeOffers.count > 0 { try container.encode(activeOffers, forKey: .activeOffers) } if eligibleForMotability != nil { try container.encode(eligibleForMotability, forKey: .eligibleForMotability) } if nearestPort != nil { try container.encode(nearestPort, forKey: .nearestPort) } } } public class Equipment : Codable { public var id:Int? public var code:String? public var Description:String? required public init(){} } public class BackOrderVehicleDetailsBrand : Codable { public var Description:String? required public init(){} } public class Engine : Codable { public var id:Int? public var badge:String? public var cubicCapacity:Int? public var cyclinders:Int? public var horsePower:String? public var kw:String? public var selected:Bool? required public init(){} } public class VehicleAuditDetails : Codable { public var userId:String? public var status:Bool? public var notes:String? public var creationDate:String? required public init(){} } public class Retailer : Codable { public var id:Int? public var gssnId:String? public var Description:String? public var street:String? public var city:String? public var district:String? public var postcode:String? public var googleMapPostcode:String? public var phone:String? public var fax:String? public var email:String? public var website:String? public var latitude:Double? public var longitude:Double? public var retailerGroup_Id:Int? public var retailerGroupId:String? public var retailerGroupName:String? public var distance:Double? public var paymentServiceGuid:String? public var isOnline:Bool? public var isNewCarRetailer:Bool? public var isUsedCarRetailer:Bool? public var isCentralRetailer:Bool? public var chatEnabled:Bool? public var tradeInEnabled:Bool? public var displayPhoneNumberNew:String? public var displayPhoneNumberUsed:String? public var services:RetailerServices? public var smart:Bool? public var smartDescription:String? public var smartWebsite:String? public var smartEmail:String? public var smartPhone:String? public var additionalInformation:String? public var legacyId:String? public var driveTime:Double? public var agent:Bool? public var port:Int? public var portName:String? public var marketAreaId:Int? public var marketAreaName:String? public var maintenanceDate:String? public var maintenanceSource:String? public var stpAccountNumbers:String? public var campaignExcluded:Bool? public var digitalLoungeParentGssnId:String? public var sendLeadsToDigitalLoungeParent:Bool? public var isExcludedFromImport:Bool? public var openingTimes:RetailerOpeningTimes? required public init(){} } public class Media : Codable { public var imageCount:Int? public var mainImageUrl:String? public var mainImageUrlMobile:String? public var noImage:Bool? public var threeSixtyDegreeImageUrls:[String]? public var threeSixtyDegreeMobileImageUrls:[String]? public var vehicleImageUrls:[String]? public var vehicleMobileImageUrls:[String]? required public init(){} } public class Price : Codable { public var id:Int? public var Description:String? public var net:Double? public var vat:Double? public var gross:Double? required public init(){} } public class Consumption : Codable { public var id:Int? public var lkm:Double? public var mpg:Double? required public init(){} } public class EmissionClass : Codable { public var colour:String? public var rating:String? required public init(){} } public class EquipmentCategoryv2 : Codable { public var order:Int? public var code:String? public var Description:String? public var equipment:[Equipmentv2]? required public init(){} } public class VehicleAttribute : Codable { public var Description:String? public var value:String? required public init(){} } public class IntegratedServiceCareOptions : Codable { public var optionCode:String? public var bM7NST:String? public var fullModelYear:String? public var integratedProductType:String? public var customerDescription:String? public var oneAgentProductType:String? required public init(){} } public class BackOrderVehicleDetailsWithPackages : BackOrderVehicleDetails, IPackages { public var packages:[Package]? public var packageNames:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case packages case packageNames } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) packages = try container.decodeIfPresent([Package].self, forKey: .packages) ?? [] packageNames = try container.decodeIfPresent(String.self, forKey: .packageNames) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if packages != nil { try container.encode(packages, forKey: .packages) } if packageNames != nil { try container.encode(packageNames, forKey: .packageNames) } } } public protocol IVehiclePrices { var deliveryCharge:Double? { get set } var deliveryChargeNet:Double? { get set } var deliveryChargeVAT:Double? { get set } var plates:Double? { get set } var platesNet:Double? { get set } var platesVAT:Double? { get set } var fuelCharge:Double? { get set } var fuelChargeNet:Double? { get set } var fuelChargeVAT:Double? { get set } var retailPrice_ExVAT:Double? { get set } var retailPrice_IncVAT:Double? { get set } var veD_Year1:Double? { get set } var veD_Year2:Double? { get set } var firstRegFee:Double? { get set } var otR_Value:Double? { get set } } public protocol IVehiclePriceCollection { var prices:[Price]? { get set } } public protocol IImageUrl { var imageUrl:String? { get set } var brandId:Int? { get set } var vehicleType:String? { get set } } public protocol IVehicleDetails { var specialInfo:Bool? { get set } var numberOfDoors:String? { get set } var numberOfSeats:String? { get set } var chassisNumber:String? { get set } var eligibleForIntegratedServiceCare:Bool? { get set } var consumptionCombined:Consumption? { get set } var consumptionExtraUrban:Consumption? { get set } var consumptionUrban:Consumption? { get set } var wltpFuelConsumptionCombined:Consumption? { get set } var wltpFuelConsumptionExtraHigh:Consumption? { get set } var wltpFuelConsumptionHigh:Consumption? { get set } var wltpFuelConsumptionLow:Consumption? { get set } var wltpFuelConsumptionMedium:Consumption? { get set } var energyEfficiencyClass:EmissionClass? { get set } var equipment:[Equipment]? { get set } var equipmentAdditional:[Equipment]? { get set } var equipmentCategories:[EquipmentCategoryv2]? { get set } var vehicleData:[VehicleAttribute]? { get set } var integratedServiceCareOptions:[IntegratedServiceCareOptions]? { get set } var ispVehicleCustomerDescriptions:[String]? { get set } } public class BackOrderVehicleDetails : IVehiclePrices, IVehiclePriceCollection, IImageUrl, IVehicleDetails, Codable { public var vin:String? public var commissionNumber:String? public var Description:String? public var shortDescription:String? public var modelId:Int? public var model:String? public var fullModelYearCode:String? public var brandId:Int? public var brand:BackOrderVehicleDetailsBrand? public var retailerId:Int? public var imageUrl:String? public var colour:String? public var colourCode:String? public var fuelType:String? public var fuelTypeId:Int? public var transmission:String? public var transmissionType:String? public var engine:Engine? public var engineBadge:String? public var package:String? public var line:String? public var upholstery:String? public var upholsteryCode:String? public var usageCode:String? public var account:String? public var accountType:String? public var nst:String? public var baumuster:String? public var electricRange:Double? public var electricConsumption:Double? public var actualPrice:Double? public var otrPrice:Double? public var retailPriceExVat:Double? public var p11D:Double? public var vehicleType:String? public var upholsteryDescription:String? public var upholsteryType:String? public var bodyStyle:String? public var bodyStyleStyleCode:String? public var bodyStyleStyleCodeElectric:String? public var bodyStyleStyleCodeHybrid:String? public var availablePackages:[String]? public var mapped_Line:Int? public var secured:Bool? public var bm7NST:String? public var isAvailableOnline:Bool? public var isSpecialistCar:Bool? public var isSellable:Bool? public var underOffer:Bool? public var vehicleAuditDetails:[VehicleAuditDetails]? public var retailer:Retailer? public var media:Media? public var emission:Double? public var colourGroup:String? public var vehicleClass:String? public var productRange:String? public var isHOBackOrderAccountVehicle:Bool? public var isAllocatedToBackOrder:Bool? public var inBackOrderAccount:Bool? public var deliveryCharge:Double? public var deliveryChargeNet:Double? public var deliveryChargeVAT:Double? public var plates:Double? public var platesNet:Double? public var platesVAT:Double? public var fuelCharge:Double? public var fuelChargeNet:Double? public var fuelChargeVAT:Double? public var retailPrice_ExVAT:Double? public var retailPrice_IncVAT:Double? public var veD_Year1:Double? public var veD_Year2:Double? public var firstRegFee:Double? public var otR_Value:Double? public var otr:Double? public var prices:[Price]? public var productionDate:String? public var portArrivalDate:Date? public var location:String? public var isDisplayStock:Bool? public var displayRetailerId:Int? public var displayRetailer:String? public var displayRetailerGssnId:String? public var displayRetailerMarketAreaId:Int? public var isSmartDisplayRetailer:Bool? public var colourDescription:String? public var creation:Date? public var modified:Date? public var vatQualifyingNumber:Int? public var vatQualifying:Bool? public var currentRetailerOfferPrice:Double? public var gssnId:String? public var noImage:Bool? public var registrationNumber:String? public var registrationDate:Date? public var mileage:Int? public var tradeInDate:Date? public var vid:String? public var emissionCombined:String? public var emissionDirective:String? public var normalisedEmissionDirective:String? public var hasMildHybridEquipmentCode:Bool? public var acceleration:Double? public var chassisNumber:String? public var numberOfDoors:String? public var numberOfSeats:String? public var specialInfo:Bool? public var eligibleForIntegratedServiceCare:Bool? public var consumptionCombined:Consumption? public var consumptionExtraUrban:Consumption? public var consumptionUrban:Consumption? public var wltpFuelConsumptionCombined:Consumption? public var wltpFuelConsumptionExtraHigh:Consumption? public var wltpFuelConsumptionHigh:Consumption? public var wltpFuelConsumptionLow:Consumption? public var wltpFuelConsumptionMedium:Consumption? public var energyEfficiencyClass:EmissionClass? public var equipment:[Equipmentv2]? public var equipmentAdditional:[Equipment]? public var equipmentCategories:[EquipmentCategoryv2]? public var vehicleData:[VehicleAttribute]? public var integratedServiceCareOptions:[IntegratedServiceCareOptions]? public var ispVehicleCustomerDescriptions:[String]? public var marketingCode:String? public var eligibleForMaTransfer:Bool? public var confirmedProductionDate:String? public var forecastedArrivalDate:String? required public init(){} } public class CarConfiguratorResponse : Codable { public var name:String? public var keyInformation:KeyInformation? public var orderingOptions:OrderingOptions? public var responseStatus:ResponseStatus? public var configuratorCode:String? required public init(){} }