Mercedes.Agency.Orchestration.API

<back to all web services

CarConfiguratorStockRequest

CarConfigurator
Requires Authentication
The following routes are available for this service:
POST/v1/CarConfiguratorStockValidate and save a car configurator code for a vehicle searchThis endpoint calls Agency API to validate and save a car configurator code. The code is validated and saved in the database and returns a response from a third party CCS which provides car configuration details. These get saved to open search and used to perform a vehicle search
import 'package:servicestack/servicestack.dart';

class KeyInformation implements IConvertible
{
    String? BM7NST;
    String? ConfigurationDate;
    String? ModelYear;
    String? HalfYear;

    KeyInformation({this.BM7NST,this.ConfigurationDate,this.ModelYear,this.HalfYear});
    KeyInformation.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        BM7NST = json['BM7NST'];
        ConfigurationDate = json['ConfigurationDate'];
        ModelYear = json['ModelYear'];
        HalfYear = json['HalfYear'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'BM7NST': BM7NST,
        'ConfigurationDate': ConfigurationDate,
        'ModelYear': ModelYear,
        'HalfYear': HalfYear
    };

    getTypeName() => "KeyInformation";
    TypeContext? context = _ctx;
}

class EquipmentCache implements IConvertible
{
    String? Code;
    String? Description;
    String? StandardFlag;
    double? Price;
    String? Category;
    String? Importance;

    EquipmentCache({this.Code,this.Description,this.StandardFlag,this.Price,this.Category,this.Importance});
    EquipmentCache.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Code = json['Code'];
        Description = json['Description'];
        StandardFlag = json['StandardFlag'];
        Price = JsonConverters.toDouble(json['Price']);
        Category = json['Category'];
        Importance = json['Importance'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Code': Code,
        'Description': Description,
        'StandardFlag': StandardFlag,
        'Price': Price,
        'Category': Category,
        'Importance': Importance
    };

    getTypeName() => "EquipmentCache";
    TypeContext? context = _ctx;
}

class OrderingOptions implements IConvertible
{
    List<String>? Interior;
    List<String>? Exterior;
    List<String>? Options;
    List<EquipmentCache>? WheelOptions = [];
    List<EquipmentCache>? TrimOptions = [];
    List<EquipmentCache>? OptionCodes = [];

    OrderingOptions({this.Interior,this.Exterior,this.Options,this.WheelOptions,this.TrimOptions,this.OptionCodes});
    OrderingOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Interior = JsonConverters.fromJson(json['Interior'],'List<String>',context!);
        Exterior = JsonConverters.fromJson(json['Exterior'],'List<String>',context!);
        Options = JsonConverters.fromJson(json['Options'],'List<String>',context!);
        WheelOptions = JsonConverters.fromJson(json['WheelOptions'],'List<EquipmentCache>',context!);
        TrimOptions = JsonConverters.fromJson(json['TrimOptions'],'List<EquipmentCache>',context!);
        OptionCodes = JsonConverters.fromJson(json['OptionCodes'],'List<EquipmentCache>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Interior': JsonConverters.toJson(Interior,'List<String>',context!),
        'Exterior': JsonConverters.toJson(Exterior,'List<String>',context!),
        'Options': JsonConverters.toJson(Options,'List<String>',context!),
        'WheelOptions': JsonConverters.toJson(WheelOptions,'List<EquipmentCache>',context!),
        'TrimOptions': JsonConverters.toJson(TrimOptions,'List<EquipmentCache>',context!),
        'OptionCodes': JsonConverters.toJson(OptionCodes,'List<EquipmentCache>',context!)
    };

    getTypeName() => "OrderingOptions";
    TypeContext? context = _ctx;
}

class CarConfiguratorResponse implements IConvertible
{
    String? Name;
    KeyInformation? KeyInformation;
    OrderingOptions? OrderingOptions;
    ResponseStatus? ResponseStatus;
    String? ConfiguratorCode;

    CarConfiguratorResponse({this.Name,this.KeyInformation,this.OrderingOptions,this.ResponseStatus,this.ConfiguratorCode});
    CarConfiguratorResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        KeyInformation = JsonConverters.fromJson(json['KeyInformation'],'KeyInformation',context!);
        OrderingOptions = JsonConverters.fromJson(json['OrderingOptions'],'OrderingOptions',context!);
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        ConfiguratorCode = json['ConfiguratorCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'KeyInformation': JsonConverters.toJson(KeyInformation,'KeyInformation',context!),
        'OrderingOptions': JsonConverters.toJson(OrderingOptions,'OrderingOptions',context!),
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'ConfiguratorCode': ConfiguratorCode
    };

    getTypeName() => "CarConfiguratorResponse";
    TypeContext? context = _ctx;
}

class BackOrderVehicleDetailsBrand implements IConvertible
{
    String? Description;

    BackOrderVehicleDetailsBrand({this.Description});
    BackOrderVehicleDetailsBrand.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Description = json['Description'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Description': Description
    };

    getTypeName() => "BackOrderVehicleDetailsBrand";
    TypeContext? context = _ctx;
}

class Engine implements IConvertible
{
    int? Id;
    String? Badge;
    int? CubicCapacity;
    int? Cyclinders;
    String? HorsePower;
    String? Kw;
    bool? Selected;

    Engine({this.Id,this.Badge,this.CubicCapacity,this.Cyclinders,this.HorsePower,this.Kw,this.Selected});
    Engine.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Badge = json['Badge'];
        CubicCapacity = json['CubicCapacity'];
        Cyclinders = json['Cyclinders'];
        HorsePower = json['HorsePower'];
        Kw = json['Kw'];
        Selected = json['Selected'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Badge': Badge,
        'CubicCapacity': CubicCapacity,
        'Cyclinders': Cyclinders,
        'HorsePower': HorsePower,
        'Kw': Kw,
        'Selected': Selected
    };

    getTypeName() => "Engine";
    TypeContext? context = _ctx;
}

class VehicleAuditDetails implements IConvertible
{
    String? UserId;
    bool? Status;
    String? Notes;
    String? CreationDate;

    VehicleAuditDetails({this.UserId,this.Status,this.Notes,this.CreationDate});
    VehicleAuditDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        UserId = json['UserId'];
        Status = json['Status'];
        Notes = json['Notes'];
        CreationDate = json['CreationDate'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'UserId': UserId,
        'Status': Status,
        'Notes': Notes,
        'CreationDate': CreationDate
    };

    getTypeName() => "VehicleAuditDetails";
    TypeContext? context = _ctx;
}

class RetailerService implements IConvertible
{
    int? Id;
    String? Description;
    bool? Priority;

    RetailerService({this.Id,this.Description,this.Priority});
    RetailerService.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Description = json['Description'];
        Priority = json['Priority'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Description': Description,
        'Priority': Priority
    };

    getTypeName() => "RetailerService";
    TypeContext? context = _ctx;
}

class RetailerServices implements IConvertible
{
    List<RetailerService>? New;
    List<RetailerService>? Used;

    RetailerServices({this.New,this.Used});
    RetailerServices.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        New = JsonConverters.fromJson(json['New'],'List<RetailerService>',context!);
        Used = JsonConverters.fromJson(json['Used'],'List<RetailerService>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'New': JsonConverters.toJson(New,'List<RetailerService>',context!),
        'Used': JsonConverters.toJson(Used,'List<RetailerService>',context!)
    };

    getTypeName() => "RetailerServices";
    TypeContext? context = _ctx;
}

class RetailerOpeningTime implements IConvertible
{
    String? Day;
    String? OpenFrom;
    String? OpenTo;
    String? Special;

    RetailerOpeningTime({this.Day,this.OpenFrom,this.OpenTo,this.Special});
    RetailerOpeningTime.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Day = json['Day'];
        OpenFrom = json['OpenFrom'];
        OpenTo = json['OpenTo'];
        Special = json['Special'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Day': Day,
        'OpenFrom': OpenFrom,
        'OpenTo': OpenTo,
        'Special': Special
    };

    getTypeName() => "RetailerOpeningTime";
    TypeContext? context = _ctx;
}

