Mercedes.VehicleManagement.API

<back to all web services

UpdateVehicleV2Request

Vehicle
Requires Authentication
The following routes are available for this service:
POST/v2/{VehicleType}/Vehicle/UpdateVehicleRefresh vehicle data for Nexus
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
Object = TypeVar('Object')


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Brand:
    id: int = 0
    description: Optional[str] = None
    display_name: Optional[str] = None
    enabled_new: bool = False
    enabled_used: bool = False
    body_styles: Optional[List[BodyStyle]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MappedFuelType:
    id: int = 0
    description: Optional[str] = None
    fuel_types: Optional[str] = None
    sort_order: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductRange:
    model_id: int = 0
    model: Optional[Model] = None
    fuel_type_id: int = 0
    mapped__fuel_type: Optional[MappedFuelType] = None
    product_range_code: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleClass:
    id: int = 0
    description: Optional[str] = None
    priority: int = 0
    vehicle_classes: Optional[List[Model]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Model:
    id: int = 0
    description: Optional[str] = None
    display_name: Optional[str] = None
    product_range: Optional[str] = None
    body_style__id: Optional[int] = None
    override_body_style_id: Optional[int] = None
    body_style: Optional[BodyStyle] = None
    product_ranges: Optional[List[ProductRange]] = None
    image_url_new: Optional[str] = None
    image_url_used: Optional[str] = None
    specialist_new: bool = False
    specialist_used: bool = False
    exclude_from_filters_new: bool = False
    exclude_from_filters_used: bool = False
    priority_new: int = 0
    priority_used: int = 0
    alternative_models_new: Optional[str] = None
    alternative_models_used: Optional[str] = None
    vehicle_class__id: Optional[int] = None
    vehicle_class: Optional[VehicleClass] = None
    one_web_model_url_new: Optional[str] = None
    one_web_model_url_used: Optional[str] = None
    last_edited: Optional[datetime.datetime] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BodyStyle:
    id: int = 0
    description: Optional[str] = None
    style_code: Optional[str] = None
    style_code_electric: Optional[str] = None
    style_code_hybrid: Optional[str] = None
    sort_order: int = 0
    brand: Optional[Brand] = None
    brand__id: Optional[int] = None
    models: Optional[List[Model]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Consumption:
    id: int = 0
    lkm: Decimal = decimal.Decimal(0)
    mpg: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RetailerGroup:
    id: int = 0
    retailer_group_id: Optional[str] = None
    retailer_group_name: Optional[str] = None
    creation_date: Optional[datetime.datetime] = None
    creation_source: Optional[str] = None
    maintenance_date: Optional[datetime.datetime] = None
    maintenance_source: Optional[str] = None
    priority_service_new: Optional[int] = None
    priority_service_used: Optional[int] = None
    legacy_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MarketArea:
    id: int = 0
    market_area_id: int = 0
    market_area_name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Port:
    id: int = 0
    creation: Optional[datetime.datetime] = None
    modified: Optional[datetime.datetime] = None
    description: Optional[str] = None
    latitude: float = 0.0
    longitude: float = 0.0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RetailerAccount:
    id: int = 0
    stp_number: Optional[str] = None
    retailer__id: int = 0
    retailer: Optional[Dealer] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Region:
    id: int = 0
    region_name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dealer:
    id: int = 0
    description: Optional[str] = None
    rod_code: Optional[str] = None
    gssn_outlet_id: Optional[str] = None
    latitude: float = 0.0
    longitude: float = 0.0
    retailer_group_id: Optional[str] = None
    street: Optional[str] = None
    city: Optional[str] = None
    district: Optional[str] = None
    postcode: Optional[str] = None
    phone: Optional[str] = None
    fax: Optional[str] = None
    email: Optional[str] = None
    website: Optional[str] = None
    is_online: bool = False
    is_new_car_retailer: bool = False
    is_used_car_retailer: bool = False
    is_central_retailer: bool = False
    campaign_excluded: bool = False
    creation_date: Optional[datetime.datetime] = None
    creation_source: Optional[str] = None
    maintenance_date: Optional[datetime.datetime] = None
    maintenance_source: Optional[str] = None
    chat_enabled: bool = False
    trade_in_enabled: bool = False
    retailer_group: Optional[RetailerGroup] = None
    retailer_group__id: Optional[int] = None
    market_area: Optional[MarketArea] = None
    market_area__id: Optional[int] = None
    display_phone_number_new: Optional[str] = None
    display_phone_number_used: Optional[str] = None
    smart: bool = False
    smart_description: Optional[str] = None
    smart_website: Optional[str] = None
    smart_email: Optional[str] = None
    smart_phone: Optional[str] = None
    additional_information: Optional[str] = None
    legacy_id: Optional[str] = None
    agent: bool = False
    port: Optional[Port] = None
    port__id: Optional[int] = None
    retailer_account: Optional[List[RetailerAccount]] = None
    digital_lounge_parent_gssn_id: Optional[str] = None
    send_leads_to_digital_lounge_parent: Optional[bool] = None
    is_excluded_from_import: Optional[bool] = None
    region__id: Optional[int] = None
    region: Optional[Region] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Engine:
    id: int = 0
    badge: Optional[str] = None
    brand__id: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MappedColourGroup:
    id: int = 0
    description: Optional[str] = None
    colours: Optional[str] = None
    image_url: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MappedTransmissionGroup:
    id: int = 0
    description: Optional[str] = None
    alias: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Upholstery:
    id: int = 0
    price: Optional[str] = None
    code: Optional[str] = None
    type: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Line:
    id: int = 0
    description: Optional[str] = None
    alias: Optional[str] = None
    overrides_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UsedCarImage:
    id: int = 0
    creation_date: datetime.datetime = datetime.datetime(1, 1, 1)
    creation_source: Optional[str] = None
    maintenance_date: Optional[datetime.datetime] = None
    maintenance_source: Optional[str] = None
    vehicle_id: int = 0
    vehicle: Optional[Vehicle] = None
    image_url: Optional[str] = None
    primary_image: bool = False
    perspective: Optional[str] = None
    index: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Packages:
    id: int = 0
    description: Optional[str] = None
    alias: Optional[str] = None
    overrides_id: Optional[str] = None
    package_data_overrides_id: Optional[str] = None
    vehicle_packages: Optional[List[VehiclePackage]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehiclePackage:
    vehicle_id: int = 0
    package_id: int = 0
    vehicle: Optional[Vehicle] = None
    package: Optional[Packages] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleSecured:
    id: int = 0
    reason: Optional[str] = None
    created: datetime.datetime = datetime.datetime(1, 1, 1)
    user_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleImage:
    id: int = 0
    commission_number: Optional[str] = None
    cached_image_url: Optional[str] = None
    image_descriptor: Optional[str] = None
    created_date: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VehicleSecuredAudit:
    id: int = 0
    user_id: Optional[str] = None
    mbuk_secured: bool = False
    vin: Optional[str] = None
    vehicle_type: Optional[str] = None
    reason: Optional[str] = None
    created: datetime.datetime = datetime.datetime(1, 1, 1)
    vehicle: Optional[Vehicle] = None
    commission_number: Optional[str] = None
    is_bulk_update: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Vehicle:
    id: int = 0
    vin: Optional[str] = None
    commission_number: Optional[str] = None
    is_all_wheel: bool = False
    is_a_m_g: bool = False
    is_available_online: bool = False
    is_sellable: bool = False
    is_display_stock: bool = False
    creation_date: datetime.datetime = datetime.datetime(1, 1, 1)
    maintenance_date: Optional[datetime.datetime] = None
    horse_power: Decimal = decimal.Decimal(0)
    delivery_charge: Decimal = decimal.Decimal(0)
    delivery_charge_net: Optional[Decimal] = None
    delivery_charge_v_a_t: Optional[Decimal] = None
    first_reg_fee: Decimal = decimal.Decimal(0)
    otr: Decimal = decimal.Decimal(0)
    p11_d: Decimal = decimal.Decimal(0)
    ot_r__value: Decimal = decimal.Decimal(0)
    actual_price: Optional[Decimal] = None
    total_offer_value: Optional[Decimal] = None
    campaign_offer_contribution: Optional[Decimal] = None
    retailer_offer_contribution: Optional[Decimal] = None
    campaign_government_grant_offer_contribution: Optional[Decimal] = None
    offer_expiry_date: Optional[datetime.datetime] = None
    has_non_monetary_offers: bool = False
    plates: Decimal = decimal.Decimal(0)
    plates_net: Optional[Decimal] = None
    plates_v_a_t: Optional[Decimal] = None
    fuel_charge: Decimal = decimal.Decimal(0)
    fuel_charge_net: Optional[Decimal] = None
    fuel_charge_v_a_t: Optional[Decimal] = None
    power_k_w: Decimal = decimal.Decimal(0)
    retail_price__ex_v_a_t: Decimal = decimal.Decimal(0)
    retail_price__inc_v_a_t: Decimal = decimal.Decimal(0)
    ve_d__year1: Decimal = decimal.Decimal(0)
    ve_d__year2: Decimal = decimal.Decimal(0)
    cc: int = 0
    cyclinders: int = 0
    baumuster: Optional[str] = None
    marketing_code: Optional[str] = None
    chassis_number: Optional[str] = None
    colour_description: Optional[str] = None
    colour_code: Optional[str] = None
    emission_combined: Optional[str] = None
    emission_directive: Optional[str] = None
    normalised_emission_directive: Optional[str] = None
    emission_extra_urban: Optional[str] = None
    emission_urban: Optional[str] = None
    energy_efficiency_class: Optional[str] = None
    wltp_emission_combined: Optional[str] = None
    image_url: Optional[str] = None
    line: Optional[str] = None
    model_year: Optional[str] = None
    model_year_code: Optional[str] = None
    half_model_year_code: Optional[str] = None
    nst: Optional[str] = None
    number_of_doors: Optional[str] = None
    number_of_gears: Optional[str] = None
    number_of_seats: Optional[str] = None
    rv_options: Optional[str] = None
    sales_description: Optional[str] = None
    sales_description_short: Optional[str] = None
    upholstery_code: Optional[str] = None
    upholstery_description: Optional[str] = None
    transmission_description: Optional[str] = None
    vehicle_category: Optional[str] = None
    vehicle_class: Optional[str] = None
    vehicle_type: Optional[str] = None
    vid: Optional[str] = None
    latest_model: bool = False
    port_arrival_date: Optional[datetime.datetime] = None
    production_date: Optional[datetime.datetime] = None
    confirmed_production_date: Optional[datetime.datetime] = None
    trade_in_date: Optional[datetime.datetime] = None
    electric_consumption: Optional[Decimal] = None
    electric_range: Optional[Decimal] = None
    location_type_name: Optional[str] = None
    cesar_id_ship_to_party: Optional[str] = None
    vehicle_usage_code: Optional[str] = None
    account: Optional[str] = None
    is_specialist_car: bool = False
    boot_capacity: Optional[int] = None
    drive_concept: Optional[str] = None
    drive_type: Optional[str] = None
    combustion_power_hp: Optional[Decimal] = None
    electric_power_kw: Optional[Decimal] = None
    electric_power_hp: Optional[Decimal] = None
    combined_power_kw: Optional[Decimal] = None
    combined_power_h_p: Optional[Decimal] = None
    mbuk_reserve: Optional[str] = None
    bm7_n_s_t: Optional[str] = None
    gb_dest_date: Optional[datetime.datetime] = None
    fin: Optional[str] = None
    body_style: Optional[BodyStyle] = None
    body_style__id: Optional[int] = None
    brand: Optional[Brand] = None
    brand_id: Optional[int] = None
    consumption_combined: Optional[Consumption] = None
    consumption_extra_urban: Optional[Consumption] = None
    consumption_urban: Optional[Consumption] = None
    wltp_fuel_consumption_extra_high: Optional[Consumption] = None
    wltp_fuel_consumption_high: Optional[Consumption] = None
    wltp_fuel_consumption_medium: Optional[Consumption] = None
    wltp_fuel_consumption_low: Optional[Consumption] = None
    wltp_fuel_consumption_combined: Optional[Consumption] = None
    dealer: Optional[Dealer] = None
    dealer__id: Optional[int] = None
    display_retailer: Optional[Dealer] = None
    display_retailer__id: Optional[int] = None
    engine: Optional[Engine] = None
    mapped__colour_group: Optional[MappedColourGroup] = None
    mapped__colour_group__id: Optional[int] = None
    mapped__fuel_type: Optional[MappedFuelType] = None
    mapped__fuel_type__id: Optional[int] = None
    mapped__transmission_group: Optional[MappedTransmissionGroup] = None
    model__id: Optional[int] = None
    model: Optional[Model] = None
    upholstery: Optional[Upholstery] = None
    upholstery__id: Optional[int] = None
    mapped__line: Optional[Line] = None
    mapped__line__id: Optional[int] = None
    mileage: Optional[int] = None
    condition: Optional[str] = None
    source: Optional[str] = None
    registration_date: Optional[datetime.datetime] = None
    registration_number: Optional[str] = None
    top_speed: Optional[Decimal] = None
    acceleration: Optional[Decimal] = None
    torque: Optional[Decimal] = None
    used_car_images: Optional[List[UsedCarImage]] = None
    tax_amount: Optional[Decimal] = None
    vat_qualifying: Optional[int] = None
    promo_code: Optional[str] = None
    campaign_promo_offer_contribution: Optional[Decimal] = None
    reserved: bool = False
    emission: Optional[Decimal] = None
    under_offer: bool = False
    allocated_to_back_order: bool = False
    paint_swatch_url: Optional[str] = None
    upholstery_swatch_url: Optional[str] = None
    packages: Optional[List[VehiclePackage]] = None
    secured: Optional[VehicleSecured] = None
    cached_image: Optional[VehicleImage] = None
    has_mild_hybrid_equipment_code: bool = False
    eligible_for_integrated_service_care: bool = False
    vehicle_secured_audit: Optional[List[VehicleSecuredAudit]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EquipmentCache:
    code: Optional[str] = None
    description: Optional[str] = None
    standard_flag: Optional[str] = None
    price: Decimal = decimal.Decimal(0)
    category: Optional[str] = None
    importance: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OpenSearchVehicle(Vehicle):
    vehicle_identifier: Optional[str] = None
    last_updated: datetime.datetime = datetime.datetime(1, 1, 1)
    equipment_cache_list: List[EquipmentCache] = field(default_factory=list)
    key: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UpdateVehicleV2Request(IPost):
    vehicle_identifier: Optional[str] = None
    vin: Optional[str] = None
    vehicle_type: Optional[str] = None


class ActionType(str, Enum):
    INSERT = 'Insert'
    UPDATE = 'Update'
    OFFLINE = 'Offline'
    NO_ACTION = 'NoAction'
    ERROR = 'Error'


TVehicle = TypeVar('TVehicle')


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProcessResult(Generic[TVehicle]):
    success: bool = False
    rejected: bool = False
    mapped_vehicle: Optional[OpenSearchVehicle] = None
    action: Optional[ActionType] = None

Python UpdateVehicleV2Request 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 /v2/{VehicleType}/Vehicle/UpdateVehicle HTTP/1.1 
Host: uat-api-vehicle-mgt-mb-dhc.rapp-customers.co.uk 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	vehicleIdentifier: String,
	vin: String,
	vehicleType: String
}