""" Options: Date: 2025-06-25 23:47:11 Version: 6.00 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: http://webservices.mbukdatabase.co.uk/MBOnlineCreditApplicationService #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: CreateOCARequest.* #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 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GeneralDetails: oca_approval_number: Optional[str] = None enquiry_date_time: Optional[str] = None brand: int = 0 customer_reference_number: Optional[str] = None customer_type: Optional[str] = None sourceof_business: Optional[str] = None tag_u_r_l: Optional[str] = None request_source: int = 0 form_i_d: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FinanceDetails: financial_product: Optional[str] = None duration: int = 0 payment_rental_amount: Decimal = decimal.Decimal(0) annual_mileage: int = 0 excess_mileage_rate: Decimal = decimal.Decimal(0) customer_deposit_contribution: Optional[Decimal] = None retailer_deposit_contribution: Optional[Decimal] = None manufacturer_deposit_contribution: Optional[Decimal] = None total_deposit_contribution: Optional[Decimal] = None cost_for_credit: Optional[Decimal] = None purchase_activation_fee: Optional[Decimal] = None total_amount_payable: Optional[Decimal] = None fixed_interest_rate: Optional[Decimal] = None representative_a_p_r: Optional[Decimal] = None optional_purchase_payment: Optional[Decimal] = None advanced_rental_amount: Decimal = decimal.Decimal(0) payment_profile: Optional[str] = None rand_m_included: Optional[str] = None rand_m_level: Optional[str] = None product_type: Optional[str] = None frequency: Optional[str] = None pause_type: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VehicleDetails: online_code: Optional[str] = None model_class: Optional[str] = None model_body: Optional[str] = None model_derivative: Optional[str] = None total_price: Decimal = decimal.Decimal(0) otr_price: Decimal = decimal.Decimal(0) vin: Optional[str] = None reg_no: Optional[str] = None current_mileage: int = 0 first_registration_date: Optional[str] = None new_used_flag: Optional[str] = None new_vehicle_model_option_details: Optional[List[ModelOptionDetails]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DeliveryDetails: dealer_code: Optional[str] = None delivery_preference: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ExistingVehicleDetails: trade_in_flag: Optional[str] = None trade_in_value: Decimal = decimal.Decimal(0) trade_in_reg_no: Optional[str] = None settlement_flag: Optional[str] = None settlement_value: Decimal = decimal.Decimal(0) settlement_reg_no: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PaymentDetails: payment_details: Optional[List[PaymentDetail]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddressWithTimeLine: address_line1: Optional[str] = None address_line2: Optional[str] = None address_line3: Optional[str] = None town: Optional[str] = None county: Optional[str] = None country: Optional[str] = None postcode: Optional[str] = None duration: Optional[str] = None date_started: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: address_line1: Optional[str] = None address_line2: Optional[str] = None address_line3: Optional[str] = None address_line4: Optional[str] = None address_line5: Optional[str] = None postcode: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EmployerDetails: employment_type: Optional[str] = None employers_name: Optional[str] = None occupation: Optional[str] = None employers_address: Optional[AddressWithTimeLine] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CurrentEmploymentDetails: employer_details: Optional[EmployerDetails] = None months_at_employer: Optional[str] = None date_employment_commenced: Optional[str] = None annual_income: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreditApplicationIndividual: title: Optional[str] = None initial: Optional[str] = None first_name: Optional[str] = None surname: Optional[str] = None dateof_birth: Optional[str] = None gender: Optional[str] = None marital_status: Optional[str] = None residential_status: Optional[str] = None current_address: Optional[AddressWithTimeLine] = None previous_addresses: Optional[List[PreviousAddress]] = None home_phone: Optional[str] = None mobile_phone: Optional[str] = None work_phone: Optional[str] = None email: Optional[str] = None bank_sort_code: Optional[str] = None bank_account_number: Optional[str] = None bank_account_name: Optional[str] = None bank_name: Optional[str] = None bank_address: Optional[Address] = None do_not_email: Optional[str] = None do_not_mail: Optional[str] = None do_not_phone: Optional[str] = None do_not_s_m_s: Optional[str] = None driving_licence_number: Optional[str] = None current_employment_details: Optional[CurrentEmploymentDetails] = None previous_employment_details: Optional[List[PreviousEmployment]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreditApplicationBusiness: type_of_business: Optional[str] = None business_contact_position: Optional[str] = None title: Optional[str] = None initial: Optional[str] = None first_name: Optional[str] = None surname: Optional[str] = None current_home_address: Optional[AddressWithTimeLine] = None home_phone: Optional[str] = None work_phone: Optional[str] = None mobile_phone: Optional[str] = None email: Optional[str] = None do_not_email: Optional[str] = None do_not_mail: Optional[str] = None do_not_phone: Optional[str] = None do_not_s_m_s: Optional[str] = None company_name: Optional[str] = None company_registration_number: Optional[str] = None trading_as: Optional[str] = None business_activity: Optional[str] = None number_of_employees: int = 0 years_trading: int = 0 position: Optional[str] = None bank_sort_code: Optional[str] = None bank_account_number: Optional[str] = None bank_account_name: Optional[str] = None bank_name: Optional[str] = None bank_address: Optional[Address] = None numberof_partners: int = 0 business_partners: Optional[List[BusinessPartner]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DiPDetails: di_p_customer_id: Optional[str] = None di_p_timestamp: Optional[str] = None di_p_request_i_d: Optional[str] = None di_p_decision_type: Optional[str] = None di_p_primary_decision_code: Optional[str] = None di_p_decision_description: Optional[str] = None dip_decision_description_code: Optional[str] = None dip_primary_decision_reason: Optional[str] = None di_p_primary_decision_reason_dealer_message: Optional[str] = None di_p_reasons: Optional[List[DiPReasons]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOCARequestResponse: code: Optional[str] = None message: Optional[str] = None urn: int = 0 # @Route("/CreateOCA/", "PUT") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOCARequest(IReturn[CreateOCARequestResponse]): username: Optional[str] = None timestamp: Optional[str] = None token: Optional[str] = None general_details: Optional[GeneralDetails] = None finance_details: Optional[FinanceDetails] = None vehicle_details: Optional[VehicleDetails] = None delivery_details: Optional[DeliveryDetails] = None existing_vehicle_details: Optional[ExistingVehicleDetails] = None credit_application_individual: Optional[CreditApplicationIndividual] = None credit_application_business: Optional[CreditApplicationBusiness] = None payment_details: Optional[PaymentDetails] = None di_p_details: Optional[DiPDetails] = None