class RetailerOpeningTimes implements IConvertible
{
    List<RetailerOpeningTime>? New = [];
    List<RetailerOpeningTime>? Used = [];

    RetailerOpeningTimes({this.New,this.Used});
    RetailerOpeningTimes.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        New = JsonConverters.fromJson(json['New'],'List<RetailerOpeningTime>',context!);
        Used = JsonConverters.fromJson(json['Used'],'List<RetailerOpeningTime>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'New': JsonConverters.toJson(New,'List<RetailerOpeningTime>',context!),
        'Used': JsonConverters.toJson(Used,'List<RetailerOpeningTime>',context!)
    };

    getTypeName() => "RetailerOpeningTimes";
    TypeContext? context = _ctx;
}

class Retailer implements IConvertible
{
    int? Id;
    String? GssnId;
    String? Description;
    String? Street;
    String? City;
    String? District;
    String? Postcode;
    String? GoogleMapPostcode;
    String? Phone;
    String? Fax;
    String? Email;
    String? Website;
    double? Latitude;
    double? Longitude;
    int? RetailerGroup_Id;
    String? RetailerGroupId;
    String? RetailerGroupName;
    double? Distance;
    String? PaymentServiceGuid;
    bool? IsOnline;
    bool? IsNewCarRetailer;
    bool? IsUsedCarRetailer;
    bool? IsCentralRetailer;
    bool? ChatEnabled;
    bool? TradeInEnabled;
    String? DisplayPhoneNumberNew;
    String? DisplayPhoneNumberUsed;
    RetailerServices? Services;
    bool? smart;
    String? smartDescription;
    String? smartWebsite;
    String? smartEmail;
    String? smartPhone;
    String? AdditionalInformation;
    String? LegacyId;
    double? DriveTime;
    bool? Agent;
    int? Port;
    String? PortName;
    int? MarketAreaId;
    String? MarketAreaName;
    String? MaintenanceDate;
    String? MaintenanceSource;
    String? STPAccountNumbers;
    bool? CampaignExcluded;
    String? DigitalLoungeParentGssnId;
    bool? SendLeadsToDigitalLoungeParent;
    bool? IsExcludedFromImport;
    RetailerOpeningTimes? OpeningTimes;

    Retailer({this.Id,this.GssnId,this.Description,this.Street,this.City,this.District,this.Postcode,this.GoogleMapPostcode,this.Phone,this.Fax,this.Email,this.Website,this.Latitude,this.Longitude,this.RetailerGroup_Id,this.RetailerGroupId,this.RetailerGroupName,this.Distance,this.PaymentServiceGuid,this.IsOnline,this.IsNewCarRetailer,this.IsUsedCarRetailer,this.IsCentralRetailer,this.ChatEnabled,this.TradeInEnabled,this.DisplayPhoneNumberNew,this.DisplayPhoneNumberUsed,this.Services,this.smart,this.smartDescription,this.smartWebsite,this.smartEmail,this.smartPhone,this.AdditionalInformation,this.LegacyId,this.DriveTime,this.Agent,this.Port,this.PortName,this.MarketAreaId,this.MarketAreaName,this.MaintenanceDate,this.MaintenanceSource,this.STPAccountNumbers,this.CampaignExcluded,this.DigitalLoungeParentGssnId,this.SendLeadsToDigitalLoungeParent,this.IsExcludedFromImport,this.OpeningTimes});
    Retailer.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        GssnId = json['GssnId'];
        Description = json['Description'];
        Street = json['Street'];
        City = json['City'];
        District = json['District'];
        Postcode = json['Postcode'];
        GoogleMapPostcode = json['GoogleMapPostcode'];
        Phone = json['Phone'];
        Fax = json['Fax'];
        Email = json['Email'];
        Website = json['Website'];
        Latitude = JsonConverters.toDouble(json['Latitude']);
        Longitude = JsonConverters.toDouble(json['Longitude']);
        RetailerGroup_Id = json['RetailerGroup_Id'];
        RetailerGroupId = json['RetailerGroupId'];
        RetailerGroupName = json['RetailerGroupName'];
        Distance = JsonConverters.toDouble(json['Distance']);
        PaymentServiceGuid = json['PaymentServiceGuid'];
        IsOnline = json['IsOnline'];
        IsNewCarRetailer = json['IsNewCarRetailer'];
        IsUsedCarRetailer = json['IsUsedCarRetailer'];
        IsCentralRetailer = json['IsCentralRetailer'];
        ChatEnabled = json['ChatEnabled'];
        TradeInEnabled = json['TradeInEnabled'];
        DisplayPhoneNumberNew = json['DisplayPhoneNumberNew'];
        DisplayPhoneNumberUsed = json['DisplayPhoneNumberUsed'];
        Services = JsonConverters.fromJson(json['Services'],'RetailerServices',context!);
        smart = json['smart'];
        smartDescription = json['smartDescription'];
        smartWebsite = json['smartWebsite'];
        smartEmail = json['smartEmail'];
        smartPhone = json['smartPhone'];
        AdditionalInformation = json['AdditionalInformation'];
        LegacyId = json['LegacyId'];
        DriveTime = JsonConverters.toDouble(json['DriveTime']);
        Agent = json['Agent'];
        Port = json['Port'];
        PortName = json['PortName'];
        MarketAreaId = json['MarketAreaId'];
        MarketAreaName = json['MarketAreaName'];
        MaintenanceDate = json['MaintenanceDate'];
        MaintenanceSource = json['MaintenanceSource'];
        STPAccountNumbers = json['STPAccountNumbers'];
        CampaignExcluded = json['CampaignExcluded'];
        DigitalLoungeParentGssnId = json['DigitalLoungeParentGssnId'];
        SendLeadsToDigitalLoungeParent = json['SendLeadsToDigitalLoungeParent'];
        IsExcludedFromImport = json['IsExcludedFromImport'];
        OpeningTimes = JsonConverters.fromJson(json['OpeningTimes'],'RetailerOpeningTimes',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'GssnId': GssnId,
        'Description': Description,
        'Street': Street,
        'City': City,
        'District': District,
        'Postcode': Postcode,
        'GoogleMapPostcode': GoogleMapPostcode,
        'Phone': Phone,
        'Fax': Fax,
        'Email': Email,
        'Website': Website,
        'Latitude': Latitude,
        'Longitude': Longitude,
        'RetailerGroup_Id': RetailerGroup_Id,
        'RetailerGroupId': RetailerGroupId,
        'RetailerGroupName': RetailerGroupName,
        'Distance': Distance,
        'PaymentServiceGuid': PaymentServiceGuid,
        'IsOnline': IsOnline,
        'IsNewCarRetailer': IsNewCarRetailer,
        'IsUsedCarRetailer': IsUsedCarRetailer,
        'IsCentralRetailer': IsCentralRetailer,
        'ChatEnabled': ChatEnabled,
        'TradeInEnabled': TradeInEnabled,
        'DisplayPhoneNumberNew': DisplayPhoneNumberNew,
        'DisplayPhoneNumberUsed': DisplayPhoneNumberUsed,
        'Services': JsonConverters.toJson(Services,'RetailerServices',context!),
        'smart': smart,
        'smartDescription': smartDescription,
        'smartWebsite': smartWebsite,
        'smartEmail': smartEmail,
        'smartPhone': smartPhone,
        'AdditionalInformation': AdditionalInformation,
        'LegacyId': LegacyId,
        'DriveTime': DriveTime,
        'Agent': Agent,
        'Port': Port,
        'PortName': PortName,
        'MarketAreaId': MarketAreaId,
        'MarketAreaName': MarketAreaName,
        'MaintenanceDate': MaintenanceDate,
        'MaintenanceSource': MaintenanceSource,
        'STPAccountNumbers': STPAccountNumbers,
        'CampaignExcluded': CampaignExcluded,
        'DigitalLoungeParentGssnId': DigitalLoungeParentGssnId,
        'SendLeadsToDigitalLoungeParent': SendLeadsToDigitalLoungeParent,
        'IsExcludedFromImport': IsExcludedFromImport,
        'OpeningTimes': JsonConverters.toJson(OpeningTimes,'RetailerOpeningTimes',context!)
    };

