""" 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: CreateOneAdminBackOrderRequest.* #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 JsonVersion(IJsonVersion): version: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CriteriaModel: description: Optional[str] = None id: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CriteriaDifference: model: bool = False transmission: bool = False fuel: bool = False upholstery: bool = False equipment: bool = False line: bool = False body_style: bool = False colour_group: bool = False packages: bool = False engine: bool = False additional_information: bool = False url_referrer: bool = False preferred_delivery_date: bool = False is_smart: bool = False is_specialised: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CriteriaBase(JsonVersion): transmission: List[str] = field(default_factory=list) fuel: List[str] = field(default_factory=list) upholstery: List[str] = field(default_factory=list) equipment: List[str] = field(default_factory=list) line: List[str] = field(default_factory=list) body_style: List[str] = field(default_factory=list) colour_group: List[str] = field(default_factory=list) packages: List[str] = field(default_factory=list) model: List[CriteriaModel] = field(default_factory=list) url_referrer: Optional[str] = None preferred_delivery_date: Optional[str] = None # @ApiMember(ExcludeInSchema=true) is_new_model: bool = False # @ApiMember(ExcludeInSchema=true) is_smart: bool = False # @ApiMember(ExcludeInSchema=true) is_specialised: bool = False # @ApiMember(ExcludeInSchema=true) criteria_difference: Optional[CriteriaDifference] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Criteria(CriteriaBase): engine: List[str] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class V2EngineCriteria: badge: Optional[str] = None brand: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class V2Criteria(CriteriaBase): engine: List[V2EngineCriteria] = field(default_factory=list) @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 CreateBackOrderBase: gssn_id: Optional[str] = None additional_information: Optional[str] = None config_code: Optional[str] = None source: Optional[Source] = None tag_url: Optional[str] = None customer: Optional[Customer] = None customer_criteria: Optional[Criteria] = None agent_criteria: Optional[V2Criteria] = None outright_purchase: Optional[OutrightPurchase] = None gas_id: Optional[str] = None motability: bool = False motability_pricing_id: Optional[int] = None assistance_provider_id: Optional[int] = None assistance_detail: Optional[str] = None configurator_code: 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 class IJsonVersion: version: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateBackOrderResponse: guid: Optional[str] = None reference: Optional[str] = None # @Route("/v1/oneAdmin/backorder", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOneAdminBackOrderRequest(CreateBackOrderBase, IReturn[CreateBackOrderResponse], IPost): pass