""" Options: Date: 2025-06-26 01:46:38 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: CreateOCAv2Request.* #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 PaymentDetails: payment_details: Optional[List[PaymentDetail]] = 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 GeneralDetailsv2: 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 proposal_created: Optional[str] = None load_full_data: Optional[str] = None proposal_number: Optional[str] = None pos_system: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FinanceDetailsv2: financial_product: Optional[str] = None campaign_code: Optional[str] = None phoenix_finance_product_code: Optional[str] = None fixed: Optional[str] = None fleet_non_fleet: Optional[str] = None rfl_cover: Optional[str] = None duration: int = 0 payment_rental_amount: Decimal = decimal.Decimal(0) rental_amount_exc_v_a_t: Optional[Decimal] = None advance_arrears: Optional[str] = None annual_mileage: int = 0 excess_mileage_rate: Decimal = decimal.Decimal(0) customer_deposit_contribution: Optional[Decimal] = None retailer_deposit_contribution: Optional[Decimal] = None retailer_deposit_contribution_net: Optional[Decimal] = None manufacturer_deposit_contribution: Optional[Decimal] = None manufacturer_deposit_contribution_net: Optional[Decimal] = None total_deposit_contribution: Optional[Decimal] = None lump_sum: 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 true_flat_rate: Optional[str] = None rv_reference_number: Optional[str] = None optional_purchase_payment: Optional[Decimal] = None advanced_rental_amount: Decimal = decimal.Decimal(0) numberof_advance_rentals: Optional[str] = None 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 equals_finance: Optional[Decimal] = None acceptance_fee: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class VehicleDetailsv2: 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 commission_number: Optional[str] = None engine_number: Optional[str] = None current_mileage: int = 0 miles_kilometers: Optional[str] = None first_registration_date: Optional[str] = None new_used_flag: Optional[str] = None new_vehicle_model_option_details: Optional[List[ModelOptionDetailsv2]] = None vid: Optional[str] = None baumuster: Optional[str] = None vehicle_price: Optional[Decimal] = None total_v_a_t: Optional[Decimal] = None olev_grant: Optional[Decimal] = None extras_total_exc_v_a_t: Optional[Decimal] = None combined_c_o2: Optional[str] = None vehicle_v_a_t_tick_box: Optional[str] = None first_year_r_f_l_included: Optional[str] = None first_year_r_f_l_amount: Optional[Decimal] = None first_reg_fee_included_flag: Optional[str] = None first_reg_fee_amount: Optional[Decimal] = None high_low_v_e_d_supplement_flag: Optional[str] = None lease_r_f_l_subsequent_years: Optional[str] = None lease_r_f_l_subsequent_years_amount: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DeliveryDetailsv2: dealer_code: Optional[str] = None delivery_preference: Optional[str] = None delivery_date: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ExistingVehicleDetailsv2: trade_in_flag: Optional[str] = None trade_in_included_in_calc: Optional[str] = None trade_in_value: Decimal = decimal.Decimal(0) trade_in_value_net: Optional[Decimal] = None trade_in_reg_no: Optional[str] = None trade_in_v_i_n: Optional[str] = None trade_in_mileage: Optional[int] = None trade_in_condition: Optional[str] = None settlement_flag: Optional[str] = None settlement_included_in_calc: Optional[str] = None settlement_value: Decimal = decimal.Decimal(0) settlement_value_net: Decimal = decimal.Decimal(0) settlement_reg_no: Optional[str] = None settlement_v_i_n: Optional[str] = None settlement_mileage: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class InsuranceDetails: interested_in_first_cover_flag: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddressWithTimeLinev2: 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 total_number_of_months: 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 EmployerDetailsv2: employment_type: Optional[str] = None employers_name: Optional[str] = None occupation: Optional[str] = None employers_address: Optional[AddressWithTimeLinev2] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CurrentEmploymentDetailsv2: employer_details: Optional[EmployerDetailsv2] = 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 MarketingPreference: opt_in_mail: Optional[str] = None opt_in_telephone: Optional[str] = None opt_in_email: Optional[str] = None opt_in_s_m_s: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreditApplicationIndividualV2: 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[AddressWithTimeLinev2] = None previous_addresses: Optional[List[PreviousAddressv2]] = None home_phone: Optional[str] = None mobile_phone: Optional[str] = None work_phone: Optional[str] = None contact_at_work: 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 bank_payment_type: Optional[str] = None driving_licence_number: Optional[str] = None current_employment_details: Optional[CurrentEmploymentDetailsv2] = None previous_employment_details: Optional[List[PreviousEmploymentv2]] = None marketing_preference: Optional[MarketingPreference] = None credit_check_consent: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreditApplicationBusinessV2: 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[AddressWithTimeLinev2] = None home_phone: Optional[str] = None work_phone: Optional[str] = None mobile_phone: Optional[str] = None email: 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[BusinessPartnerv2]] = None marketing_preference: Optional[MarketingPreference] = None previous_addresses: Optional[List[PreviousAddressv2]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOCAv2RequestResponse: code: Optional[str] = None message: Optional[str] = None urn: int = 0 # @Route("/CreateOCAv2/", "PUT") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateOCAv2Request(IReturn[CreateOCAv2RequestResponse]): username: Optional[str] = None timestamp: Optional[str] = None token: Optional[str] = None general_details: Optional[GeneralDetailsv2] = None finance_details: Optional[FinanceDetailsv2] = None vehicle_details: Optional[VehicleDetailsv2] = None delivery_details: Optional[DeliveryDetailsv2] = None existing_vehicle_details: Optional[ExistingVehicleDetailsv2] = None insurance_details: Optional[InsuranceDetails] = None credit_application_individual: Optional[CreditApplicationIndividualV2] = None credit_application_business: Optional[CreditApplicationBusinessV2] = None payment_details: Optional[PaymentDetails] = None notes: Optional[List[NoteDetails]] = None di_p_details: Optional[DiPDetails] = None