    getTypeName() => "Retailer";
    TypeContext? context = _ctx;
}

class Media implements IConvertible
{
    int? ImageCount;
    String? MainImageUrl;
    String? MainImageUrlMobile;
    bool? NoImage;
    List<String>? ThreeSixtyDegreeImageUrls;
    List<String>? ThreeSixtyDegreeMobileImageUrls;
    List<String>? VehicleImageUrls;
    List<String>? VehicleMobileImageUrls;

    Media({this.ImageCount,this.MainImageUrl,this.MainImageUrlMobile,this.NoImage,this.ThreeSixtyDegreeImageUrls,this.ThreeSixtyDegreeMobileImageUrls,this.VehicleImageUrls,this.VehicleMobileImageUrls});
    Media.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ImageCount = json['ImageCount'];
        MainImageUrl = json['MainImageUrl'];
        MainImageUrlMobile = json['MainImageUrlMobile'];
        NoImage = json['NoImage'];
        ThreeSixtyDegreeImageUrls = JsonConverters.fromJson(json['ThreeSixtyDegreeImageUrls'],'List<String>',context!);
        ThreeSixtyDegreeMobileImageUrls = JsonConverters.fromJson(json['ThreeSixtyDegreeMobileImageUrls'],'List<String>',context!);
        VehicleImageUrls = JsonConverters.fromJson(json['VehicleImageUrls'],'List<String>',context!);
        VehicleMobileImageUrls = JsonConverters.fromJson(json['VehicleMobileImageUrls'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ImageCount': ImageCount,
        'MainImageUrl': MainImageUrl,
        'MainImageUrlMobile': MainImageUrlMobile,
        'NoImage': NoImage,
        'ThreeSixtyDegreeImageUrls': JsonConverters.toJson(ThreeSixtyDegreeImageUrls,'List<String>',context!),
        'ThreeSixtyDegreeMobileImageUrls': JsonConverters.toJson(ThreeSixtyDegreeMobileImageUrls,'List<String>',context!),
        'VehicleImageUrls': JsonConverters.toJson(VehicleImageUrls,'List<String>',context!),
        'VehicleMobileImageUrls': JsonConverters.toJson(VehicleMobileImageUrls,'List<String>',context!)
    };

    getTypeName() => "Media";
    TypeContext? context = _ctx;
}

enum OfferPriceProductType
{
    LIST_PRICE,
    NUMBER_PLATE_FEE,
    DELIVERY_CHARGE,
    FUEL_CHARGE,
    MANUFACTURER_OFFER,
    PERSONALISED_MONEYOFFER,
    PERSONALISED_NONMONEYOFFER,
    PERSONALISED_NONMONEYOFFER_NEG,
    SERVICE,
    SERVICE_NEG,
    GOVERNMENT_GRANT,
    OUTRIGHT_PURCHASE_DISCOUNT,
    VIP_OFFER,
    WALLBOX_OFFER,
    WALLBOX_OFFER_NEG,
    ROAD_FUND_LICENCE,
    FIRST_REGISTRATION_FEE,
    NOT_FOUND,
    ACCESSORY_OFFER,
    ACCESSORY_OFFER_NEG,
    MOTABILITY_DISCOUNT,
}

class Price implements IConvertible
{
    String? Id;
    String? Description;
    double? Net;
    double? VAT;
    double? Gross;
    OfferPriceProductType? Product;

    Price({this.Id,this.Description,this.Net,this.VAT,this.Gross,this.Product});
    Price.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Description = json['Description'];
        Net = JsonConverters.toDouble(json['Net']);
        VAT = JsonConverters.toDouble(json['VAT']);
        Gross = JsonConverters.toDouble(json['Gross']);
        Product = JsonConverters.fromJson(json['Product'],'OfferPriceProductType',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Description': Description,
        'Net': Net,
        'VAT': VAT,
        'Gross': Gross,
        'Product': JsonConverters.toJson(Product,'OfferPriceProductType',context!)
    };

    getTypeName() => "Price";
    TypeContext? context = _ctx;
}

class Consumption implements IConvertible
{
    int? Id;
    double? Lkm;
    double? Mpg;

    Consumption({this.Id,this.Lkm,this.Mpg});
    Consumption.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Lkm = JsonConverters.toDouble(json['Lkm']);
        Mpg = JsonConverters.toDouble(json['Mpg']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Lkm': Lkm,
        'Mpg': Mpg
    };

    getTypeName() => "Consumption";
    TypeContext? context = _ctx;
}

class EmissionClass implements IConvertible
{
    String? Colour;
    String? Rating;

    EmissionClass({this.Colour,this.Rating});
    EmissionClass.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Colour = json['Colour'];
        Rating = json['Rating'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Colour': Colour,
        'Rating': Rating
    };

    getTypeName() => "EmissionClass";
    TypeContext? context = _ctx;
}

class Equipment implements IConvertible
{
    int? Id;
    String? Code;
    String? Description;

    Equipment({this.Id,this.Code,this.Description});
    Equipment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Code = json['Code'];
        Description = json['Description'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Code': Code,
        'Description': Description
    };

    getTypeName() => "Equipment";
    TypeContext? context = _ctx;
}

class Equipmentv2 extends Equipment implements IConvertible
{
    int? Importance;
    bool? IsAdditional;

    Equipmentv2({this.Importance,this.IsAdditional});
    Equipmentv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Importance = json['Importance'];
        IsAdditional = json['IsAdditional'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Importance': Importance,
        'IsAdditional': IsAdditional
    });

    getTypeName() => "Equipmentv2";
    TypeContext? context = _ctx;
}

class EquipmentCategoryv2 implements IConvertible
{
    int? Order;
    String? Code;
    String? Description;
    List<Equipmentv2>? Equipment;

    EquipmentCategoryv2({this.Order,this.Code,this.Description,this.Equipment});
    EquipmentCategoryv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Order = json['Order'];
        Code = json['Code'];
        Description = json['Description'];
        Equipment = JsonConverters.fromJson(json['Equipment'],'List<Equipmentv2>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Order': Order,
        'Code': Code,
        'Description': Description,
        'Equipment': JsonConverters.toJson(Equipment,'List<Equipmentv2>',context!)
    };

    getTypeName() => "EquipmentCategoryv2";
    TypeContext? context = _ctx;
}

class VehicleAttribute implements IConvertible
{
    String? Description;
    String? Value;

    VehicleAttribute({this.Description,this.Value});
    VehicleAttribute.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Description = json['Description'];
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Description': Description,
        'Value': Value
    };

    getTypeName() => "VehicleAttribute";
    TypeContext? context = _ctx;
}

class IntegratedServiceCareOptions implements IConvertible
{
    String? OptionCode;
    String? BM7NST;
    String? FullModelYear;
    String? IntegratedProductType;
    String? CustomerDescription;
    String? OneAgentProductType;

    IntegratedServiceCareOptions({this.OptionCode,this.BM7NST,this.FullModelYear,this.IntegratedProductType,this.CustomerDescription,this.OneAgentProductType});
    IntegratedServiceCareOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        OptionCode = json['OptionCode'];
        BM7NST = json['BM7NST'];
        FullModelYear = json['FullModelYear'];
        IntegratedProductType = json['IntegratedProductType'];
        CustomerDescription = json['CustomerDescription'];
        OneAgentProductType = json['OneAgentProductType'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'OptionCode': OptionCode,
        'BM7NST': BM7NST,
        'FullModelYear': FullModelYear,
        'IntegratedProductType': IntegratedProductType,
        'CustomerDescription': CustomerDescription,
        'OneAgentProductType': OneAgentProductType
    };

    getTypeName() => "IntegratedServiceCareOptions";
    TypeContext? context = _ctx;
}

