| GET | /v1/{VehicleType}/Vehicle/{vehicleIdentifier} | Get vehicle data by commission number |
|---|
import Foundation
import ServiceStack
public class VehicleByCommissionNumberRequest : IGet, Codable
{
public var vehicleIdentifier:String
public var vehicleType:String
required public init(){}
}
public class VehicleByCommissionNumberResponse : VehicleByIdentifierResponse
{
public var vehicle:VehicleIdentifierData
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(VehicleIdentifierData.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 VehicleByIdentifierResponse : Codable
{
public var campaignOffers:[Offer] = []
public var campaignPersonalisedOffers:[PersonalisedOffer] = []
public var campaignGovernmentGrantOffers:[Offer] = []
public var campaignMessages:[Message] = []
public var offerHistories:[OfferHistory]
public var financeOffers:[FinanceOffer]
required public init(){}
}
public class Offer : Codable
{
public var id:Int
public var offerType:String
public var campaignName:String
public var from:String
public var to:String
public var value:String
public var net:Double?
public var offerVehicle:OfferVehicle
public var pending:Bool
public var documentUrl:String
public var personalised:Bool
public var isPersonalisedMonetaryOffer:Bool
public var campaignVIPDiscount:Bool
public var offerValueNet:Double?
public var campaignGovernmentGrant:Bool
required public init(){}
}
public class OfferVehicle : Codable
{
public var retailPriceExVAT:String
required public init(){}
}
public class PersonalisedOffer : Offer
{
public var category:String
public var Description:String
public var reference:String
public var campaignId:Int
public var certificateRequired:Bool?
public var autoSelect:Bool
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case category
case Description
case reference
case campaignId
case certificateRequired
case autoSelect
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
category = try container.decodeIfPresent(String.self, forKey: .category)
Description = try container.decodeIfPresent(String.self, forKey: .Description)
reference = try container.decodeIfPresent(String.self, forKey: .reference)
campaignId = try container.decodeIfPresent(Int.self, forKey: .campaignId)
certificateRequired = try container.decodeIfPresent(Bool.self, forKey: .certificateRequired)
autoSelect = try container.decodeIfPresent(Bool.self, forKey: .autoSelect)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if category != nil { try container.encode(category, forKey: .category) }
if Description != nil { try container.encode(Description, forKey: .Description) }
if reference != nil { try container.encode(reference, forKey: .reference) }
if campaignId != nil { try container.encode(campaignId, forKey: .campaignId) }
if certificateRequired != nil { try container.encode(certificateRequired, forKey: .certificateRequired) }
if autoSelect != nil { try container.encode(autoSelect, forKey: .autoSelect) }
}
}
public class Message : Codable
{
public var id:Int
public var vin:String
public var campaignId:Int
public var value:String
public var campaignDescription:String
public var from:String
public var to:String
public var documentUrl:String
required public init(){}
}
public class OfferHistory : Codable
{
public var id:Int
public var auditType:String
public var offerType:String
public var source:String
public var from:String
public var to:String
public var personalised:Bool
public var value:String
public var net:String
public var vat:String
public var Description:String
public var vin:String
public var gssn:String
public var creation:String
public var modified:String
public var userId:String
public var user:Int
public var offerId:Int
public var commissionNumber:String
public var campaignId:Int?
public var campaignDescription:String
public var creationDate:Date
public var isUsedCarOffer:Bool
required public init(){}
}
public class FinanceOffer : Codable
{
public var campaignDescription:String
public var termsAndConditions:String
public var label:String
public var campaignId:Int
public var documentUrl:String
public var from:String
public var id:Int
public var to:String
public var value:String
public var vin:String
public var enabled:Bool
public var pending:Bool
public var offerType:String
required public init(){}
}
public class VehicleIdentifierData : VehicleData
{
public var retailer:String
public var hasMotabilityError:Bool
public var equipment:[Equipment] = []
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case retailer
case hasMotabilityError
case equipment
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
retailer = try container.decodeIfPresent(String.self, forKey: .retailer)
hasMotabilityError = try container.decodeIfPresent(Bool.self, forKey: .hasMotabilityError)
equipment = try container.decodeIfPresent([Equipment].self, forKey: .equipment) ?? []
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if retailer != nil { try container.encode(retailer, forKey: .retailer) }
if hasMotabilityError != nil { try container.encode(hasMotabilityError, forKey: .hasMotabilityError) }
if equipment.count > 0 { try container.encode(equipment, forKey: .equipment) }
}
}
public class VehicleData : VehicleDataBase
{
public var engine:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case engine
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
engine = try container.decodeIfPresent(String.self, forKey: .engine)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if engine != nil { try container.encode(engine, forKey: .engine) }
}
}
public class VehicleDataBase : Codable
{
public var vin:String
public var Description:String
public var model:String
public var otr:String
public var retailPriceExVAT:String
public var actualPrice:String
public var p11D:String
public var fuelType:String
public var transmission:String
public var transmissionType:String
public var colour:String
public var colourCode:String
public var colourDescription:String
public var commissionNumber:String
public var offerAvailable:Bool
public var campaignDiscountOfferTotal:Int
public var campaignDiscountOfferTotalCurrent:Int
public var campaignDiscountOfferTotalPending:Int
public var campaignServiceOfferTotal:Int
public var campaignServiceOfferTotalCurrent:Int
public var campaignServiceOfferTotalPending:Int
public var campaignCustomOfferTotal:Int
public var campaignPersonalisedOfferTotalCurrent:Int
public var campaignPersonalisedOfferTotalPending:Int
public var campaignPersonalisedOfferTotal:Int
public var campaignCustomOfferTotalCurrent:Int
public var campaignCustomOfferTotalPending:Int
public var campaignOtherOfferTotal:Int
public var campaignOtherOfferTotalCurrent:Int
public var campaignOtherOfferTotalPending:Int
public var retailerDiscountOfferTotal:Int
public var retailerDiscountOfferTotalCurrent:Int
public var retailerDiscountOfferTotalPending:Int
public var retailerServiceOfferTotal:Int
public var retailerServiceOfferTotalCurrent:Int
public var retailerServiceOfferTotalPending:Int
public var retailerCustomOfferTotal:Int
public var retailerCustomOfferTotalCurrent:Int
public var retailerCustomOfferTotalPending:Int
public var retailerWarrantyOfferTotal:Int
public var retailerWarrantyOfferTotalCurrent:Int
public var retailerWarrantyOfferTotalPending:Int
public var retailerOfferTotal:Int
public var retailerOfferTotalCurrent:Int
public var retailerOfferTotalPending:Int
public var campaignOfferTotal:Int
public var campaignOfferTotalCurrent:Int
public var campaignOfferTotalPending:Int
public var campaignAndOfferTotal:Int
public var campaignAndOfferTotalCurrent:Int
public var campaignAndOfferTotalPending:Int
public var offerTotal:Int
public var offerTotalCurrent:Int
public var offerTotalPending:Int
public var creation:String
public var modified:String
public var electricRange:Int
public var electricConsumption:Int
public var portArrivalDate:Date?
public var daysSincePortArrival:Int?
public var retailPriceIncVAT:Double
public var bodyStyle:String
public var upholstery:String
public var upholsteryCode:String
public var upholsteryType:String
public var packageNames:[String] = []
public var line:String
public var currentRetailerOfferPrice:Double
public var retailPrice:String
public var vatQualifying:Bool
public var retailerId:Int
public var gssnId:String
public var noImage:Bool
public var imageUrl:String
public var isAvailableOnline:Bool
public var isBackOrdered:Bool
public var creationDate:String
public var maintenanceDate:String
public var registrationNumber:String
public var registrationDate:Date?
public var mileage:Int?
public var tradeInDate:Date?
public var source:String
public var vehicleType:String
public var offerAmount:String
public var offerExpiry:String
public var activeOffers:[Int] = []
public var campaignMessagesTotal:Int
public var underOffer:Bool
public var isDisplayStock:Bool
public var displayRetailer:String
public var displayRetailerGssnId:String
public var location:String
public var account:String
public var accountType:String
public var usageCode:String
public var bm7NST:String
public var isSellable:Bool
public var secured:Bool
public var specialist:Bool
public var isMotabilityRetailer:Bool
public var upholsteryDescription:String
public var inBackOrderAccount:Bool
public var fullModelYearCode:String
public var productionDate:Date?
public var baumuster:String
public var isMotability:Bool
public var pipAdvanceRentalGross:Double?
public var wpmsAdvanceRentalGross:Double?
public var ispVehicleCustomerDescriptions:[String]
public var eligibleForMaTransfer:Bool
public var confirmedProductionDate:String
public var forecastedArrivalDate:String
required public init(){}
}
public class Equipment : Codable
{
public var id:Int?
public var code:String
public var Description:String
required public init(){}
}
Swift VehicleByCommissionNumberRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/{VehicleType}/Vehicle/{vehicleIdentifier} HTTP/1.1
Host: uat-api-vehicle-mgt-mb-dhc.rapp-customers.co.uk
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
vehicle:
{
retailer: String,
hasMotabilityError: False,
equipment:
[
{
id: 0,
code: String,
description: String
}
],
engine: String,
vin: String,
description: String,
model: String,
otr: String,
retailPriceExVAT: String,
actualPrice: String,
p11D: String,
fuelType: String,
transmission: String,
transmissionType: String,
colour: String,
colourCode: String,
colourDescription: String,
commissionNumber: String,
offerAvailable: False,
campaignDiscountOfferTotal: 0,
campaignDiscountOfferTotalCurrent: 0,
campaignDiscountOfferTotalPending: 0,
campaignServiceOfferTotal: 0,
campaignServiceOfferTotalCurrent: 0,
campaignServiceOfferTotalPending: 0,
campaignCustomOfferTotal: 0,
campaignPersonalisedOfferTotalCurrent: 0,
campaignPersonalisedOfferTotalPending: 0,
campaignPersonalisedOfferTotal: 0,
campaignCustomOfferTotalCurrent: 0,
campaignCustomOfferTotalPending: 0,
campaignOtherOfferTotal: 0,
campaignOtherOfferTotalCurrent: 0,
campaignOtherOfferTotalPending: 0,
retailerDiscountOfferTotal: 0,
retailerDiscountOfferTotalCurrent: 0,
retailerDiscountOfferTotalPending: 0,
retailerServiceOfferTotal: 0,
retailerServiceOfferTotalCurrent: 0,
retailerServiceOfferTotalPending: 0,
retailerCustomOfferTotal: 0,
retailerCustomOfferTotalCurrent: 0,
retailerCustomOfferTotalPending: 0,
retailerWarrantyOfferTotal: 0,
retailerWarrantyOfferTotalCurrent: 0,
retailerWarrantyOfferTotalPending: 0,
retailerOfferTotal: 0,
retailerOfferTotalCurrent: 0,
retailerOfferTotalPending: 0,
campaignOfferTotal: 0,
campaignOfferTotalCurrent: 0,
campaignOfferTotalPending: 0,
campaignAndOfferTotal: 0,
campaignAndOfferTotalCurrent: 0,
campaignAndOfferTotalPending: 0,
offerTotal: 0,
offerTotalCurrent: 0,
offerTotalPending: 0,
creation: String,
modified: String,
electricRange: 0,
electricConsumption: 0,
portArrivalDate: 0001-01-01,
daysSincePortArrival: 0,
retailPriceIncVAT: 0,
bodyStyle: String,
upholstery: String,
upholsteryCode: String,
upholsteryType: String,
packageNames:
[
String
],
line: String,
currentRetailerOfferPrice: 0,
retailPrice: String,
vatQualifying: False,
retailerId: 0,
gssnId: String,
noImage: False,
imageUrl: String,
isAvailableOnline: False,
isBackOrdered: False,
creationDate: String,
maintenanceDate: String,
registrationNumber: String,
registrationDate: 0001-01-01,
mileage: 0,
tradeInDate: 0001-01-01,
source: String,
vehicleType: String,
offerAmount: String,
offerExpiry: String,
activeOffers:
[
0
],
campaignMessagesTotal: 0,
underOffer: False,
isDisplayStock: False,
displayRetailer: String,
displayRetailerGssnId: String,
location: String,
account: String,
accountType: String,
usageCode: String,
bm7NST: String,
isSellable: False,
secured: False,
specialist: False,
isMotabilityRetailer: False,
upholsteryDescription: String,
inBackOrderAccount: False,
fullModelYearCode: String,
productionDate: 0001-01-01,
baumuster: String,
isMotability: False,
pipAdvanceRentalGross: 0,
wpmsAdvanceRentalGross: 0,
ispVehicleCustomerDescriptions:
[
String
],
eligibleForMaTransfer: False,
confirmedProductionDate: String,
forecastedArrivalDate: String
},
campaignOffers:
[
{
id: 0,
offerType: String,
campaignName: String,
from: String,
to: String,
value: String,
net: 0,
offerVehicle:
{
retailPriceExVAT: String
},
pending: False,
documentUrl: String,
personalised: False,
isPersonalisedMonetaryOffer: False,
campaignVIPDiscount: False,
offerValueNet: 0,
campaignGovernmentGrant: False
}
],
campaignPersonalisedOffers:
[
{
category: String,
description: String,
reference: String,
campaignId: 0,
certificateRequired: False,
autoSelect: False,
id: 0,
offerType: String,
campaignName: String,
from: String,
to: String,
value: String,
net: 0,
offerVehicle:
{
retailPriceExVAT: String
},
pending: False,
documentUrl: String,
personalised: False,
isPersonalisedMonetaryOffer: False,
campaignVIPDiscount: False,
offerValueNet: 0,
campaignGovernmentGrant: False
}
],
campaignGovernmentGrantOffers:
[
{
id: 0,
offerType: String,
campaignName: String,
from: String,
to: String,
value: String,
net: 0,
offerVehicle:
{
retailPriceExVAT: String
},
pending: False,
documentUrl: String,
personalised: False,
isPersonalisedMonetaryOffer: False,
campaignVIPDiscount: False,
offerValueNet: 0,
campaignGovernmentGrant: False
}
],
campaignMessages:
[
{
id: 0,
vin: String,
campaignId: 0,
value: String,
campaignDescription: String,
from: String,
to: String,
documentUrl: String
}
],
offerHistories:
[
{
id: 0,
auditType: String,
offerType: String,
source: String,
from: String,
to: String,
personalised: False,
value: String,
net: String,
vat: String,
description: String,
vin: String,
gssn: String,
creation: String,
modified: String,
userId: String,
user: 0,
offerId: 0,
commissionNumber: String,
campaignId: 0,
campaignDescription: String,
creationDate: 0001-01-01,
isUsedCarOffer: False
}
],
financeOffers:
[
{
campaignDescription: String,
termsAndConditions: String,
label: String,
campaignId: 0,
documentUrl: String,
from: String,
id: 0,
to: String,
value: String,
vin: String,
enabled: False,
pending: False,
offerType: String
}
]
}