""" Options: Date: 2025-05-05 17:17:05 Version: 8.61 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://prod-api-agency-orch-mb-dhc.rapp-customers.co.uk #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: CreateOneAdminOrderRequest.* #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 Source(IntEnum): ONLINE_SHOWROOM = 1 ONE_ADMIN = 2 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: property: Optional[str] = None street: Optional[str] = None town: Optional[str] = None county: Optional[str] = None locality: Optional[str] = None postcode: Optional[str] = None class CustomerMode(IntEnum): PRIVATE = 1 BUSINESS = 2 MOTABILITY = 3 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SalesforceCustomer(ICustomer): customer_id: Optional[str] = None is_ciam: bool = False company_name: Optional[str] = None title: Optional[str] = None firstname: Optional[str] = None surname: Optional[str] = None email_address: Optional[str] = None telephone: Optional[str] = None address: Optional[Address] = None mode: Optional[CustomerMode] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Preferences: optin_email: bool = False optin_post: bool = False optin_s_m_s: bool = False optin_telephone: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Customer(SalesforceCustomer): profile_id: Optional[str] = None preferences: Optional[Preferences] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class OutrightPurchase: is_outright_purchase: bool = False reference: Optional[str] = None discount_rate: Decimal = decimal.Decimal(0) bm7_n_s_t: Optional[str] = None is_back_order: bool = False is_c_o_p_converter: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Vehicle: vin: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Option: is_default: bool = False value: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Term: options: List[Option] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Deposit: default: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Mileage: options: List[Option] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AdvanceRentals: options: List[Option] = field(default_factory=list) class VehicleType(str, Enum): UNASSIGNED = 'UNASSIGNED' NEW = 'NEW' USED = 'USED' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FinanceCriteria: key: Optional[str] = None name: Optional[str] = None type: Optional[str] = None is_default: bool = False term: Optional[Term] = None deposit: Optional[Deposit] = None mileage: Optional[Mileage] = None advance_rentals: Optional[AdvanceRentals] = None is_personalised: bool = False regular_payment: Optional[str] = None part_exchange: Optional[str] = None settlement: Optional[str] = None customer_type: Optional[str] = None vehicle_type: Optional[VehicleType] = None class MotabilityType(IntEnum): PIP = 1 WPMS = 2 UNASSIGNED = 3 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOrderBase: source: Optional[Source] = None gssn_id: Optional[str] = None additional_information: Optional[str] = None cash: bool = False finance: bool = False customer: Optional[Customer] = None vehicle: Optional[Vehicle] = None finance_criteria: Optional[FinanceCriteria] = None back_order_guid: Optional[str] = None tag_url: Optional[str] = None outright_purchase: Optional[OutrightPurchase] = None motability: bool = False motability_pricing_id: Optional[int] = None finance_application_reference: Optional[str] = None specialist: bool = False gas_id: Optional[str] = None personalised_item_offer_ids: Optional[List[int]] = None suggested_vin: Optional[str] = None non_optimum_reason: Optional[str] = None motability_type: Optional[MotabilityType] = None estimated_handover_date: Optional[str] = None class ICustomer: address: Optional[Address] = None company_name: Optional[str] = None customer_id: Optional[str] = None email_address: Optional[str] = None firstname: Optional[str] = None is_ciam: bool = False mode: Optional[CustomerMode] = None surname: Optional[str] = None telephone: Optional[str] = None title: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOrderResponse: guid: Optional[str] = None reference: Optional[str] = None response_status: Optional[ResponseStatus] = None back_order_reference: Optional[str] = None # @Route("/v1/oneAdmin/order", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOneAdminOrderRequest(CreateOrderBase, IReturn[CreateOrderResponse], IGet): customer_location_id: Optional[int] = None