class BackOrderVehicleDetails implements IVehiclePrices, IVehiclePriceCollection, IImageUrl, IVehicleDetails, IConvertible
{
    String? Vin;
    String? CommissionNumber;
    String? Description;
    String? ShortDescription;
    int? ModelId;
    String? Model;
    String? FullModelYearCode;
    int? BrandId;
    BackOrderVehicleDetailsBrand? Brand;
    int? RetailerId;
    String? ImageUrl;
    String? Colour;
    String? ColourCode;
    String? FuelType;
    int? FuelTypeId;
    String? Transmission;
    String? TransmissionType;
    Engine? Engine;
    String? EngineBadge;
    String? Package;
    String? Line;
    String? Upholstery;
    String? UpholsteryCode;
    String? UsageCode;
    String? Account;
    String? AccountType;
    String? NST;
    String? Baumuster;
    double? ElectricRange;
    double? ElectricConsumption;
    double? ActualPrice;
    double? OTRPrice;
    double? RetailPriceExVat;
    double? P11D;
    String? VehicleType;
    String? UpholsteryDescription;
    String? UpholsteryType;
    String? BodyStyle;
    String? BodyStyleStyleCode;
    String? BodyStyleStyleCodeElectric;
    String? BodyStyleStyleCodeHybrid;
    List<String>? AvailablePackages;
    int? Mapped_Line;
    bool? Secured;
    String? Bm7NST;
    bool? IsAvailableOnline;
    bool? IsSpecialistCar;
    bool? IsSellable;
    bool? UnderOffer;
    List<VehicleAuditDetails>? VehicleAuditDetails;
    Retailer? Retailer;
    Media? Media;
    double? Emission;
    String? ColourGroup;
    String? VehicleClass;
    String? ProductRange;
    bool? IsHOBackOrderAccountVehicle;
    bool? IsAllocatedToBackOrder;
    bool? InBackOrderAccount;
    double? DeliveryCharge;
    double? DeliveryChargeNet;
    double? DeliveryChargeVAT;
    double? Plates;
    double? PlatesNet;
    double? PlatesVAT;
    double? FuelCharge;
    double? FuelChargeNet;
    double? FuelChargeVAT;
    double? RetailPrice_ExVAT;
    double? RetailPrice_IncVAT;
    double? VED_Year1;
    double? VED_Year2;
    double? FirstRegFee;
    double? OTR_Value;
    double? OTR;
    List<Price>? Prices;
    String? ProductionDate;
    DateTime? PortArrivalDate;
    String? Location;
    bool? IsDisplayStock;
    int? DisplayRetailerId;
    String? DisplayRetailer;
    String? DisplayRetailerGssnId;
    int? DisplayRetailerMarketAreaId;
    bool? IsSmartDisplayRetailer;
    String? ColourDescription;
    DateTime? Creation;
    DateTime? Modified;
    int? VATQualifyingNumber;
    bool? VATQualifying;
    double? CurrentRetailerOfferPrice;
    String? GssnId;
    bool? NoImage;
    String? RegistrationNumber;
    DateTime? RegistrationDate;
    int? Mileage;
    DateTime? TradeInDate;
    String? VID;
    String? EmissionCombined;
    String? EmissionDirective;
    String? NormalisedEmissionDirective;
    bool? HasMildHybridEquipmentCode;
    double? Acceleration;
    String? ChassisNumber;
    String? NumberOfDoors;
    String? NumberOfSeats;
    bool? SpecialInfo;
    bool? EligibleForIntegratedServiceCare;
    Consumption? ConsumptionCombined;
    Consumption? ConsumptionExtraUrban;
    Consumption? ConsumptionUrban;
    Consumption? WltpFuelConsumptionCombined;
    Consumption? WltpFuelConsumptionExtraHigh;
    Consumption? WltpFuelConsumptionHigh;
    Consumption? WltpFuelConsumptionLow;
    Consumption? WltpFuelConsumptionMedium;
    EmissionClass? EnergyEfficiencyClass;
    List<Equipmentv2>? Equipment;
    List<Equipment>? EquipmentAdditional;
    List<EquipmentCategoryv2>? EquipmentCategories;
    List<VehicleAttribute>? VehicleData;
    List<IntegratedServiceCareOptions>? IntegratedServiceCareOptions;
    List<String>? IspVehicleCustomerDescriptions;
    String? MarketingCode;
    bool? EligibleForMaTransfer;
    String? ConfirmedProductionDate;
    String? ForecastedArrivalDate;

