""" Options: Date: 2025-06-27 21:12:27 Version: 8.81 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://uat-api-vehicle-mgt-mb-dhc.rapp-customers.co.uk #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: CentralVehiclesRequest.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ 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 class IDataShapedRequest: fields: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VehicleDataBase: vin: Optional[str] = None description: Optional[str] = None model: Optional[str] = None otr: Optional[str] = None retail_price_ex_v_a_t: Optional[str] = None actual_price: Optional[str] = None fuel_type: Optional[str] = None transmission: Optional[str] = None transmission_type: Optional[str] = None colour: Optional[str] = None colour_code: Optional[str] = None colour_description: Optional[str] = None commission_number: Optional[str] = None offer_available: bool = False campaign_discount_offer_total: int = 0 campaign_discount_offer_total_current: int = 0 campaign_discount_offer_total_pending: int = 0 campaign_service_offer_total: int = 0 campaign_service_offer_total_current: int = 0 campaign_service_offer_total_pending: int = 0 campaign_custom_offer_total: int = 0 campaign_personalised_offer_total_current: int = 0 campaign_personalised_offer_total_pending: int = 0 campaign_personalised_offer_total: int = 0 campaign_custom_offer_total_current: int = 0 campaign_custom_offer_total_pending: int = 0 campaign_other_offer_total: int = 0 campaign_other_offer_total_current: int = 0 campaign_other_offer_total_pending: int = 0 retailer_discount_offer_total: int = 0 retailer_discount_offer_total_current: int = 0 retailer_discount_offer_total_pending: int = 0 retailer_service_offer_total: int = 0 retailer_service_offer_total_current: int = 0 retailer_service_offer_total_pending: int = 0 retailer_custom_offer_total: int = 0 retailer_custom_offer_total_current: int = 0 retailer_custom_offer_total_pending: int = 0 retailer_warranty_offer_total: int = 0 retailer_warranty_offer_total_current: int = 0 retailer_warranty_offer_total_pending: int = 0 retailer_offer_total: int = 0 retailer_offer_total_current: int = 0 retailer_offer_total_pending: int = 0 campaign_offer_total: int = 0 campaign_offer_total_current: int = 0 campaign_offer_total_pending: int = 0 campaign_and_offer_total: int = 0 campaign_and_offer_total_current: int = 0 campaign_and_offer_total_pending: int = 0 offer_total: int = 0 offer_total_current: int = 0 offer_total_pending: int = 0 creation: Optional[str] = None modified: Optional[str] = None electric_range: int = 0 electric_consumption: int = 0 port_arrival_date: Optional[datetime.datetime] = None days_since_port_arrival: Optional[int] = None retail_price_inc_v_a_t: Decimal = decimal.Decimal(0) body_style: Optional[str] = None upholstery: Optional[str] = None upholstery_code: Optional[str] = None upholstery_type: Optional[str] = None package_names: List[str] = field(default_factory=list) line: Optional[str] = None current_retailer_offer_price: Decimal = decimal.Decimal(0) retail_price: Optional[str] = None vat_qualifying: bool = False retailer_id: int = 0 gssn_id: Optional[str] = None no_image: bool = False image_url: Optional[str] = None is_available_online: bool = False is_back_ordered: bool = False creation_date: Optional[str] = None maintenance_date: Optional[str] = None registration_number: Optional[str] = None registration_date: Optional[datetime.datetime] = None mileage: Optional[int] = None trade_in_date: Optional[datetime.datetime] = None source: Optional[str] = None vehicle_type: Optional[str] = None offer_amount: Optional[str] = None offer_expiry: Optional[str] = None active_offers: List[int] = field(default_factory=list) campaign_messages_total: int = 0 under_offer: bool = False is_display_stock: bool = False display_retailer: Optional[str] = None display_retailer_gssn_id: Optional[str] = None location: Optional[str] = None account: Optional[str] = None account_type: Optional[str] = None usage_code: Optional[str] = None bm7_n_s_t: Optional[str] = None is_sellable: bool = False secured: bool = False specialist: bool = False is_motability_retailer: bool = False upholstery_description: Optional[str] = None in_back_order_account: bool = False full_model_year_code: Optional[str] = None production_date: Optional[datetime.datetime] = None baumuster: Optional[str] = None is_motability: bool = False pip_advance_rental_gross: Optional[Decimal] = None wpms_advance_rental_gross: Optional[Decimal] = None isp_vehicle_customer_descriptions: Optional[List[str]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VehicleData(VehicleDataBase): engine: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Equipment: id: Optional[int] = None code: Optional[str] = None description: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VehicleIdentifierData(VehicleData): retailer: Optional[str] = None has_motability_error: bool = False equipment: List[Equipment] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VehiclesByRetailerResponse: vehicles: List[VehicleIdentifierData] = field(default_factory=list) # @Route("/v1/{VehicleType}/Vehicle/Central", "GET") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CentralVehiclesRequest(IReturn[VehiclesByRetailerResponse], IGet, IDataShapedRequest): vehicle_type: Optional[str] = None # @ApiMember(Description="If specified, the API will shape the data in the response to only include the specified fields", ParameterType="model") fields: Optional[str] = None """ If specified, the API will shape the data in the response to only include the specified fields """