GET | /v1/filters/{vehicletype} | Get filters by vehicle type |
---|
import Foundation
import ServiceStack
public class FiltersRequest : IGet, Codable
{
public var vehicleType:String
required public init(){}
}
public class FiltersResponse : Codable
{
public var filters:Filters
required public init(){}
}
public class Filters : Filters
{
public var equipment:[String] = []
// @DataMember(Name="Retailers")
public var Retailers:[AccountRetailer] = []
public var customerLocations:[LookupValue] = []
public var assistanceProviders:[LookupValue] = []
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case fuels
case lines
case engines
case transmissions
case colours
case upholsteries
case packages
case brands
case equipment
case retailers
case Retailers
case retailerGroups
case marketAreas
case customerLocations
case assistanceProviders
case nonOptimalReasons
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
fuels = try container.decodeIfPresent([Fuel].self, forKey: .fuels) ?? []
lines = try container.decodeIfPresent([Line].self, forKey: .lines) ?? []
engines = try container.decodeIfPresent([Engine].self, forKey: .engines) ?? []
transmissions = try container.decodeIfPresent([Transmission].self, forKey: .transmissions) ?? []
colours = try container.decodeIfPresent([Colour].self, forKey: .colours) ?? []
upholsteries = try container.decodeIfPresent([Upholstery].self, forKey: .upholsteries) ?? []
packages = try container.decodeIfPresent([Package].self, forKey: .packages) ?? []
brands = try container.decodeIfPresent([Brand].self, forKey: .brands) ?? []
equipment = try container.decodeIfPresent([String].self, forKey: .equipment) ?? []
retailers = try container.decodeIfPresent([Retailer].self, forKey: .retailers) ?? []
Retailers = try container.decodeIfPresent([AccountRetailer].self, forKey: .Retailers) ?? []
retailerGroups = try container.decodeIfPresent([RetailerGroup].self, forKey: .retailerGroups) ?? []
marketAreas = try container.decodeIfPresent([MarketArea].self, forKey: .marketAreas) ?? []
customerLocations = try container.decodeIfPresent([LookupValue].self, forKey: .customerLocations) ?? []
assistanceProviders = try container.decodeIfPresent([LookupValue].self, forKey: .assistanceProviders) ?? []
nonOptimalReasons = try container.decodeIfPresent([NonOptimalReason].self, forKey: .nonOptimalReasons) ?? []
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if fuels.count > 0 { try container.encode(fuels, forKey: .fuels) }
if lines.count > 0 { try container.encode(lines, forKey: .lines) }
if engines.count > 0 { try container.encode(engines, forKey: .engines) }
if transmissions.count > 0 { try container.encode(transmissions, forKey: .transmissions) }
if colours.count > 0 { try container.encode(colours, forKey: .colours) }
if upholsteries.count > 0 { try container.encode(upholsteries, forKey: .upholsteries) }
if packages.count > 0 { try container.encode(packages, forKey: .packages) }
if brands.count > 0 { try container.encode(brands, forKey: .brands) }
if equipment.count > 0 { try container.encode(equipment, forKey: .equipment) }
if retailers.count > 0 { try container.encode(retailers, forKey: .retailers) }
if Retailers.count > 0 { try container.encode(Retailers, forKey: .Retailers) }
if retailerGroups.count > 0 { try container.encode(retailerGroups, forKey: .retailerGroups) }
if marketAreas.count > 0 { try container.encode(marketAreas, forKey: .marketAreas) }
if customerLocations.count > 0 { try container.encode(customerLocations, forKey: .customerLocations) }
if assistanceProviders.count > 0 { try container.encode(assistanceProviders, forKey: .assistanceProviders) }
if nonOptimalReasons.count > 0 { try container.encode(nonOptimalReasons, forKey: .nonOptimalReasons) }
}
}
public class Filters : Codable
{
public var brands:[Brand] = []
public var fuels:[Fuel] = []
public var lines:[Line] = []
public var engines:[Engine] = []
public var bodyStyles:[BodyStyle] = []
public var models:[Model] = []
public var transmissions:[Transmission] = []
public var modelHierarchy:[Brand] = []
public var retailers:[Retailer] = []
public var allLines:[Line] = []
public var colours:[Colour] = []
public var upholsteries:[Upholstery] = []
public var packages:[Package] = []
public var deliveryTime:[DeliveryTime]
public var retailerGroups:[RetailerGroup] = []
public var marketAreas:[MarketArea] = []
public var nonOptimalReasons:[NonOptimalReason] = []
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 Fuel : Codable
{
public var id:Int
public var Description:String
required public init(){}
}
public class Line : Codable
{
public var id:Int
public var Description:String
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 Transmission : Codable
{
public var id:Int
public var Description: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 Colour : Codable
{
public var id:Int
public var Description:String
required public init(){}
}
public class Upholstery : Codable
{
public var id:Int
public var Description:String
required public init(){}
}
public class Package : Codable
{
public var id:Int
public var Description:String
required public init(){}
}
public class DeliveryTime : Codable
{
public var id:Int
public var Description:String
required public init(){}
}
public class RetailerGroup : Codable
{
public var id:Int
public var retailerGroupId:String
public var Description:String
public var retailerGroupName:String
public var gssnIds:[String]
required public init(){}
}
public class MarketArea : Codable
{
public var id:Int
public var marketAreaName:String
public var Description:String
public var gssnIds:[String]
required public init(){}
}
public class NonOptimalReason : Codable
{
public var id:Int
public var Description:String
required public init(){}
}
public class AccountRetailer : Codable
{
public var name:String
public var gssn:String
public var isSmart:Bool
required public init(){}
}
public class LookupValue : Codable
{
public var id:Int?
public var label:String
required public init(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/filters/{vehicletype} HTTP/1.1 Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk Accept: text/jsonl
HTTP/1.1 200 OK Content-Type: text/jsonl Content-Length: length {"Filters":{"Fuels":[{"Id":0,"Description":"String"}],"Lines":[{"Id":0,"Description":"String"}],"Engines":[{"Id":0,"Description":"String","BrandId":0,"Brand":"String","Badge":"String"}],"Transmissions":[{"Id":0,"Description":"String"}],"Colours":[{"Id":0,"Description":"String"}],"Upholsteries":[{"Id":0,"Description":"String"}],"Packages":[{"Id":0,"Description":"String"}],"Brands":[{"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}]}]}],"Equipment":["String"],"Retailers":[{"Gssn":"String","Description":"String","CampaignExcluded":false}],"Retailers":[{"Name":"String","Gssn":"String","IsSmart":false}],"RetailerGroups":[{"Id":0,"RetailerGroupId":"String","Description":"String","RetailerGroupName":"String","GssnIds":["String"]}],"MarketAreas":[{"Id":0,"MarketAreaName":"String","Description":"String","GssnIds":["String"]}],"CustomerLocations":[{}],"AssistanceProviders":[{}],"NonOptimalReasons":[{"Id":0,"Description":"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}]}],"Models":[{"Id":0,"Description":"String","DisplayName":"String","ImageUrlSmall":"String","ImageUrlMedium":"String","ImageUrlLarge":"String","Specialist":false,"Priority":0,"ExcludeFromOnlineShowroomFilters":false}],"ModelHierarchy":[{"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}]}]}],"AllLines":[{"Id":0,"Description":"String"}],"DeliveryTime":[{"Id":0,"Description":"String"}]}}