    BackOrderVehicleDetails({this.Vin,this.CommissionNumber,this.Description,this.ShortDescription,this.ModelId,this.Model,this.FullModelYearCode,this.BrandId,this.Brand,this.RetailerId,this.ImageUrl,this.Colour,this.ColourCode,this.FuelType,this.FuelTypeId,this.Transmission,this.TransmissionType,this.Engine,this.EngineBadge,this.Package,this.Line,this.Upholstery,this.UpholsteryCode,this.UsageCode,this.Account,this.AccountType,this.NST,this.Baumuster,this.ElectricRange,this.ElectricConsumption,this.ActualPrice,this.OTRPrice,this.RetailPriceExVat,this.P11D,this.VehicleType,this.UpholsteryDescription,this.UpholsteryType,this.BodyStyle,this.BodyStyleStyleCode,this.BodyStyleStyleCodeElectric,this.BodyStyleStyleCodeHybrid,this.AvailablePackages,this.Mapped_Line,this.Secured,this.Bm7NST,this.IsAvailableOnline,this.IsSpecialistCar,this.IsSellable,this.UnderOffer,this.VehicleAuditDetails,this.Retailer,this.Media,this.Emission,this.ColourGroup,this.VehicleClass,this.ProductRange,this.IsHOBackOrderAccountVehicle,this.IsAllocatedToBackOrder,this.InBackOrderAccount,this.DeliveryCharge,this.DeliveryChargeNet,this.DeliveryChargeVAT,this.Plates,this.PlatesNet,this.PlatesVAT,this.FuelCharge,this.FuelChargeNet,this.FuelChargeVAT,this.RetailPrice_ExVAT,this.RetailPrice_IncVAT,this.VED_Year1,this.VED_Year2,this.FirstRegFee,this.OTR_Value,this.OTR,this.Prices,this.ProductionDate,this.PortArrivalDate,this.Location,this.IsDisplayStock,this.DisplayRetailerId,this.DisplayRetailer,this.DisplayRetailerGssnId,this.DisplayRetailerMarketAreaId,this.IsSmartDisplayRetailer,this.ColourDescription,this.Creation,this.Modified,this.VATQualifyingNumber,this.VATQualifying,this.CurrentRetailerOfferPrice,this.GssnId,this.NoImage,this.RegistrationNumber,this.RegistrationDate,this.Mileage,this.TradeInDate,this.VID,this.EmissionCombined,this.EmissionDirective,this.NormalisedEmissionDirective,this.HasMildHybridEquipmentCode,this.Acceleration,this.ChassisNumber,this.NumberOfDoors,this.NumberOfSeats,this.SpecialInfo,this.EligibleForIntegratedServiceCare,this.ConsumptionCombined,this.ConsumptionExtraUrban,this.ConsumptionUrban,this.WltpFuelConsumptionCombined,this.WltpFuelConsumptionExtraHigh,this.WltpFuelConsumptionHigh,this.WltpFuelConsumptionLow,this.WltpFuelConsumptionMedium,this.EnergyEfficiencyClass,this.Equipment,this.EquipmentAdditional,this.EquipmentCategories,this.VehicleData,this.IntegratedServiceCareOptions,this.IspVehicleCustomerDescriptions,this.MarketingCode,this.EligibleForMaTransfer,this.ConfirmedProductionDate,this.ForecastedArrivalDate});
    BackOrderVehicleDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Vin = json['Vin'];
        CommissionNumber = json['CommissionNumber'];
        Description = json['Description'];
        ShortDescription = json['ShortDescription'];
        ModelId = json['ModelId'];
        Model = json['Model'];
        FullModelYearCode = json['FullModelYearCode'];
        BrandId = json['BrandId'];
        Brand = JsonConverters.fromJson(json['Brand'],'BackOrderVehicleDetailsBrand',context!);
        RetailerId = json['RetailerId'];
        ImageUrl = json['ImageUrl'];
        Colour = json['Colour'];
        ColourCode = json['ColourCode'];
        FuelType = json['FuelType'];
        FuelTypeId = json['FuelTypeId'];
        Transmission = json['Transmission'];
        TransmissionType = json['TransmissionType'];
        Engine = JsonConverters.fromJson(json['Engine'],'Engine',context!);
        EngineBadge = json['EngineBadge'];
        Package = json['Package'];
        Line = json['Line'];
        Upholstery = json['Upholstery'];
        UpholsteryCode = json['UpholsteryCode'];
        UsageCode = json['UsageCode'];
        Account = json['Account'];
        AccountType = json['AccountType'];
        NST = json['NST'];
        Baumuster = json['Baumuster'];
        ElectricRange = JsonConverters.toDouble(json['ElectricRange']);
        ElectricConsumption = JsonConverters.toDouble(json['ElectricConsumption']);
        ActualPrice = JsonConverters.toDouble(json['ActualPrice']);
        OTRPrice = JsonConverters.toDouble(json['OTRPrice']);
        RetailPriceExVat = JsonConverters.toDouble(json['RetailPriceExVat']);
        P11D = JsonConverters.toDouble(json['P11D']);
        VehicleType = json['VehicleType'];
        UpholsteryDescription = json['UpholsteryDescription'];
        UpholsteryType = json['UpholsteryType'];
        BodyStyle = json['BodyStyle'];
        BodyStyleStyleCode = json['BodyStyleStyleCode'];
        BodyStyleStyleCodeElectric = json['BodyStyleStyleCodeElectric'];
        BodyStyleStyleCodeHybrid = json['BodyStyleStyleCodeHybrid'];
        AvailablePackages = JsonConverters.fromJson(json['AvailablePackages'],'List<String>',context!);
        Mapped_Line = json['Mapped_Line'];
        Secured = json['Secured'];
        Bm7NST = json['Bm7NST'];
        IsAvailableOnline = json['IsAvailableOnline'];
        IsSpecialistCar = json['IsSpecialistCar'];
        IsSellable = json['IsSellable'];
        UnderOffer = json['UnderOffer'];
        VehicleAuditDetails = JsonConverters.fromJson(json['VehicleAuditDetails'],'List<VehicleAuditDetails>',context!);
        Retailer = JsonConverters.fromJson(json['Retailer'],'Retailer',context!);
        Media = JsonConverters.fromJson(json['Media'],'Media',context!);
        Emission = JsonConverters.toDouble(json['Emission']);
        ColourGroup = json['ColourGroup'];
        VehicleClass = json['VehicleClass'];
        ProductRange = json['ProductRange'];
        IsHOBackOrderAccountVehicle = json['IsHOBackOrderAccountVehicle'];
        IsAllocatedToBackOrder = json['IsAllocatedToBackOrder'];
        InBackOrderAccount = json['InBackOrderAccount'];
        DeliveryCharge = JsonConverters.toDouble(json['DeliveryCharge']);
        DeliveryChargeNet = JsonConverters.toDouble(json['DeliveryChargeNet']);
        DeliveryChargeVAT = JsonConverters.toDouble(json['DeliveryChargeVAT']);
        Plates = JsonConverters.toDouble(json['Plates']);
        PlatesNet = JsonConverters.toDouble(json['PlatesNet']);
        PlatesVAT = JsonConverters.toDouble(json['PlatesVAT']);
        FuelCharge = JsonConverters.toDouble(json['FuelCharge']);
        FuelChargeNet = JsonConverters.toDouble(json['FuelChargeNet']);
        FuelChargeVAT = JsonConverters.toDouble(json['FuelChargeVAT']);
        RetailPrice_ExVAT = JsonConverters.toDouble(json['RetailPrice_ExVAT']);
        RetailPrice_IncVAT = JsonConverters.toDouble(json['RetailPrice_IncVAT']);
        VED_Year1 = JsonConverters.toDouble(json['VED_Year1']);
        VED_Year2 = JsonConverters.toDouble(json['VED_Year2']);
        FirstRegFee = JsonConverters.toDouble(json['FirstRegFee']);
        OTR_Value = JsonConverters.toDouble(json['OTR_Value']);
        OTR = JsonConverters.toDouble(json['OTR']);
        Prices = JsonConverters.fromJson(json['Prices'],'List<Price>',context!);
        ProductionDate = json['ProductionDate'];
        PortArrivalDate = JsonConverters.fromJson(json['PortArrivalDate'],'DateTime',context!);
        Location = json['Location'];
        IsDisplayStock = json['IsDisplayStock'];
        DisplayRetailerId = json['DisplayRetailerId'];
        DisplayRetailer = json['DisplayRetailer'];
        DisplayRetailerGssnId = json['DisplayRetailerGssnId'];
        DisplayRetailerMarketAreaId = json['DisplayRetailerMarketAreaId'];
        IsSmartDisplayRetailer = json['IsSmartDisplayRetailer'];
        ColourDescription = json['ColourDescription'];
        Creation = JsonConverters.fromJson(json['Creation'],'DateTime',context!);
        Modified = JsonConverters.fromJson(json['Modified'],'DateTime',context!);
        VATQualifyingNumber = json['VATQualifyingNumber'];
        VATQualifying = json['VATQualifying'];
        CurrentRetailerOfferPrice = JsonConverters.toDouble(json['CurrentRetailerOfferPrice']);
        GssnId = json['GssnId'];
        NoImage = json['NoImage'];
        RegistrationNumber = json['RegistrationNumber'];
        RegistrationDate = JsonConverters.fromJson(json['RegistrationDate'],'DateTime',context!);
        Mileage = json['Mileage'];
        TradeInDate = JsonConverters.fromJson(json['TradeInDate'],'DateTime',context!);
        VID = json['VID'];
        EmissionCombined = json['EmissionCombined'];
        EmissionDirective = json['EmissionDirective'];
        NormalisedEmissionDirective = json['NormalisedEmissionDirective'];
        HasMildHybridEquipmentCode = json['HasMildHybridEquipmentCode'];
        Acceleration = JsonConverters.toDouble(json['Acceleration']);
        ChassisNumber = json['ChassisNumber'];
        NumberOfDoors = json['NumberOfDoors'];
        NumberOfSeats = json['NumberOfSeats'];
        SpecialInfo = json['SpecialInfo'];
        EligibleForIntegratedServiceCare = json['EligibleForIntegratedServiceCare'];
        ConsumptionCombined = JsonConverters.fromJson(json['ConsumptionCombined'],'Consumption',context!);
        ConsumptionExtraUrban = JsonConverters.fromJson(json['ConsumptionExtraUrban'],'Consumption',context!);
        ConsumptionUrban = JsonConverters.fromJson(json['ConsumptionUrban'],'Consumption',context!);
        WltpFuelConsumptionCombined = JsonConverters.fromJson(json['WltpFuelConsumptionCombined'],'Consumption',context!);
        WltpFuelConsumptionExtraHigh = JsonConverters.fromJson(json['WltpFuelConsumptionExtraHigh'],'Consumption',context!);
        WltpFuelConsumptionHigh = JsonConverters.fromJson(json['WltpFuelConsumptionHigh'],'Consumption',context!);
        WltpFuelConsumptionLow = JsonConverters.fromJson(json['WltpFuelConsumptionLow'],'Consumption',context!);
        WltpFuelConsumptionMedium = JsonConverters.fromJson(json['WltpFuelConsumptionMedium'],'Consumption',context!);
        EnergyEfficiencyClass = JsonConverters.fromJson(json['EnergyEfficiencyClass'],'EmissionClass',context!);
        Equipment = JsonConverters.fromJson(json['Equipment'],'List<Equipmentv2>',context!);
        EquipmentAdditional = JsonConverters.fromJson(json['EquipmentAdditional'],'List<Equipment>',context!);
        EquipmentCategories = JsonConverters.fromJson(json['EquipmentCategories'],'List<EquipmentCategoryv2>',context!);
        VehicleData = JsonConverters.fromJson(json['VehicleData'],'List<VehicleAttribute>',context!);
        IntegratedServiceCareOptions = JsonConverters.fromJson(json['IntegratedServiceCareOptions'],'List<IntegratedServiceCareOptions>',context!);
        IspVehicleCustomerDescriptions = JsonConverters.fromJson(json['IspVehicleCustomerDescriptions'],'List<String>',context!);
        MarketingCode = json['MarketingCode'];
        EligibleForMaTransfer = json['EligibleForMaTransfer'];
        ConfirmedProductionDate = json['ConfirmedProductionDate'];
        ForecastedArrivalDate = json['ForecastedArrivalDate'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Vin': Vin,
        'CommissionNumber': CommissionNumber,
        'Description': Description,
        'ShortDescription': ShortDescription,
        'ModelId': ModelId,
        'Model': Model,
        'FullModelYearCode': FullModelYearCode,
        'BrandId': BrandId,
        'Brand': JsonConverters.toJson(Brand,'BackOrderVehicleDetailsBrand',context!),
        'RetailerId': RetailerId,
        'ImageUrl': ImageUrl,
        'Colour': Colour,
        'ColourCode': ColourCode,
        'FuelType': FuelType,
        'FuelTypeId': FuelTypeId,
        'Transmission': Transmission,
        'TransmissionType': TransmissionType,
        'Engine': JsonConverters.toJson(Engine,'Engine',context!),
        'EngineBadge': EngineBadge,
        'Package': Package,
        'Line': Line,
        'Upholstery': Upholstery,
        'UpholsteryCode': UpholsteryCode,
        'UsageCode': UsageCode,
        'Account': Account,
        'AccountType': AccountType,
        'NST': NST,
        'Baumuster': Baumuster,
        'ElectricRange': ElectricRange,
        'ElectricConsumption': ElectricConsumption,
        'ActualPrice': ActualPrice,
        'OTRPrice': OTRPrice,
        'RetailPriceExVat': RetailPriceExVat,
        'P11D': P11D,
        'VehicleType': VehicleType,
        'UpholsteryDescription': UpholsteryDescription,
        'UpholsteryType': UpholsteryType,
        'BodyStyle': BodyStyle,
        'BodyStyleStyleCode': BodyStyleStyleCode,
        'BodyStyleStyleCodeElectric': BodyStyleStyleCodeElectric,
        'BodyStyleStyleCodeHybrid': BodyStyleStyleCodeHybrid,
        'AvailablePackages': JsonConverters.toJson(AvailablePackages,'List<String>',context!),
        'Mapped_Line': Mapped_Line,
        'Secured': Secured,
        'Bm7NST': Bm7NST,
        'IsAvailableOnline': IsAvailableOnline,
        'IsSpecialistCar': IsSpecialistCar,
        'IsSellable': IsSellable,
        'UnderOffer': UnderOffer,
        'VehicleAuditDetails': JsonConverters.toJson(VehicleAuditDetails,'List<VehicleAuditDetails>',context!),
        'Retailer': JsonConverters.toJson(Retailer,'Retailer',context!),
        'Media': JsonConverters.toJson(Media,'Media',context!),
        'Emission': Emission,
        'ColourGroup': ColourGroup,
        'VehicleClass': VehicleClass,
        'ProductRange': ProductRange,
        'IsHOBackOrderAccountVehicle': IsHOBackOrderAccountVehicle,
        'IsAllocatedToBackOrder': IsAllocatedToBackOrder,
        'InBackOrderAccount': InBackOrderAccount,
        'DeliveryCharge': DeliveryCharge,
        'DeliveryChargeNet': DeliveryChargeNet,
        'DeliveryChargeVAT': DeliveryChargeVAT,
        'Plates': Plates,
        'PlatesNet': PlatesNet,
        'PlatesVAT': PlatesVAT,
        'FuelCharge': FuelCharge,
        'FuelChargeNet': FuelChargeNet,
        'FuelChargeVAT': FuelChargeVAT,
        'RetailPrice_ExVAT': RetailPrice_ExVAT,
        'RetailPrice_IncVAT': RetailPrice_IncVAT,
        'VED_Year1': VED_Year1,
        'VED_Year2': VED_Year2,
        'FirstRegFee': FirstRegFee,
        'OTR_Value': OTR_Value,
        'OTR': OTR,
        'Prices': JsonConverters.toJson(Prices,'List<Price>',context!),
        'ProductionDate': ProductionDate,
        'PortArrivalDate': JsonConverters.toJson(PortArrivalDate,'DateTime',context!),
        'Location': Location,
        'IsDisplayStock': IsDisplayStock,
        'DisplayRetailerId': DisplayRetailerId,
        'DisplayRetailer': DisplayRetailer,
        'DisplayRetailerGssnId': DisplayRetailerGssnId,
        'DisplayRetailerMarketAreaId': DisplayRetailerMarketAreaId,
        'IsSmartDisplayRetailer': IsSmartDisplayRetailer,
        'ColourDescription': ColourDescription,
        'Creation': JsonConverters.toJson(Creation,'DateTime',context!),
        'Modified': JsonConverters.toJson(Modified,'DateTime',context!),
        'VATQualifyingNumber': VATQualifyingNumber,
        'VATQualifying': VATQualifying,
        'CurrentRetailerOfferPrice': CurrentRetailerOfferPrice,
        'GssnId': GssnId,
        'NoImage': NoImage,
        'RegistrationNumber': RegistrationNumber,
        'RegistrationDate': JsonConverters.toJson(RegistrationDate,'DateTime',context!),
        'Mileage': Mileage,
        'TradeInDate': JsonConverters.toJson(TradeInDate,'DateTime',context!),
        'VID': VID,
        'EmissionCombined': EmissionCombined,
        'EmissionDirective': EmissionDirective,
        'NormalisedEmissionDirective': NormalisedEmissionDirective,
        'HasMildHybridEquipmentCode': HasMildHybridEquipmentCode,
        'Acceleration': Acceleration,
        'ChassisNumber': ChassisNumber,
        'NumberOfDoors': NumberOfDoors,
        'NumberOfSeats': NumberOfSeats,
        'SpecialInfo': SpecialInfo,
        'EligibleForIntegratedServiceCare': EligibleForIntegratedServiceCare,
        'ConsumptionCombined': JsonConverters.toJson(ConsumptionCombined,'Consumption',context!),
        'ConsumptionExtraUrban': JsonConverters.toJson(ConsumptionExtraUrban,'Consumption',context!),
        'ConsumptionUrban': JsonConverters.toJson(ConsumptionUrban,'Consumption',context!),
        'WltpFuelConsumptionCombined': JsonConverters.toJson(WltpFuelConsumptionCombined,'Consumption',context!),
        'WltpFuelConsumptionExtraHigh': JsonConverters.toJson(WltpFuelConsumptionExtraHigh,'Consumption',context!),
        'WltpFuelConsumptionHigh': JsonConverters.toJson(WltpFuelConsumptionHigh,'Consumption',context!),
        'WltpFuelConsumptionLow': JsonConverters.toJson(WltpFuelConsumptionLow,'Consumption',context!),
        'WltpFuelConsumptionMedium': JsonConverters.toJson(WltpFuelConsumptionMedium,'Consumption',context!),
        'EnergyEfficiencyClass': JsonConverters.toJson(EnergyEfficiencyClass,'EmissionClass',context!),
        'Equipment': JsonConverters.toJson(Equipment,'List<Equipmentv2>',context!),
        'EquipmentAdditional': JsonConverters.toJson(EquipmentAdditional,'List<Equipment>',context!),
        'EquipmentCategories': JsonConverters.toJson(EquipmentCategories,'List<EquipmentCategoryv2>',context!),
        'VehicleData': JsonConverters.toJson(VehicleData,'List<VehicleAttribute>',context!),
        'IntegratedServiceCareOptions': JsonConverters.toJson(IntegratedServiceCareOptions,'List<IntegratedServiceCareOptions>',context!),
        'IspVehicleCustomerDescriptions': JsonConverters.toJson(IspVehicleCustomerDescriptions,'List<String>',context!),
        'MarketingCode': MarketingCode,
        'EligibleForMaTransfer': EligibleForMaTransfer,
        'ConfirmedProductionDate': ConfirmedProductionDate,
        'ForecastedArrivalDate': ForecastedArrivalDate
    };

