PUT | /CreateVanOCA/ |
---|
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 CreateVanOCARequestResponse:
code: Optional[str] = None
message: Optional[str] = None
urn: Optional[int] = None
@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: 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
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FinanceDetails:
financial_product: Optional[str] = None
duration: Optional[int] = None
payment_rental_amount: Optional[Decimal] = None
annual_mileage: Optional[int] = None
excess_mileage_rate: Optional[Decimal] = None
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: Optional[Decimal] = 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
@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: Optional[Decimal] = None
otr_price: Optional[Decimal] = None
vin: Optional[str] = None
reg_no: Optional[str] = None
current_mileage: Optional[int] = None
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: Optional[Decimal] = None
trade_in_reg_no: Optional[str] = None
settlement_flag: Optional[str] = None
settlement_value: Optional[Decimal] = None
settlement_reg_no: Optional[str] = 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 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 CreditApplicationIndividualVans:
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
driving_licence_number: Optional[str] = None
current_employment_details: Optional[CurrentEmploymentDetails] = None
previous_employment_details: Optional[List[PreviousEmployment]] = None
marketing_preference: Optional[MarketingPreference] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreditApplicationBusinessVans:
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
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[BusinessPartner]] = None
marketing_preference: Optional[MarketingPreference] = None
previous_addresses: Optional[List[PreviousAddress]] = 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 CreateVanOCARequest:
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[CreditApplicationIndividualVans] = None
credit_application_business: Optional[CreditApplicationBusinessVans] = None
payment_details: Optional[PaymentDetails] = None
notes: Optional[List[NoteDetails]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ModelOptionDetails:
seq: Optional[int] = None
code: Optional[str] = None
description: Optional[str] = None
price: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PreviousAddress:
seq: Optional[int] = None
address: Optional[AddressWithTimeLine] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PreviousEmployment:
seq: Optional[int] = None
previous_employment: Optional[EmployerDetails] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BusinessPartner:
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[AddressWithTimeLine] = None
previous_addresses: Optional[List[PreviousAddress]] = 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[CurrentEmploymentDetails] = None
previous_employment_details: Optional[List[PreviousEmployment]] = 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
Python CreateVanOCARequest 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 /CreateVanOCA/ 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"},"FinanceDetails":{"FinancialProduct":"String","Duration":0,"PaymentRentalAmount":0,"AnnualMileage":0,"ExcessMileageRate":0,"CustomerDepositContribution":0,"RetailerDepositContribution":0,"ManufacturerDepositContribution":0,"TotalDepositContribution":0,"CostForCredit":0,"PurchaseActivationFee":0,"TotalAmountPayable":0,"FixedInterestRate":0,"RepresentativeAPR":0,"OptionalPurchasePayment":0,"AdvancedRentalAmount":0,"PaymentProfile":"String","RandMIncluded":"String","RandMLevel":"String","ProductType":"String","Frequency":"String","PauseType":"String"},"VehicleDetails":{"OnlineCode":"String","ModelClass":"String","ModelBody":"String","ModelDerivative":"String","TotalPrice":0,"OTRPrice":0,"VIN":"String","RegNo":"String","CurrentMileage":0,"FirstRegistrationDate":"String","NewUsedFlag":"String","NewVehicleModelOptionDetails":[{"Seq":0,"Code":"String","Description":"String","Price":0}]},"DeliveryDetails":{"DealerCode":"String","DeliveryPreference":"String"},"ExistingVehicleDetails":{"TradeInFlag":"String","TradeInValue":0,"TradeInRegNo":"String","SettlementFlag":"String","SettlementValue":0,"SettlementRegNo":"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"},"PreviousAddresses":[{"Seq":0,"Address":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"String"}}],"HomePhone":"String","MobilePhone":"String","WorkPhone":"String","Email":"String","BankSortCode":"String","BankAccountNumber":"String","BankAccountName":"String","BankName":"String","BankAddress":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","AddressLine4":"String","AddressLine5":"String","Postcode":"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"}},"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"}}}],"MarketingPreference":{"OptInMail":"String","OptInTelephone":"String","OptInEmail":"String","OptInSMS":"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"},"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"},"PreviousAddresses":[{"Seq":0,"Address":{"AddressLine1":"String","AddressLine2":"String","AddressLine3":"String","Town":"String","County":"String","Country":"String","Postcode":"String","Duration":"String","DateStarted":"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"}},"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"}}}],"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"}}]},"PaymentDetails":{"paymentDetails":[{"Seq":0,"PaymentType":"String","AmountPaid":0,"PaymentTransactionID":"String","Description":"String","PaymentDateTime":"String"}]},"Notes":[{"Seq":0,"Note":"String"}]}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"Code":"String","Message":"String","URN":0}