Mercedes.Agency.Orchestration.API

<back to all web services

FiltersRequest

Filters
Requires Authentication
The following routes are available for this service:
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(){}
}


Swift FiltersRequest DTOs

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

HTTP + 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"}]}}