    getTypeName() => "BackOrderVehicleDetails";
    TypeContext? context = _ctx;
}

class Package implements IConvertible
{
    int? Id;
    String? Description;

    Package({this.Id,this.Description});
    Package.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Description = json['Description'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Description': Description
    };

    getTypeName() => "Package";
    TypeContext? context = _ctx;
}

class BackOrderVehicleDetailsWithPackages extends BackOrderVehicleDetails implements IPackages, IConvertible
{
    List<Package>? Packages;
    String? PackageNames;

    BackOrderVehicleDetailsWithPackages({this.Packages,this.PackageNames});
    BackOrderVehicleDetailsWithPackages.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Packages = JsonConverters.fromJson(json['Packages'],'List<Package>',context!);
        PackageNames = json['PackageNames'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Packages': JsonConverters.toJson(Packages,'List<Package>',context!),
        'PackageNames': PackageNames
    });

    getTypeName() => "BackOrderVehicleDetailsWithPackages";
    TypeContext? context = _ctx;
}

class CarConfiguratorVehicle extends BackOrderVehicleDetailsWithPackages implements IConvertible
{
    String? ModelYearCode;
    String? HalfModelYearCode;
    List<int>? ActiveOffers = [];
    bool? EligibleForMotability;
    bool? NearestPort;

