Mercedes.Agency.Orchestration.API

<back to all web services

GetActiveBackOrderCsvRequest

BackOrder
Requires Authentication
The following routes are available for this service:
GET/v1/backorder/activeGet Active Back Order
GET/v1/backorder/active/csvGet Active Back Order
GET/v1/backorder/active/{GssnId}Get Active Back Order
GET/v1/backorder/active/csv/{GssnId}Get Active Back Order
import Foundation
import ServiceStack

public class GetActiveBackOrderCsvRequest : GetActiveBackOrderRequest
{
    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

public class GetActiveBackOrderRequest : IGet, Codable
{
    public var gssnId:String

    required public init(){}
}

public class GetActiveBackOrderResponse : Codable
{
    public var backOrders:[BackOrder]
    public var filteredGssn:String
    public var filteredRetailer:String

    required public init(){}
}

public class BackOrder : BackOrderBase
{
    public var vehicle:VehicleDetail

    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(VehicleDetail.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 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 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 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 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 RetailerOpeningTimes : Codable
{
    public var `new`:[RetailerOpeningTime] = []
    public var used:[RetailerOpeningTime] = []

    required public init(){}
}

public class RetailerOpeningTime : Codable
{
    public var day:String
    public var openFrom:String
    public var openTo:String
    public var special:String

    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 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 MotabilityPricingStatus : String, Codable
{
    case Pending
    case Current
    case RecentlyExpired
    case Expired
}

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 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(){}
}

public class KeyInformation : Codable
{
    public var bM7NST:String
    public var configurationDate:String
    public var modelYear:String
    public var halfYear:String

    required public init(){}
}

public class OrderingOptions : Codable
{
    public var interior:[String]
    public var exterior:[String]
    public var other:[String]

    required public init(){}
}

public class VehicleDetail : VehicleBaseDetail
{
    public var retailPrice_ExVAT:String
    public var otr:String
    public var actualPrice:String
    public var totalOfferValue:String
    public var isHOBackOrderAccountVehicle:Bool
    public var consumptionCombined:VehicleConsumption
    public var consumptionExtraUrban:VehicleConsumption
    public var consumptionUrban:VehicleConsumption
    public var wltpFuelConsumptionCombined:VehicleConsumption
    public var wltpFuelConsumptionExtraHigh:VehicleConsumption
    public var wltpFuelConsumptionHigh:VehicleConsumption
    public var wltpFuelConsumptionLow:VehicleConsumption
    public var wltpFuelConsumptionMedium:VehicleConsumption
    public var equipmentCategories:[VehicleEquipmentCategory]
    public var vehicleEnergyEfficiencyClass:VehicleEmissionClass
    public var vehicleData:[VehicleAttribute]
    public var integratedProducts:[VehicleIntegratedServiceCareOption] = []
    public var ispVehicleCustomerDescriptions:[String]
    public var colourCode:String
    public var upholsteryCode:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case retailPrice_ExVAT
        case otr
        case actualPrice
        case totalOfferValue
        case isHOBackOrderAccountVehicle
        case consumptionCombined
        case consumptionExtraUrban
        case consumptionUrban
        case wltpFuelConsumptionCombined
        case wltpFuelConsumptionExtraHigh
        case wltpFuelConsumptionHigh
        case wltpFuelConsumptionLow
        case wltpFuelConsumptionMedium
        case equipmentCategories
        case vehicleEnergyEfficiencyClass
        case vehicleData
        case integratedProducts
        case ispVehicleCustomerDescriptions
        case colourCode
        case upholsteryCode
    }

    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(String.self, forKey: .retailPrice_ExVAT)
        otr = try container.decodeIfPresent(String.self, forKey: .otr)
        actualPrice = try container.decodeIfPresent(String.self, forKey: .actualPrice)
        totalOfferValue = try container.decodeIfPresent(String.self, forKey: .totalOfferValue)
        isHOBackOrderAccountVehicle = try container.decodeIfPresent(Bool.self, forKey: .isHOBackOrderAccountVehicle)
        consumptionCombined = try container.decodeIfPresent(VehicleConsumption.self, forKey: .consumptionCombined)
        consumptionExtraUrban = try container.decodeIfPresent(VehicleConsumption.self, forKey: .consumptionExtraUrban)
        consumptionUrban = try container.decodeIfPresent(VehicleConsumption.self, forKey: .consumptionUrban)
        wltpFuelConsumptionCombined = try container.decodeIfPresent(VehicleConsumption.self, forKey: .wltpFuelConsumptionCombined)
        wltpFuelConsumptionExtraHigh = try container.decodeIfPresent(VehicleConsumption.self, forKey: .wltpFuelConsumptionExtraHigh)
        wltpFuelConsumptionHigh = try container.decodeIfPresent(VehicleConsumption.self, forKey: .wltpFuelConsumptionHigh)
        wltpFuelConsumptionLow = try container.decodeIfPresent(VehicleConsumption.self, forKey: .wltpFuelConsumptionLow)
        wltpFuelConsumptionMedium = try container.decodeIfPresent(VehicleConsumption.self, forKey: .wltpFuelConsumptionMedium)
        equipmentCategories = try container.decodeIfPresent([VehicleEquipmentCategory].self, forKey: .equipmentCategories) ?? []
        vehicleEnergyEfficiencyClass = try container.decodeIfPresent(VehicleEmissionClass.self, forKey: .vehicleEnergyEfficiencyClass)
        vehicleData = try container.decodeIfPresent([VehicleAttribute].self, forKey: .vehicleData) ?? []
        integratedProducts = try container.decodeIfPresent([VehicleIntegratedServiceCareOption].self, forKey: .integratedProducts) ?? []
        ispVehicleCustomerDescriptions = try container.decodeIfPresent([String].self, forKey: .ispVehicleCustomerDescriptions) ?? []
        colourCode = try container.decodeIfPresent(String.self, forKey: .colourCode)
        upholsteryCode = try container.decodeIfPresent(String.self, forKey: .upholsteryCode)
    }

    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) }
        if isHOBackOrderAccountVehicle != nil { try container.encode(isHOBackOrderAccountVehicle, forKey: .isHOBackOrderAccountVehicle) }
        if consumptionCombined != nil { try container.encode(consumptionCombined, forKey: .consumptionCombined) }
        if consumptionExtraUrban != nil { try container.encode(consumptionExtraUrban, forKey: .consumptionExtraUrban) }
        if consumptionUrban != nil { try container.encode(consumptionUrban, forKey: .consumptionUrban) }
        if wltpFuelConsumptionCombined != nil { try container.encode(wltpFuelConsumptionCombined, forKey: .wltpFuelConsumptionCombined) }
        if wltpFuelConsumptionExtraHigh != nil { try container.encode(wltpFuelConsumptionExtraHigh, forKey: .wltpFuelConsumptionExtraHigh) }
        if wltpFuelConsumptionHigh != nil { try container.encode(wltpFuelConsumptionHigh, forKey: .wltpFuelConsumptionHigh) }
        if wltpFuelConsumptionLow != nil { try container.encode(wltpFuelConsumptionLow, forKey: .wltpFuelConsumptionLow) }
        if wltpFuelConsumptionMedium != nil { try container.encode(wltpFuelConsumptionMedium, forKey: .wltpFuelConsumptionMedium) }
        if equipmentCategories != nil { try container.encode(equipmentCategories, forKey: .equipmentCategories) }
        if vehicleEnergyEfficiencyClass != nil { try container.encode(vehicleEnergyEfficiencyClass, forKey: .vehicleEnergyEfficiencyClass) }
        if vehicleData != nil { try container.encode(vehicleData, forKey: .vehicleData) }
        if integratedProducts.count > 0 { try container.encode(integratedProducts, forKey: .integratedProducts) }
        if ispVehicleCustomerDescriptions != nil { try container.encode(ispVehicleCustomerDescriptions, forKey: .ispVehicleCustomerDescriptions) }
        if colourCode != nil { try container.encode(colourCode, forKey: .colourCode) }
        if upholsteryCode != nil { try container.encode(upholsteryCode, forKey: .upholsteryCode) }
    }
}

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 class Vehicle : Codable
{
    public var vin: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 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 VehicleConsumption : Codable
{
    public var id:Int
    public var lkm:Double
    public var mpg:Double

    required public init(){}
}

public class VehicleEquipmentCategory : Codable
{
    public var order:Int
    public var code:String
    public var Description:String
    public var equipment:[Equipmentv2]

    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 Equipment : Codable
{
    public var id:Int
    public var code:String
    public var Description:String

    required public init(){}
}

public class VehicleEmissionClass : Codable
{
    public var colour:String
    public var rating:String

    required public init(){}
}

public class VehicleAttribute : Codable
{
    public var Description:String
    public var value:String

    required public init(){}
}

public class VehicleIntegratedServiceCareOption : 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(){}
}


Swift GetActiveBackOrderCsvRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /v1/backorder/active HTTP/1.1 
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"BackOrders":[{"Vehicle":{"RetailPrice_ExVAT":"String","OTR":"String","ActualPrice":"String","TotalOfferValue":"String","IsHOBackOrderAccountVehicle":false,"ConsumptionCombined":{"Id":0,"Lkm":0,"Mpg":0},"ConsumptionExtraUrban":{"Id":0,"Lkm":0,"Mpg":0},"ConsumptionUrban":{"Id":0,"Lkm":0,"Mpg":0},"WltpFuelConsumptionCombined":{"Id":0,"Lkm":0,"Mpg":0},"WltpFuelConsumptionExtraHigh":{"Id":0,"Lkm":0,"Mpg":0},"WltpFuelConsumptionHigh":{"Id":0,"Lkm":0,"Mpg":0},"WltpFuelConsumptionLow":{"Id":0,"Lkm":0,"Mpg":0},"WltpFuelConsumptionMedium":{"Id":0,"Lkm":0,"Mpg":0},"EquipmentCategories":[{"Order":0,"Code":"String","Description":"String","Equipment":[{"Importance":0,"IsAdditional":false,"Id":0,"Code":"String","Description":"String"}]}],"VehicleEnergyEfficiencyClass":{"Colour":"String","Rating":"String"},"VehicleData":[{"Description":"String","Value":"String"}],"IntegratedProducts":[{"OptionCode":"String","BM7NST":"String","FullModelYear":"String","IntegratedProductType":"String","CustomerDescription":"String","OneAgentProductType":"String"}],"IspVehicleCustomerDescriptions":["String"],"ColourCode":"String","UpholsteryCode":"String","Description":"String","CommissionNumber":"String","PortArrivalDate":"String","OfferExpiryDate":"String","Fuel":"String","Transmission":"String","TransmissionType":"String","Colour":"String","ColourDescription":"String","ImageUrl":"String","Specialist":false,"VehicleCriteriaMatch":{"Fuel":false,"Transmission":false,"Colour":false,"Upholstery":false,"Line":false,"Engine":false,"BodyStyle":false,"Packages":false},"ColourGroup":"String","Model":"String","BodyStyle":"String","Brand":"String","Engine":"String","EngineDescription":"String","Line":"String","Upholstery":"String","UpholsteryDescription":"String","Packages":["String"],"P11D":0,"Prices":[{"Id":"String","Description":"String","Net":0,"VAT":0,"Gross":0,"Product":"LIST_PRICE"}],"VehicleClass":"String","ProductRange":"String","VehicleType":"String","Emission":0,"Baumuster":"String","IsSellable":false,"Bm7NST":"String","ElectricRange":0,"ElectricConsumption":0,"IsDisplayStock":false,"DisplayRetailer_Id":0,"DisplayRetailer":"String","DisplayRetailerGssnId":"String","Retailer":{"Id":0,"GssnId":"String","Description":"String","Street":"String","City":"String","Postcode":"String","GoogleMapPostcode":"String","Phone":"String","Fax":"String","Email":"String","Website":"String","RetailerGroupId":"String","RetailerGroupName":"String","IsOnline":false,"IsNewCarRetailer":false,"IsUsedCarRetailer":false,"IsCentralRetailer":false,"ChatEnabled":false,"TradeInEnabled":false,"smart":false,"DisplayPhoneNumberNew":"String","DisplayPhoneNumberUsed":"String","Latitude":0,"Longitude":0,"smartDescription":"String","smartWebsite":"String","smartPhone":"String","LegacyId":"String","Agent":false,"MarketAreaId":0,"DigitalLoungeParentGssnId":"String","SendLeadsToDigitalLoungeParent":false,"OpeningTimes":{"New":[{"Day":"String","OpenFrom":"String","OpenTo":"String","Special":"String"}],"Used":[{"Day":"String","OpenFrom":"String","OpenTo":"String","Special":"String"}]}},"Age":0,"ModelYearCode":"String","HalfModelYearCode":"String","FullModelYearCode":"String","ProductionDate":"String","ChassisNumber":"String","EligibleForIntegratedServiceCare":false,"Vin":"String"},"Guid":"String","Status":0,"CustomerId":"String","Id":0,"Reference":"String","Agent":"String","Gssn":"String","CreationDate":"\/Date(-62135596800000-0000)\/","MaintenanceDate":"\/Date(-62135596800000-0000)\/","CustomerCriteria":"String","AgentCriteria":"String","History":[{"Status":0,"CommissionNumber":"String","VIN":"String","CustomerCriteria":"String","AgentCriteria":"String","CreationDate":"\/Date(-62135596800000-0000)\/","MaintenanceDate":"\/Date(-62135596800000-0000)\/","GasId":"String","Sellable":false,"AdditionalInformation":"String","Reason":"String","ConfigCode":"String","FleetBaseOrder":"String","AssistanceDetail":"String","AssistanceProvider":"String","LinkedByUserType":"String","MotabilityVTN":"String","MotabilityBackOrderDropDown":"String","MotabilityValidFrom":"\/Date(-62135596800000-0000)\/","MotabilityValidTo":"\/Date(-62135596800000-0000)\/"}],"IsAllocatedToOrder":false,"Vin":"String","CommissionNumber":"String","Order":{"Guid":"00000000000000000000000000000000","Reference":"String","Status":0,"CustomerId":"String","MulesoftReference":"String","GasId":"String","OrderDate":"String","OfferSnapShot":"String"},"Source":"String","Specialist":false,"OutrightPurchase":false,"Sellable":false,"MulesoftReference":"String","AdditionalInformation":"String","ConfigCode":"String","FleetBaseOrder":"String","GasId":"String","OutrightPurchaseCustomerIdentifier":"String","Retailer":{"Id":0,"GssnId":"String","Description":"String","Street":"String","City":"String","Postcode":"String","GoogleMapPostcode":"String","Phone":"String","Fax":"String","Email":"String","Website":"String","RetailerGroupId":"String","RetailerGroupName":"String","IsOnline":false,"IsNewCarRetailer":false,"IsUsedCarRetailer":false,"IsCentralRetailer":false,"ChatEnabled":false,"TradeInEnabled":false,"smart":false,"DisplayPhoneNumberNew":"String","DisplayPhoneNumberUsed":"String","Latitude":0,"Longitude":0,"smartDescription":"String","smartWebsite":"String","smartPhone":"String","LegacyId":"String","Agent":false,"MarketAreaId":0,"DigitalLoungeParentGssnId":"String","SendLeadsToDigitalLoungeParent":false,"OpeningTimes":{"New":[{"Day":"String","OpenFrom":"String","OpenTo":"String","Special":"String"}],"Used":[{"Day":"String","OpenFrom":"String","OpenTo":"String","Special":"String"}]}},"CustomerMode":0,"CanEdit":false,"DigitalLoungeGssnId":"String","DigitalLounge":"String","Motability":false,"MotabilityPricing":{"MotabilityPricingStatus":"Pending","Id":0,"CriteriaBM7NST":"String","VTN":"String","BackOrderDropDown":"String","CriteriaFullModelYearCode":"String","CriteriaValidOptionCodes":"String","CriteriaInvalidOptionCodes":"String","PIPNet":0,"PIPVat":0,"PIPGross":0,"WPMSNet":0,"WPMSVat":0,"WPMSGross":0,"DiscountNet":0,"DiscountVat":0,"DiscountGross":0,"ListPriceNet":0,"ListPriceVat":0,"ListPriceGross":0,"DeliveryChargeNet":0,"DeliveryChargeVat":0,"DeliveryChargeGross":0,"FuelChargeNet":0,"FuelChargeVat":0,"FuelChargeGross":0,"NumberPlateFeeNet":0,"NumberPlateFeeVat":0,"NumberPlateFeeGross":0,"FirstRegistrationFeeNet":0,"FirstRegistrationFeeVat":0,"FirstRegistrationFeeGross":0,"RoadFundLicenceNet":0,"RoadFundLicenceVat":0,"RoadFundLicenceGross":0,"ValidFrom":"\/Date(-62135596800000-0000)\/","ValidTo":"\/Date(-62135596800000-0000)\/"},"LinkedByUserType":"String","AssistanceProviderId":0,"AssistanceProvider":"String","AssistanceDetail":"String","LastAssistanceMessageDate":"\/Date(-62135596800000-0000)\/","LastAssistanceUser":"String","IsCOPConverter":false,"IsEligibleCOPConverter":false,"CarConfigurator":{"Id":0,"BackOrderId":0,"ConfiguratorCode":"String","GasId":"String","Status":0,"DateOfLastUpdate":"\/Date(-62135596800000-0000)\/","LastExceptionMessage":"String","LastException":"String"},"CarConfiguratorResponse":{"Name":"String","KeyInformation":{"BM7NST":"String","ConfigurationDate":"String","ModelYear":"String","HalfYear":"String"},"OrderingOptions":{"Interior":["String"],"Exterior":["String"],"Other":["String"]},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"ConfiguratorCode":"String"}}],"FilteredGssn":"String","FilteredRetailer":"String"}