/* Options: Date: 2025-05-05 18:07:14 SwiftVersion: 6.0 Version: 8.61 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: GetBackOrderCustomerRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/backorder/customer/{CustomerId}", "GET") public class GetBackOrderCustomerRequest : IReturn, IGet, Codable { public typealias Return = GetBackOrderCustomerResponse public var customerId:String? required public init(){} } public class GetBackOrderCustomerResponse : Codable { public var backOrders:[BackOrderDecimal] = [] public var featureStatus:FeatureStatus? required public init(){} } public class Vehicle : Codable { public var vin:String? required public init(){} } public class BackOrderDecimal : BackOrderBase { public var vehicle:VehicleDecimalDetail? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case vehicle } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) vehicle = try container.decodeIfPresent(VehicleDecimalDetail.self, forKey: .vehicle) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if vehicle != nil { try container.encode(vehicle, forKey: .vehicle) } } } public class FeatureStatus : Codable { public var agencyEnabled:Bool? required public init(){} } public class MotabilityPricing : MotabilityPricingCsv { public var motabilityPricingStatus:MotabilityPricingStatus? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case motabilityPricingStatus } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) motabilityPricingStatus = try container.decodeIfPresent(MotabilityPricingStatus.self, forKey: .motabilityPricingStatus) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if motabilityPricingStatus != nil { try container.encode(motabilityPricingStatus, forKey: .motabilityPricingStatus) } } } public class Order : Codable { public var guid:String? public var reference:String? public var status:Int? public var customerId:String? public var mulesoftReference:String? public var gasId:String? public var orderDate:String? public var offerSnapShot:String? required public init(){} } public class BackOrderHistory : Codable { public var status:Int? public var commissionNumber:String? public var vin:String? public var customerCriteria:String? public var agentCriteria:String? public var creationDate:Date? public var maintenanceDate:Date? public var gasId:String? public var sellable:Bool? public var additionalInformation:String? public var reason:String? public var configCode:String? public var fleetBaseOrder:String? public var assistanceDetail:String? public var assistanceProvider:String? public var linkedByUserType:String? public var motabilityVTN:String? public var motabilityBackOrderDropDown:String? public var motabilityValidFrom:Date? public var motabilityValidTo:Date? 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 CarConfigurator : Codable { public var id:Int? public var backOrderId:Int? public var configuratorCode:String? public var gasId:String? public var status:Int? public var dateOfLastUpdate:Date? public var lastExceptionMessage:String? public var lastException:String? required public init(){} } public class VehicleCriteriaMatch : Codable { public var fuel:Bool? public var transmission:Bool? public var colour:Bool? public var upholstery:Bool? public var line:Bool? public var engine:Bool? public var bodyStyle:Bool? public var packages:Bool? 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 VehicleBaseDetail : Vehicle, ICommissionNumber { public var Description:String? public var commissionNumber:String? public var portArrivalDate:String? public var offerExpiryDate:String? public var fuel:String? public var transmission:String? public var transmissionType:String? public var colour:String? public var colourDescription:String? public var imageUrl:String? public var specialist:Bool? public var vehicleCriteriaMatch:VehicleCriteriaMatch? public var colourGroup:String? public var model:String? public var bodyStyle:String? public var brand:String? public var engine:String? public var engineDescription:String? public var line:String? public var upholstery:String? public var upholsteryDescription:String? public var packages:[String] = [] public var p11D:Double? public var prices:[Price] = [] public var vehicleClass:String? public var productRange:String? public var vehicleType:String? public var emission:Double? public var baumuster:String? public var isSellable:Bool? public var bm7NST:String? public var electricRange:Double? public var electricConsumption:Double? public var isDisplayStock:Bool? public var displayRetailer_Id:Int? public var displayRetailer:String? public var displayRetailerGssnId:String? public var retailer:Retailer? public var age:Int? public var modelYearCode:String? public var halfModelYearCode:String? public var fullModelYearCode:String? public var productionDate:String? public var chassisNumber:String? public var eligibleForIntegratedServiceCare:Bool? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case Description case commissionNumber case portArrivalDate case offerExpiryDate case fuel case transmission case transmissionType case colour case colourDescription case imageUrl case specialist case vehicleCriteriaMatch case colourGroup case model case bodyStyle case brand case engine case engineDescription case line case upholstery case upholsteryDescription case packages case p11D case prices case vehicleClass case productRange case vehicleType case emission case baumuster case isSellable case bm7NST case electricRange case electricConsumption case isDisplayStock case displayRetailer_Id case displayRetailer case displayRetailerGssnId case retailer case age case modelYearCode case halfModelYearCode case fullModelYearCode case productionDate case chassisNumber case eligibleForIntegratedServiceCare } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) Description = try container.decodeIfPresent(String.self, forKey: .Description) commissionNumber = try container.decodeIfPresent(String.self, forKey: .commissionNumber) portArrivalDate = try container.decodeIfPresent(String.self, forKey: .portArrivalDate) offerExpiryDate = try container.decodeIfPresent(String.self, forKey: .offerExpiryDate) fuel = try container.decodeIfPresent(String.self, forKey: .fuel) transmission = try container.decodeIfPresent(String.self, forKey: .transmission) transmissionType = try container.decodeIfPresent(String.self, forKey: .transmissionType) colour = try container.decodeIfPresent(String.self, forKey: .colour) colourDescription = try container.decodeIfPresent(String.self, forKey: .colourDescription) imageUrl = try container.decodeIfPresent(String.self, forKey: .imageUrl) specialist = try container.decodeIfPresent(Bool.self, forKey: .specialist) vehicleCriteriaMatch = try container.decodeIfPresent(VehicleCriteriaMatch.self, forKey: .vehicleCriteriaMatch) colourGroup = try container.decodeIfPresent(String.self, forKey: .colourGroup) model = try container.decodeIfPresent(String.self, forKey: .model) bodyStyle = try container.decodeIfPresent(String.self, forKey: .bodyStyle) brand = try container.decodeIfPresent(String.self, forKey: .brand) engine = try container.decodeIfPresent(String.self, forKey: .engine) engineDescription = try container.decodeIfPresent(String.self, forKey: .engineDescription) line = try container.decodeIfPresent(String.self, forKey: .line) upholstery = try container.decodeIfPresent(String.self, forKey: .upholstery) upholsteryDescription = try container.decodeIfPresent(String.self, forKey: .upholsteryDescription) packages = try container.decodeIfPresent([String].self, forKey: .packages) ?? [] p11D = try container.decodeIfPresent(Double.self, forKey: .p11D) prices = try container.decodeIfPresent([Price].self, forKey: .prices) ?? [] vehicleClass = try container.decodeIfPresent(String.self, forKey: .vehicleClass) productRange = try container.decodeIfPresent(String.self, forKey: .productRange) vehicleType = try container.decodeIfPresent(String.self, forKey: .vehicleType) emission = try container.decodeIfPresent(Double.self, forKey: .emission) baumuster = try container.decodeIfPresent(String.self, forKey: .baumuster) isSellable = try container.decodeIfPresent(Bool.self, forKey: .isSellable) bm7NST = try container.decodeIfPresent(String.self, forKey: .bm7NST) electricRange = try container.decodeIfPresent(Double.self, forKey: .electricRange) electricConsumption = try container.decodeIfPresent(Double.self, forKey: .electricConsumption) isDisplayStock = try container.decodeIfPresent(Bool.self, forKey: .isDisplayStock) displayRetailer_Id = try container.decodeIfPresent(Int.self, forKey: .displayRetailer_Id) displayRetailer = try container.decodeIfPresent(String.self, forKey: .displayRetailer) displayRetailerGssnId = try container.decodeIfPresent(String.self, forKey: .displayRetailerGssnId) retailer = try container.decodeIfPresent(Retailer.self, forKey: .retailer) age = try container.decodeIfPresent(Int.self, forKey: .age) modelYearCode = try container.decodeIfPresent(String.self, forKey: .modelYearCode) halfModelYearCode = try container.decodeIfPresent(String.self, forKey: .halfModelYearCode) fullModelYearCode = try container.decodeIfPresent(String.self, forKey: .fullModelYearCode) productionDate = try container.decodeIfPresent(String.self, forKey: .productionDate) chassisNumber = try container.decodeIfPresent(String.self, forKey: .chassisNumber) eligibleForIntegratedServiceCare = try container.decodeIfPresent(Bool.self, forKey: .eligibleForIntegratedServiceCare) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if Description != nil { try container.encode(Description, forKey: .Description) } if commissionNumber != nil { try container.encode(commissionNumber, forKey: .commissionNumber) } if portArrivalDate != nil { try container.encode(portArrivalDate, forKey: .portArrivalDate) } if offerExpiryDate != nil { try container.encode(offerExpiryDate, forKey: .offerExpiryDate) } if fuel != nil { try container.encode(fuel, forKey: .fuel) } if transmission != nil { try container.encode(transmission, forKey: .transmission) } if transmissionType != nil { try container.encode(transmissionType, forKey: .transmissionType) } if colour != nil { try container.encode(colour, forKey: .colour) } if colourDescription != nil { try container.encode(colourDescription, forKey: .colourDescription) } if imageUrl != nil { try container.encode(imageUrl, forKey: .imageUrl) } if specialist != nil { try container.encode(specialist, forKey: .specialist) } if vehicleCriteriaMatch != nil { try container.encode(vehicleCriteriaMatch, forKey: .vehicleCriteriaMatch) } if colourGroup != nil { try container.encode(colourGroup, forKey: .colourGroup) } if model != nil { try container.encode(model, forKey: .model) } if bodyStyle != nil { try container.encode(bodyStyle, forKey: .bodyStyle) } if brand != nil { try container.encode(brand, forKey: .brand) } if engine != nil { try container.encode(engine, forKey: .engine) } if engineDescription != nil { try container.encode(engineDescription, forKey: .engineDescription) } if line != nil { try container.encode(line, forKey: .line) } if upholstery != nil { try container.encode(upholstery, forKey: .upholstery) } if upholsteryDescription != nil { try container.encode(upholsteryDescription, forKey: .upholsteryDescription) } if packages.count > 0 { try container.encode(packages, forKey: .packages) } if p11D != nil { try container.encode(p11D, forKey: .p11D) } if prices.count > 0 { try container.encode(prices, forKey: .prices) } if vehicleClass != nil { try container.encode(vehicleClass, forKey: .vehicleClass) } if productRange != nil { try container.encode(productRange, forKey: .productRange) } if vehicleType != nil { try container.encode(vehicleType, forKey: .vehicleType) } if emission != nil { try container.encode(emission, forKey: .emission) } if baumuster != nil { try container.encode(baumuster, forKey: .baumuster) } if isSellable != nil { try container.encode(isSellable, forKey: .isSellable) } if bm7NST != nil { try container.encode(bm7NST, forKey: .bm7NST) } if electricRange != nil { try container.encode(electricRange, forKey: .electricRange) } if electricConsumption != nil { try container.encode(electricConsumption, forKey: .electricConsumption) } if isDisplayStock != nil { try container.encode(isDisplayStock, forKey: .isDisplayStock) } if displayRetailer_Id != nil { try container.encode(displayRetailer_Id, forKey: .displayRetailer_Id) } if displayRetailer != nil { try container.encode(displayRetailer, forKey: .displayRetailer) } if displayRetailerGssnId != nil { try container.encode(displayRetailerGssnId, forKey: .displayRetailerGssnId) } if retailer != nil { try container.encode(retailer, forKey: .retailer) } if age != nil { try container.encode(age, forKey: .age) } if modelYearCode != nil { try container.encode(modelYearCode, forKey: .modelYearCode) } if halfModelYearCode != nil { try container.encode(halfModelYearCode, forKey: .halfModelYearCode) } if fullModelYearCode != nil { try container.encode(fullModelYearCode, forKey: .fullModelYearCode) } if productionDate != nil { try container.encode(productionDate, forKey: .productionDate) } if chassisNumber != nil { try container.encode(chassisNumber, forKey: .chassisNumber) } if eligibleForIntegratedServiceCare != nil { try container.encode(eligibleForIntegratedServiceCare, forKey: .eligibleForIntegratedServiceCare) } } } public protocol ICommissionNumber { var commissionNumber:String? { get set } } public class BackOrderBase : Codable { public var guid:String? public var status:Int? public var customerId:String? public var id:Int? public var reference:String? public var agent:String? public var gssn:String? public var creationDate:Date? public var maintenanceDate:Date? public var customerCriteria:String? public var agentCriteria:String? public var history:[BackOrderHistory]? public var isAllocatedToOrder:Bool? public var vin:String? public var commissionNumber:String? public var order:Order? public var source:String? public var specialist:Bool? public var outrightPurchase:Bool? public var sellable:Bool? public var mulesoftReference:String? public var additionalInformation:String? public var configCode:String? public var fleetBaseOrder:String? public var gasId:String? public var outrightPurchaseCustomerIdentifier:String? public var retailer:Retailer? public var customerMode:Int? public var canEdit:Bool? public var digitalLoungeGssnId:String? public var digitalLounge:String? public var motability:Bool? public var motabilityPricing:MotabilityPricing? public var linkedByUserType:String? public var assistanceProviderId:Int? public var assistanceProvider:String? public var assistanceDetail:String? public var lastAssistanceMessageDate:Date? public var lastAssistanceUser:String? public var isCOPConverter:Bool? public var isEligibleCOPConverter:Bool? public var carConfigurator:CarConfigurator? public var carConfiguratorResponse:CarConfiguratorResponse? required public init(){} } public class VehicleDecimalDetail : VehicleBaseDetail { public var retailPrice_ExVAT:Double? public var otr:Double? public var actualPrice:Double? public var totalOfferValue:Double? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case retailPrice_ExVAT case otr case actualPrice case totalOfferValue } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) retailPrice_ExVAT = try container.decodeIfPresent(Double.self, forKey: .retailPrice_ExVAT) otr = try container.decodeIfPresent(Double.self, forKey: .otr) actualPrice = try container.decodeIfPresent(Double.self, forKey: .actualPrice) totalOfferValue = try container.decodeIfPresent(Double.self, forKey: .totalOfferValue) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if retailPrice_ExVAT != nil { try container.encode(retailPrice_ExVAT, forKey: .retailPrice_ExVAT) } if otr != nil { try container.encode(otr, forKey: .otr) } if actualPrice != nil { try container.encode(actualPrice, forKey: .actualPrice) } if totalOfferValue != nil { try container.encode(totalOfferValue, forKey: .totalOfferValue) } } } public class Retailer : Codable { public var gssn:String? public var Description:String? public var campaignExcluded:Bool? required public init(){} } public enum MotabilityPricingStatus : String, Codable { case Pending case Current case RecentlyExpired case Expired } public class MotabilityPricingCsv : Codable { // @DataMember(Order=0) public var id:Int? // @DataMember(Order=1) public var criteriaBM7NST:String? // @DataMember(Order=2) public var vtn:String? // @DataMember(Order=3) public var backOrderDropDown:String? // @DataMember(Order=4) public var criteriaFullModelYearCode:String? // @DataMember(Order=5) public var criteriaValidOptionCodes:String? // @DataMember(Order=6) public var criteriaInvalidOptionCodes:String? // @DataMember(Order=7) public var pipNet:Double? // @DataMember(Order=8) public var pipVat:Double? // @DataMember(Order=9) public var pipGross:Double? // @DataMember(Order=10) public var wpmsNet:Double? // @DataMember(Order=11) public var wpmsVat:Double? // @DataMember(Order=12) public var wpmsGross:Double? // @DataMember(Order=13) public var discountNet:Double? // @DataMember(Order=14) public var discountVat:Double? // @DataMember(Order=15) public var discountGross:Double? // @DataMember(Order=16) public var listPriceNet:Double? // @DataMember(Order=17) public var listPriceVat:Double? // @DataMember(Order=18) public var listPriceGross:Double? // @DataMember(Order=19) public var deliveryChargeNet:Double? // @DataMember(Order=20) public var deliveryChargeVat:Double? // @DataMember(Order=21) public var deliveryChargeGross:Double? // @DataMember(Order=22) public var fuelChargeNet:Double? // @DataMember(Order=23) public var fuelChargeVat:Double? // @DataMember(Order=24) public var fuelChargeGross:Double? // @DataMember(Order=25) public var numberPlateFeeNet:Double? // @DataMember(Order=26) public var numberPlateFeeVat:Double? // @DataMember(Order=27) public var numberPlateFeeGross:Double? // @DataMember(Order=28) public var firstRegistrationFeeNet:Double? // @DataMember(Order=29) public var firstRegistrationFeeVat:Double? // @DataMember(Order=30) public var firstRegistrationFeeGross:Double? // @DataMember(Order=31) public var roadFundLicenceNet:Double? // @DataMember(Order=32) public var roadFundLicenceVat:Double? // @DataMember(Order=33) public var roadFundLicenceGross:Double? // @DataMember(Order=34) public var validFrom:Date? // @DataMember(Order=35) public var validTo:Date? required public init(){} } public enum OfferPriceProductType : String, Codable { case LIST_PRICE case NUMBER_PLATE_FEE case DELIVERY_CHARGE case FUEL_CHARGE case MANUFACTURER_OFFER case PERSONALISED_MONEYOFFER case PERSONALISED_NONMONEYOFFER case PERSONALISED_NONMONEYOFFER_NEG case SERVICE case SERVICE_NEG case GOVERNMENT_GRANT case OUTRIGHT_PURCHASE_DISCOUNT case VIP_OFFER case WALLBOX_OFFER case WALLBOX_OFFER_NEG case ROAD_FUND_LICENCE case FIRST_REGISTRATION_FEE case NOT_FOUND case ACCESSORY_OFFER case ACCESSORY_OFFER_NEG case MOTABILITY_DISCOUNT } 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(){} }