    CarConfiguratorVehicle({this.ModelYearCode,this.HalfModelYearCode,this.ActiveOffers,this.EligibleForMotability,this.NearestPort});
    CarConfiguratorVehicle.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        ModelYearCode = json['ModelYearCode'];
        HalfModelYearCode = json['HalfModelYearCode'];
        ActiveOffers = JsonConverters.fromJson(json['ActiveOffers'],'List<int>',context!);
        EligibleForMotability = json['EligibleForMotability'];
        NearestPort = json['NearestPort'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'ModelYearCode': ModelYearCode,
        'HalfModelYearCode': HalfModelYearCode,
        'ActiveOffers': JsonConverters.toJson(ActiveOffers,'List<int>',context!),
        'EligibleForMotability': EligibleForMotability,
        'NearestPort': NearestPort
    });

    getTypeName() => "CarConfiguratorVehicle";
    TypeContext? context = _ctx;
}

class CarConfiguratorStockMatch implements IConvertible
{
    CarConfiguratorVehicle? Vehicle;
    bool? IsSellable;
    String? VehicleWheels;
    String? VehicleTrim;
    List<String>? VehicleAdditionalOptionCodes = [];
    List<String>? FullModelYearDifferences = [];
    List<String>? PaintDifferences = [];
    List<String>? UpholsteryDifferences = [];
    List<String>? WheelDifferences = [];
    List<String>? TrimDifferences = [];
    List<String>? EquipmentDifferences = [];
    List<String>? Differences = [];
    bool? ExactMatch;

    CarConfiguratorStockMatch({this.Vehicle,this.IsSellable,this.VehicleWheels,this.VehicleTrim,this.VehicleAdditionalOptionCodes,this.FullModelYearDifferences,this.PaintDifferences,this.UpholsteryDifferences,this.WheelDifferences,this.TrimDifferences,this.EquipmentDifferences,this.Differences,this.ExactMatch});
    CarConfiguratorStockMatch.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Vehicle = JsonConverters.fromJson(json['Vehicle'],'CarConfiguratorVehicle',context!);
        IsSellable = json['IsSellable'];
        VehicleWheels = json['VehicleWheels'];
        VehicleTrim = json['VehicleTrim'];
        VehicleAdditionalOptionCodes = JsonConverters.fromJson(json['VehicleAdditionalOptionCodes'],'List<String>',context!);
        FullModelYearDifferences = JsonConverters.fromJson(json['FullModelYearDifferences'],'List<String>',context!);
        PaintDifferences = JsonConverters.fromJson(json['PaintDifferences'],'List<String>',context!);
        UpholsteryDifferences = JsonConverters.fromJson(json['UpholsteryDifferences'],'List<String>',context!);
        WheelDifferences = JsonConverters.fromJson(json['WheelDifferences'],'List<String>',context!);
        TrimDifferences = JsonConverters.fromJson(json['TrimDifferences'],'List<String>',context!);
        EquipmentDifferences = JsonConverters.fromJson(json['EquipmentDifferences'],'List<String>',context!);
        Differences = JsonConverters.fromJson(json['Differences'],'List<String>',context!);
        ExactMatch = json['ExactMatch'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Vehicle': JsonConverters.toJson(Vehicle,'CarConfiguratorVehicle',context!),
        'IsSellable': IsSellable,
        'VehicleWheels': VehicleWheels,
        'VehicleTrim': VehicleTrim,
        'VehicleAdditionalOptionCodes': JsonConverters.toJson(VehicleAdditionalOptionCodes,'List<String>',context!),
        'FullModelYearDifferences': JsonConverters.toJson(FullModelYearDifferences,'List<String>',context!),
        'PaintDifferences': JsonConverters.toJson(PaintDifferences,'List<String>',context!),
        'UpholsteryDifferences': JsonConverters.toJson(UpholsteryDifferences,'List<String>',context!),
        'WheelDifferences': JsonConverters.toJson(WheelDifferences,'List<String>',context!),
        'TrimDifferences': JsonConverters.toJson(TrimDifferences,'List<String>',context!),
        'EquipmentDifferences': JsonConverters.toJson(EquipmentDifferences,'List<String>',context!),
        'Differences': JsonConverters.toJson(Differences,'List<String>',context!),
        'ExactMatch': ExactMatch
    };

    getTypeName() => "CarConfiguratorStockMatch";
    TypeContext? context = _ctx;
}

class CarConfiguratorStockMatches implements IConvertible
{
    List<CarConfiguratorStockMatch>? SellableMatches = [];
    List<CarConfiguratorStockMatch>? NonSellableMatches = [];

    CarConfiguratorStockMatches({this.SellableMatches,this.NonSellableMatches});
    CarConfiguratorStockMatches.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SellableMatches = JsonConverters.fromJson(json['SellableMatches'],'List<CarConfiguratorStockMatch>',context!);
        NonSellableMatches = JsonConverters.fromJson(json['NonSellableMatches'],'List<CarConfiguratorStockMatch>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SellableMatches': JsonConverters.toJson(SellableMatches,'List<CarConfiguratorStockMatch>',context!),
        'NonSellableMatches': JsonConverters.toJson(NonSellableMatches,'List<CarConfiguratorStockMatch>',context!)
    };

    getTypeName() => "CarConfiguratorStockMatches";
    TypeContext? context = _ctx;
}

class CarConfiguratorStockResponse implements IConvertible
{
    int? TotalVehicles;
    CarConfiguratorResponse? CarConfiguratorResponse;
    CarConfiguratorStockMatches? ExactMatches;
    CarConfiguratorStockMatches? CloseMatches;

    CarConfiguratorStockResponse({this.TotalVehicles,this.CarConfiguratorResponse,this.ExactMatches,this.CloseMatches});
    CarConfiguratorStockResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TotalVehicles = json['TotalVehicles'];
        CarConfiguratorResponse = JsonConverters.fromJson(json['CarConfiguratorResponse'],'CarConfiguratorResponse',context!);
        ExactMatches = JsonConverters.fromJson(json['ExactMatches'],'CarConfiguratorStockMatches',context!);
        CloseMatches = JsonConverters.fromJson(json['CloseMatches'],'CarConfiguratorStockMatches',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TotalVehicles': TotalVehicles,
        'CarConfiguratorResponse': JsonConverters.toJson(CarConfiguratorResponse,'CarConfiguratorResponse',context!),
        'ExactMatches': JsonConverters.toJson(ExactMatches,'CarConfiguratorStockMatches',context!),
        'CloseMatches': JsonConverters.toJson(CloseMatches,'CarConfiguratorStockMatches',context!)
    };

