PUT | /CreateOCAv2/ |
---|
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 CreateOCAv2RequestResponse:
code: Optional[str] = None
message: Optional[str] = None
urn: Optional[int] = 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: Optional[int] = None
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: Optional[int] = None
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: Optional[int] = None
payment_rental_amount: Optional[Decimal] = None
rental_amount_exc_v_a_t: Optional[Decimal] = None
advance_arrears: Optional[str] = None
annual_mileage: Optional[int] = None
excess_mileage_rate: Optional[Decimal] = None
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: Optional[Decimal] = None
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: Optional[Decimal] = None
otr_price: Optional[Decimal] = None
vin: Optional[str] = None
reg_no: Optional[str] = None
commission_number: Optional[str] = None
engine_number: Optional[str] = None
current_mileage: Optional[int] = None
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: Optional[Decimal] = None
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: Optional[Decimal] = None
settlement_value_net: Optional[Decimal] = None
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: Optional[int] = None
years_trading: Optional[int] = None
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: Optional[int] = None
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 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 CreateOCAv2Request:
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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ModelOptionDetailsv2:
seq: Optional[int] = None
type: Optional[str] = None
code: Optional[str] = None
description: Optional[str] = None
price: Optional[Decimal] = None
price_gross: Optional[Decimal] = None
vat_category: Optional[str] = None
vat_amount: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PreviousAddressv2:
seq: Optional[int] = None
address: Optional[AddressWithTimeLinev2] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PreviousEmploymentv2:
seq: Optional[int] = None
previous_employment: Optional[EmployerDetailsv2] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BusinessPartnerv2:
seq: Optional[int] = None
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
business_phone: Optional[str] = None
relationship: Optional[str] = None
email: Optional[str] = None
current_employment_details: Optional[CurrentEmploymentDetailsv2] = None
previous_employment_details: Optional[List[PreviousEmploymentv2]] = None
partner_type: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaymentDetail:
seq: Optional[int] = None
payment_type: Optional[str] = None
amount_paid: Optional[Decimal] = None
payment_transaction_i_d: Optional[str] = None
description: Optional[str] = None
payment_date_time: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NoteDetails:
seq: Optional[int] = None
note: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DiPReasons:
dip_reason_seq: Optional[int] = None
dip_decision_code: Optional[str] = None
di_p_decision_reason: Optional[str] = None
di_p_dealer_message: Optional[str] = None
Python CreateOCAv2Request DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
PUT /CreateOCAv2/ HTTP/1.1
Host: webservices.mbukdatabase.co.uk
Accept: application/json
Content-Type: application/json
Content-Length: length
{"Username":"String","Timestamp":"String","Token":"String","GeneralDetails":{"OCAApprovalNumber":"String","EnquiryDateTime":"String","Brand":0,"CustomerReferenceNumber":"String","CustomerType":"String","SourceofBusiness":"String","TagURL":"String","RequestSource":0,"FormID":"String","ProposalCreated":"String","LoadFullData":"String","ProposalNumber":"String","POSSystem":"String"},"FinanceDetails":{"FinancialProduct":"String","CampaignCode":"String","PhoenixFinanceProductCode":"String","Fixed":"String","FleetNonFleet":"String","RFLCover":"String","Duration":0,"PaymentRentalAmount":0,"RentalAmountExcVAT":0,"AdvanceArrears":"String","AnnualMileage":0,"ExcessMileageRate":0,"CustomerDepositContribution":0,"RetailerDepositContribution":0,"RetailerDepositContributionNet":0,"ManufacturerDepositContribution":0,"ManufacturerDepositContributionNet":0,"TotalDepositContribution":0,"LumpSum":0,"CostForCredit":0,"PurchaseActivationFee":0,"TotalAmountPayable":0,"FixedInterestRate":0,"RepresentativeAPR":0,"TrueFlatRate":"String","RVReferenceNumber":"String","OptionalPurchasePayment":0,"AdvancedRentalAmount":0,"NumberofAdvanceRentals":"String","PaymentProfile":"String","RandMIncluded":"String","RandMLevel":"String","ProductType":"String","Frequency":"String","PauseType":"String","EqualsFinance":0,"AcceptanceFee":0},"VehicleDetails":{"OnlineCode":"String","ModelClass":"String","ModelBody":"String","ModelDerivative":"String","TotalPrice":0,"OTRPrice":0,"VIN":"String","RegNo":"String","CommissionNumber":"String","EngineNumber":"String","CurrentMileage":0,"MilesKilometers":"String","FirstRegistrationDate":"String","NewUsedFlag":"String","NewVehicleModelOptionDetails":[{"Seq":0,"Type":"String","Code":"String","Description":"String","Price":0,"PriceGross":0,"VATCategory":"String","VATAmount":0}],"VID":"String","Baumuster":"String","VehiclePrice":0,"TotalVAT":0,"OLEVGrant":0,"ExtrasTotalExcVAT":0,"CombinedCO2":"String","VehicleVATTickBox":"String","FirstYearRFLIncluded":"String","FirstYearRFLAmount":0,"FirstRegFeeIncludedFlag":"String","FirstRegFeeAmount":0,"HighLowVEDSupplementFlag":"String","LeaseRFLSubsequentYears":"String","LeaseRFLSubsequentYearsAmount":0},"DeliveryDetails":{"DealerCode":"String","DeliveryPreference":"String","DeliveryDate":"String"},"ExistingVehicleDetails":{"TradeInFlag":"String","TradeInIncludedInCalc":"String","TradeInValue":0,"TradeInValueNet":0,"TradeInRegNo":"String","TradeInVIN":"String","TradeInMileage":0,"TradeInCondition":"String","SettlementFlag":"String","SettlementIncludedInCalc":"String","SettlementValue":0,"SettlementValueNet":0,"SettlementRegNo":"String","SettlementVIN":"String","SettlementMileage":0},"InsuranceDetails":{"InterestedInFirstCoverFlag":"String"},"CreditApplicationIndividual":{"Title":"String","Initial":"String","FirstName":"String","Surname":"String","DateofBirth":"String","Gender":"String","MaritalStatus":"String","ResidentialStatus":"String","CurrentAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"},"PreviousAddresses":[{"Seq":0,"Address":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}}],"HomePhone":"String","MobilePhone":"String","WorkPhone":"String","ContactAtWork":"String","Email":"String","BankSortCode":"String","BankAccountNumber":"String","BankAccountName":"String","BankName":"String","BankAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","AddressLine4":"String","AddressLine5":"String","Postcode":"String"},"BankPaymentType":"String","DrivingLicenceNumber":"String","CurrentEmploymentDetails":{"EmployerDetails":{"EmploymentType":"String","EmployersName":"String","Occupation":"String","EmployersAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}},"MonthsAtEmployer":"String","DateEmploymentCommenced":"String","AnnualIncome":"String"},"PreviousEmploymentDetails":[{"Seq":0,"previousEmployment":{"EmploymentType":"String","EmployersName":"String","Occupation":"String","EmployersAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}}}],"MarketingPreference":{"OptInMail":"String","OptInTelephone":"String","OptInEmail":"String","OptInSMS":"String"},"CreditCheckConsent":"String"},"CreditApplicationBusiness":{"TypeOfBusiness":"String","BusinessContactPosition":"String","Title":"String","Initial":"String","FirstName":"String","Surname":"String","CurrentHomeAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"},"HomePhone":"String","WorkPhone":"String","MobilePhone":"String","Email":"String","CompanyName":"String","CompanyRegistrationNumber":"String","TradingAs":"String","BusinessActivity":"String","NumberOfEmployees":0,"YearsTrading":0,"Position":"String","BankSortCode":"String","BankAccountNumber":"String","BankAccountName":"String","BankName":"String","BankAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","AddressLine4":"String","AddressLine5":"String","Postcode":"String"},"NumberofPartners":0,"BusinessPartners":[{"Seq":0,"Title":"String","Initial":"String","FirstName":"String","Surname":"String","DateofBirth":"String","Gender":"String","MaritalStatus":"String","ResidentialStatus":"String","CurrentAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"},"PreviousAddresses":[{"Seq":0,"Address":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}}],"HomePhone":"String","MobilePhone":"String","BusinessPhone":"String","Relationship":"String","Email":"String","CurrentEmploymentDetails":{"EmployerDetails":{"EmploymentType":"String","EmployersName":"String","Occupation":"String","EmployersAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}},"MonthsAtEmployer":"String","DateEmploymentCommenced":"String","AnnualIncome":"String"},"PreviousEmploymentDetails":[{"Seq":0,"previousEmployment":{"EmploymentType":"String","EmployersName":"String","Occupation":"String","EmployersAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}}}],"PartnerType":"String"}],"MarketingPreference":{"OptInMail":"String","OptInTelephone":"String","OptInEmail":"String","OptInSMS":"String"},"PreviousAddresses":[{"Seq":0,"Address":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String","TotalNumberOfMonths":"String"}}]},"PaymentDetails":{"paymentDetails":[{"Seq":0,"PaymentType":"String","AmountPaid":0,"PaymentTransactionID":"String","Description":"String","PaymentDateTime":"String"}]},"Notes":[{"Seq":0,"Note":"String"}],"DiPDetails":{"DiPCustomerId":"String","DiPTimestamp":"String","DiPRequestID":"String","DiPDecisionType":"String","DiPPrimaryDecisionCode":"String","DiPDecisionDescription":"String","DipDecisionDescriptionCode":"String","DipPrimaryDecisionReason":"String","DiPPrimaryDecisionReasonDealerMessage":"String","diPReasons":[{"DipReasonSeq":0,"DipDecisionCode":"String","DiPDecisionReason":"String","DiPDealerMessage":"String"}]}}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"Code":"String","Message":"String","URN":0}