| POST | /v1/vehicle | Get Vehicle by Vin | Get Vehicle by Vin |
|---|
import Foundation
import ServiceStack
public class GetVehicleRequest : Codable
{
public var vin:String
public var includeAllocatedToOrder:Bool
public var gssn:String
public var isOneAdmin:Bool
required public init(){}
}
public class GetVehicleResponse : Codable
{
public var vehicle:VehicleDetailDto
public var errors:[VehicleError]
required public init(){}
}
public class VehicleDetailDto : Codable
{
public var bodyStyle:String
public var vin:String
public var Description:String
public var colour:String
public var colourCode:String
public var colourDescription:String
public var colourGroup:String
public var model:String
public var commissionNumber:String
public var brandId:Int?
public var brand:Brand
public var engine:Engine
public var engineBadge:String
public var media:Media
public var line:String
public var upholsteryCode:String
public var upholsteryType:String
public var upholstery:String
public var upholsteryDescription:String
public var availablePackages:[String] = []
public var packages:[String] = []
public var p11D:Double
public var portArrivalDate:Date?
public var prices:[Price] = []
public var transmissionType:String
public var fuelType:String
public var vehicleClass:String
public var productRange:String
public var vehicleType:String
public var emission:Double?
public var isAvailableOnline:Bool
public var underOffer:Bool
public var isExcluded:Bool
public var isSellable:Bool
public var onHold:Bool
public var electricConsumption:Double?
public var electricRange:Double?
public var imageUrl:String
public var baumuster:String
public var retailer:Retailer
public var bm7NST:String
public var otr:Double
public var actualPrice:Double
public var isDisplayStock:Bool
public var displayRetailerId:Int?
public var displayRetailer:String
public var displayRetailerGssnId:String
public var displayRetailerMarketAreaId:String
public var isSmartDisplayRetailer:Bool
public var isSpecialistCar:Bool
public var age:Int?
public var secured:Bool
public var isHOBackOrderAccountVehicle:Bool
public var isAllocatedToBackOrder:Bool
public var usageCode:String
public var emissionCombined:Double?
public var normalisedEmissionDirective:String
public var hasMildHybridEquipmentCode:Bool
public var retailPriceExVat:Double
public var retailPrice_IncVAT:Double
public var retailPrice_ExVAT:Double
public var modelId:Int
public var vid:String
public var productionDate:String
public var fullModelYearCode:String
public var chassisNumber:String
public var eligibleForIntegratedServiceCare:Bool
public var accountType:String
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 equipment:[Equipmentv2]
public var equipmentCategories:[VehicleEquipmentCategory]
public var energyEfficiencyClass:VehicleEmissionClass
public var vehicleData:[VehicleAttribute]
public var integratedServiceCareOptions:[VehicleIntegratedServiceCareOption] = []
public var ispVehicleCustomerDescriptions:[String]
public var confirmedProductionDate:String
public var forecastedArrivalDate:String
required public init(){}
}
public class Brand : Codable
{
public var id:Int
public var Description:String
public var displayName:String
public var bodyStyles:[BodyStyle]
required public init(){}
}
public class BodyStyle : Codable
{
public var id:Int
public var Description:String
public var models:[Model]
required public init(){}
}
public class Model : Codable
{
public var id:Int
public var Description:String
public var displayName:String
public var imageUrlSmall:String
public var imageUrlMedium:String
public var imageUrlLarge:String
public var specialist:Bool
public var priority:Int?
public var excludeFromOnlineShowroomFilters: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 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 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 VehicleConsumption : Codable
{
public var id:Int
public var lkm:Double
public var mpg:Double
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 VehicleEquipmentCategory : Codable
{
public var order:Int
public var code:String
public var Description:String
public var equipment:[Equipmentv2]
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(){}
}
public class VehicleError : Codable
{
public var field:String
public var message:String
required public init(){}
}
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.
POST /v1/vehicle HTTP/1.1
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
Vin: String,
IncludeAllocatedToOrder: False,
Gssn: String,
IsOneAdmin: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
Vehicle:
{
BodyStyle: String,
Vin: String,
Description: String,
Colour: String,
ColourCode: String,
ColourDescription: String,
ColourGroup: String,
Model: String,
CommissionNumber: String,
BrandId: 0,
Brand:
{
Id: 0,
Description: String,
DisplayName: String,
BodyStyles:
[
{
Id: 0,
Description: String,
Models:
[
{
Id: 0,
Description: String,
DisplayName: String,
ImageUrlSmall: String,
ImageUrlMedium: String,
ImageUrlLarge: String,
Specialist: False,
Priority: 0,
ExcludeFromOnlineShowroomFilters: False
}
]
}
]
},
Engine:
{
Id: 0,
Badge: String
},
EngineBadge: String,
Media:
{
NoImage: False,
MainImageUrl: String
},
Line: String,
UpholsteryCode: String,
UpholsteryType: String,
Upholstery: String,
UpholsteryDescription: String,
AvailablePackages:
[
String
],
Packages:
[
String
],
P11D: 0,
PortArrivalDate: 0001-01-01,
Prices:
[
{
Id: String,
Description: String,
Net: 0,
VAT: 0,
Gross: 0,
Product: LIST_PRICE
}
],
TransmissionType: String,
FuelType: String,
VehicleClass: String,
ProductRange: String,
VehicleType: String,
Emission: 0,
IsAvailableOnline: False,
UnderOffer: False,
IsExcluded: False,
IsSellable: False,
OnHold: False,
ElectricConsumption: 0,
ElectricRange: 0,
ImageUrl: String,
Baumuster: 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
}
]
}
},
Bm7NST: String,
OTR: 0,
ActualPrice: 0,
IsDisplayStock: False,
DisplayRetailerId: 0,
DisplayRetailer: String,
DisplayRetailerGssnId: String,
DisplayRetailerMarketAreaId: String,
IsSmartDisplayRetailer: False,
IsSpecialistCar: False,
Age: 0,
Secured: False,
IsHOBackOrderAccountVehicle: False,
IsAllocatedToBackOrder: False,
UsageCode: String,
EmissionCombined: 0,
NormalisedEmissionDirective: String,
HasMildHybridEquipmentCode: False,
RetailPriceExVat: 0,
RetailPrice_IncVAT: 0,
RetailPrice_ExVAT: 0,
ModelId: 0,
VID: String,
ProductionDate: String,
FullModelYearCode: String,
ChassisNumber: String,
EligibleForIntegratedServiceCare: False,
AccountType: String,
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
},
Equipment:
[
{
Importance: 0,
IsAdditional: False,
Id: 0,
Code: String,
Description: String
}
],
EquipmentCategories:
[
{
Order: 0,
Code: String,
Description: String,
Equipment:
[
{
Importance: 0,
IsAdditional: False,
Id: 0,
Code: String,
Description: String
}
]
}
],
EnergyEfficiencyClass:
{
Colour: String,
Rating: String
},
VehicleData:
[
{
Description: String,
Value: String
}
],
IntegratedServiceCareOptions:
[
{
OptionCode: String,
BM7NST: String,
FullModelYear: String,
IntegratedProductType: String,
CustomerDescription: String,
OneAgentProductType: String
}
],
IspVehicleCustomerDescriptions:
[
String
],
ConfirmedProductionDate: String,
ForecastedArrivalDate: String
},
Errors:
[
{
Field: String,
Message: String
}
]
}