    getTypeName() => "CarConfiguratorStockResponse";
    TypeContext? context = _ctx;
}

class CarConfiguratorStockRequest implements IPost, IConvertible
{
    /**
    * The configurator code to search on
    */
    // @ApiMember(Description="The configurator code to search on", IsRequired=true)
    String? ConfiguratorCode;

    /**
    * Whether to return sellable vehicles
    */
    // @ApiMember(Description="Whether to return sellable vehicles")
    bool? IsSellable;

    /**
    * Whether to only get exact matches
    */
    // @ApiMember(Description="Whether to only get exact matches")
    bool? ExactMatch;

    /**
    * Whether to restrict vehicles response to a GSSN
    */
    // @ApiMember(Description="Whether to restrict vehicles response to a GSSN")
    String? GSSN;

    CarConfiguratorStockRequest({this.ConfiguratorCode,this.IsSellable,this.ExactMatch,this.GSSN});
    CarConfiguratorStockRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ConfiguratorCode = json['ConfiguratorCode'];
        IsSellable = json['IsSellable'];
        ExactMatch = json['ExactMatch'];
        GSSN = json['GSSN'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ConfiguratorCode': ConfiguratorCode,
        'IsSellable': IsSellable,
        'ExactMatch': ExactMatch,
        'GSSN': GSSN
    };

    getTypeName() => "CarConfiguratorStockRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'prod_api_agency_orch_mb_dhc.rapp_customers.co.uk', types: <String, TypeInfo> {
    'KeyInformation': TypeInfo(TypeOf.Class, create:() => KeyInformation()),
    'EquipmentCache': TypeInfo(TypeOf.Class, create:() => EquipmentCache()),
    'OrderingOptions': TypeInfo(TypeOf.Class, create:() => OrderingOptions()),
    'List<EquipmentCache>': TypeInfo(TypeOf.Class, create:() => <EquipmentCache>[]),
    'CarConfiguratorResponse': TypeInfo(TypeOf.Class, create:() => CarConfiguratorResponse()),
    'BackOrderVehicleDetailsBrand': TypeInfo(TypeOf.Class, create:() => BackOrderVehicleDetailsBrand()),
    'Engine': TypeInfo(TypeOf.Class, create:() => Engine()),
    'VehicleAuditDetails': TypeInfo(TypeOf.Class, create:() => VehicleAuditDetails()),
    'RetailerService': TypeInfo(TypeOf.Class, create:() => RetailerService()),
    'RetailerServices': TypeInfo(TypeOf.Class, create:() => RetailerServices()),
    'List<RetailerService>': TypeInfo(TypeOf.Class, create:() => <RetailerService>[]),
    'RetailerOpeningTime': TypeInfo(TypeOf.Class, create:() => RetailerOpeningTime()),
    'RetailerOpeningTimes': TypeInfo(TypeOf.Class, create:() => RetailerOpeningTimes()),
    'List<RetailerOpeningTime>': TypeInfo(TypeOf.Class, create:() => <RetailerOpeningTime>[]),
    'Retailer': TypeInfo(TypeOf.Class, create:() => Retailer()),
    'Media': TypeInfo(TypeOf.Class, create:() => Media()),
    'OfferPriceProductType': TypeInfo(TypeOf.Enum, enumValues:OfferPriceProductType.values),
    'Price': TypeInfo(TypeOf.Class, create:() => Price()),
    'Consumption': TypeInfo(TypeOf.Class, create:() => Consumption()),
    'EmissionClass': TypeInfo(TypeOf.Class, create:() => EmissionClass()),
    'Equipment': TypeInfo(TypeOf.Class, create:() => Equipment()),
    'Equipmentv2': TypeInfo(TypeOf.Class, create:() => Equipmentv2()),
    'EquipmentCategoryv2': TypeInfo(TypeOf.Class, create:() => EquipmentCategoryv2()),
    'List<Equipmentv2>': TypeInfo(TypeOf.Class, create:() => <Equipmentv2>[]),
    'VehicleAttribute': TypeInfo(TypeOf.Class, create:() => VehicleAttribute()),
    'IntegratedServiceCareOptions': TypeInfo(TypeOf.Class, create:() => IntegratedServiceCareOptions()),
    'BackOrderVehicleDetails': TypeInfo(TypeOf.Class, create:() => BackOrderVehicleDetails()),
    'List<VehicleAuditDetails>': TypeInfo(TypeOf.Class, create:() => <VehicleAuditDetails>[]),
    'List<Price>': TypeInfo(TypeOf.Class, create:() => <Price>[]),
    'List<Equipment>': TypeInfo(TypeOf.Class, create:() => <Equipment>[]),
    'List<EquipmentCategoryv2>': TypeInfo(TypeOf.Class, create:() => <EquipmentCategoryv2>[]),
    'List<VehicleAttribute>': TypeInfo(TypeOf.Class, create:() => <VehicleAttribute>[]),
    'List<IntegratedServiceCareOptions>': TypeInfo(TypeOf.Class, create:() => <IntegratedServiceCareOptions>[]),
    'Package': TypeInfo(TypeOf.Class, create:() => Package()),
    'BackOrderVehicleDetailsWithPackages': TypeInfo(TypeOf.Class, create:() => BackOrderVehicleDetailsWithPackages()),
    'List<Package>': TypeInfo(TypeOf.Class, create:() => <Package>[]),
    'CarConfiguratorVehicle': TypeInfo(TypeOf.Class, create:() => CarConfiguratorVehicle()),
    'CarConfiguratorStockMatch': TypeInfo(TypeOf.Class, create:() => CarConfiguratorStockMatch()),
    'CarConfiguratorStockMatches': TypeInfo(TypeOf.Class, create:() => CarConfiguratorStockMatches()),
    'List<CarConfiguratorStockMatch>': TypeInfo(TypeOf.Class, create:() => <CarConfiguratorStockMatch>[]),
    'CarConfiguratorStockResponse': TypeInfo(TypeOf.Class, create:() => CarConfiguratorStockResponse()),
    'CarConfiguratorStockRequest': TypeInfo(TypeOf.Class, create:() => CarConfiguratorStockRequest()),
});

Dart CarConfiguratorStockRequest DTOs

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

HTTP + JSV

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

POST /v1/CarConfiguratorStock HTTP/1.1 
Host: prod-api-agency-orch-mb-dhc.rapp-customers.co.uk 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	ConfiguratorCode: String,
	IsSellable: False,
	ExactMatch: False,
	GSSN: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	TotalVehicles: 4,
	CarConfiguratorResponse: 
	{
		Name: String,
		KeyInformation: 
		{
			BM7NST: String,
			ConfigurationDate: String,
			ModelYear: String,
			HalfYear: String
		},
		OrderingOptions: 
		{
			Interior: 
			[
				String
			],
			Exterior: 
			[
				String
			],
			Options: 
			[
				String
			],
			WheelOptions: 
			[
				{
					Code: String,
					Description: String,
					StandardFlag: String,
					Price: 0,
					Category: String,
					Importance: String
				}
			],
			TrimOptions: 
			[
				{
					Code: String,
					Description: String,
					StandardFlag: String,
					Price: 0,
					Category: String,
					Importance: String
				}
			],
			OptionCodes: 
			[
				{
					Code: String,
					Description: String,
					StandardFlag: String,
					Price: 0,
					Category: String,
					Importance: String
				}
			]
		},
		ResponseStatus: 
		{
			ErrorCode: String,
			Message: String,
			StackTrace: String,
			Errors: 
			[
				{
					ErrorCode: String,
					FieldName: String,
					Message: String,
					Meta: 
					{
						String: String
					}
				}
			],
			Meta: 
			{
				String: String
			}
		},
		ConfiguratorCode: String
	},
	ExactMatches: 
	{
		SellableMatches: 
		[
			{
				
			}
		],
		NonSellableMatches: 
		[
			{
				
			}
		]
	},
	CloseMatches: 
	{
		SellableMatches: 
		[
			{
				
			}
		],
		NonSellableMatches: 
		[
			{
				
			}
		]
	}
}