MBOnlineCreditApplicationService

<back to all web services

CreateOCAv2Request

The following routes are available for this service:
PUT/CreateOCAv2/
import 'package:servicestack/servicestack.dart';

// @DataContract
class CreateOCAv2RequestResponse implements IConvertible
{
    // @DataMember
    String? Code;

    // @DataMember
    String? Message;

    // @DataMember
    int? URN;

    CreateOCAv2RequestResponse({this.Code,this.Message,this.URN});
    CreateOCAv2RequestResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Code = json['Code'];
        Message = json['Message'];
        URN = json['URN'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Code': Code,
        'Message': Message,
        'URN': URN
    };

    getTypeName() => "CreateOCAv2RequestResponse";
    TypeContext? context = _ctx;
}

class GeneralDetailsv2 implements IConvertible
{
    String? OCAApprovalNumber;
    String? EnquiryDateTime;
    int? Brand;
    String? CustomerReferenceNumber;
    String? CustomerType;
    String? SourceofBusiness;
    String? TagURL;
    int? RequestSource;
    String? FormID;
    String? ProposalCreated;
    String? LoadFullData;
    String? ProposalNumber;
    String? POSSystem;

    GeneralDetailsv2({this.OCAApprovalNumber,this.EnquiryDateTime,this.Brand,this.CustomerReferenceNumber,this.CustomerType,this.SourceofBusiness,this.TagURL,this.RequestSource,this.FormID,this.ProposalCreated,this.LoadFullData,this.ProposalNumber,this.POSSystem});
    GeneralDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        OCAApprovalNumber = json['OCAApprovalNumber'];
        EnquiryDateTime = json['EnquiryDateTime'];
        Brand = json['Brand'];
        CustomerReferenceNumber = json['CustomerReferenceNumber'];
        CustomerType = json['CustomerType'];
        SourceofBusiness = json['SourceofBusiness'];
        TagURL = json['TagURL'];
        RequestSource = json['RequestSource'];
        FormID = json['FormID'];
        ProposalCreated = json['ProposalCreated'];
        LoadFullData = json['LoadFullData'];
        ProposalNumber = json['ProposalNumber'];
        POSSystem = json['POSSystem'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'OCAApprovalNumber': OCAApprovalNumber,
        'EnquiryDateTime': EnquiryDateTime,
        'Brand': Brand,
        'CustomerReferenceNumber': CustomerReferenceNumber,
        'CustomerType': CustomerType,
        'SourceofBusiness': SourceofBusiness,
        'TagURL': TagURL,
        'RequestSource': RequestSource,
        'FormID': FormID,
        'ProposalCreated': ProposalCreated,
        'LoadFullData': LoadFullData,
        'ProposalNumber': ProposalNumber,
        'POSSystem': POSSystem
    };

    getTypeName() => "GeneralDetailsv2";
    TypeContext? context = _ctx;
}

class FinanceDetailsv2 implements IConvertible
{
    String? FinancialProduct;
    String? CampaignCode;
    String? PhoenixFinanceProductCode;
    String? Fixed;
    String? FleetNonFleet;
    String? RFLCover;
    int? Duration;
    double? PaymentRentalAmount;
    double? RentalAmountExcVAT;
    String? AdvanceArrears;
    int? AnnualMileage;
    double? ExcessMileageRate;
    double? CustomerDepositContribution;
    double? RetailerDepositContribution;
    double? RetailerDepositContributionNet;
    double? ManufacturerDepositContribution;
    double? ManufacturerDepositContributionNet;
    double? TotalDepositContribution;
    double? LumpSum;
    double? CostForCredit;
    double? PurchaseActivationFee;
    double? TotalAmountPayable;
    double? FixedInterestRate;
    double? RepresentativeAPR;
    String? TrueFlatRate;
    String? RVReferenceNumber;
    double? OptionalPurchasePayment;
    double? AdvancedRentalAmount;
    String? NumberofAdvanceRentals;
    String? PaymentProfile;
    String? RandMIncluded;
    String? RandMLevel;
    String? ProductType;
    String? Frequency;
    String? PauseType;
    double? EqualsFinance;
    double? AcceptanceFee;

    FinanceDetailsv2({this.FinancialProduct,this.CampaignCode,this.PhoenixFinanceProductCode,this.Fixed,this.FleetNonFleet,this.RFLCover,this.Duration,this.PaymentRentalAmount,this.RentalAmountExcVAT,this.AdvanceArrears,this.AnnualMileage,this.ExcessMileageRate,this.CustomerDepositContribution,this.RetailerDepositContribution,this.RetailerDepositContributionNet,this.ManufacturerDepositContribution,this.ManufacturerDepositContributionNet,this.TotalDepositContribution,this.LumpSum,this.CostForCredit,this.PurchaseActivationFee,this.TotalAmountPayable,this.FixedInterestRate,this.RepresentativeAPR,this.TrueFlatRate,this.RVReferenceNumber,this.OptionalPurchasePayment,this.AdvancedRentalAmount,this.NumberofAdvanceRentals,this.PaymentProfile,this.RandMIncluded,this.RandMLevel,this.ProductType,this.Frequency,this.PauseType,this.EqualsFinance,this.AcceptanceFee});
    FinanceDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        FinancialProduct = json['FinancialProduct'];
        CampaignCode = json['CampaignCode'];
        PhoenixFinanceProductCode = json['PhoenixFinanceProductCode'];
        Fixed = json['Fixed'];
        FleetNonFleet = json['FleetNonFleet'];
        RFLCover = json['RFLCover'];
        Duration = json['Duration'];
        PaymentRentalAmount = JsonConverters.toDouble(json['PaymentRentalAmount']);
        RentalAmountExcVAT = JsonConverters.toDouble(json['RentalAmountExcVAT']);
        AdvanceArrears = json['AdvanceArrears'];
        AnnualMileage = json['AnnualMileage'];
        ExcessMileageRate = JsonConverters.toDouble(json['ExcessMileageRate']);
        CustomerDepositContribution = JsonConverters.toDouble(json['CustomerDepositContribution']);
        RetailerDepositContribution = JsonConverters.toDouble(json['RetailerDepositContribution']);
        RetailerDepositContributionNet = JsonConverters.toDouble(json['RetailerDepositContributionNet']);
        ManufacturerDepositContribution = JsonConverters.toDouble(json['ManufacturerDepositContribution']);
        ManufacturerDepositContributionNet = JsonConverters.toDouble(json['ManufacturerDepositContributionNet']);
        TotalDepositContribution = JsonConverters.toDouble(json['TotalDepositContribution']);
        LumpSum = JsonConverters.toDouble(json['LumpSum']);
        CostForCredit = JsonConverters.toDouble(json['CostForCredit']);
        PurchaseActivationFee = JsonConverters.toDouble(json['PurchaseActivationFee']);
        TotalAmountPayable = JsonConverters.toDouble(json['TotalAmountPayable']);
        FixedInterestRate = JsonConverters.toDouble(json['FixedInterestRate']);
        RepresentativeAPR = JsonConverters.toDouble(json['RepresentativeAPR']);
        TrueFlatRate = json['TrueFlatRate'];
        RVReferenceNumber = json['RVReferenceNumber'];
        OptionalPurchasePayment = JsonConverters.toDouble(json['OptionalPurchasePayment']);
        AdvancedRentalAmount = JsonConverters.toDouble(json['AdvancedRentalAmount']);
        NumberofAdvanceRentals = json['NumberofAdvanceRentals'];
        PaymentProfile = json['PaymentProfile'];
        RandMIncluded = json['RandMIncluded'];
        RandMLevel = json['RandMLevel'];
        ProductType = json['ProductType'];
        Frequency = json['Frequency'];
        PauseType = json['PauseType'];
        EqualsFinance = JsonConverters.toDouble(json['EqualsFinance']);
        AcceptanceFee = JsonConverters.toDouble(json['AcceptanceFee']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'FinancialProduct': FinancialProduct,
        'CampaignCode': CampaignCode,
        'PhoenixFinanceProductCode': PhoenixFinanceProductCode,
        'Fixed': Fixed,
        'FleetNonFleet': FleetNonFleet,
        'RFLCover': RFLCover,
        'Duration': Duration,
        'PaymentRentalAmount': PaymentRentalAmount,
        'RentalAmountExcVAT': RentalAmountExcVAT,
        'AdvanceArrears': AdvanceArrears,
        'AnnualMileage': AnnualMileage,
        'ExcessMileageRate': ExcessMileageRate,
        'CustomerDepositContribution': CustomerDepositContribution,
        'RetailerDepositContribution': RetailerDepositContribution,
        'RetailerDepositContributionNet': RetailerDepositContributionNet,
        'ManufacturerDepositContribution': ManufacturerDepositContribution,
        'ManufacturerDepositContributionNet': ManufacturerDepositContributionNet,
        'TotalDepositContribution': TotalDepositContribution,
        'LumpSum': LumpSum,
        'CostForCredit': CostForCredit,
        'PurchaseActivationFee': PurchaseActivationFee,
        'TotalAmountPayable': TotalAmountPayable,
        'FixedInterestRate': FixedInterestRate,
        'RepresentativeAPR': RepresentativeAPR,
        'TrueFlatRate': TrueFlatRate,
        'RVReferenceNumber': RVReferenceNumber,
        'OptionalPurchasePayment': OptionalPurchasePayment,
        'AdvancedRentalAmount': AdvancedRentalAmount,
        'NumberofAdvanceRentals': NumberofAdvanceRentals,
        'PaymentProfile': PaymentProfile,
        'RandMIncluded': RandMIncluded,
        'RandMLevel': RandMLevel,
        'ProductType': ProductType,
        'Frequency': Frequency,
        'PauseType': PauseType,
        'EqualsFinance': EqualsFinance,
        'AcceptanceFee': AcceptanceFee
    };

    getTypeName() => "FinanceDetailsv2";
    TypeContext? context = _ctx;
}

class VehicleDetailsv2 implements IConvertible
{
    String? OnlineCode;
    String? ModelClass;
    String? ModelBody;
    String? ModelDerivative;
    double? TotalPrice;
    double? OTRPrice;
    String? VIN;
    String? RegNo;
    String? CommissionNumber;
    String? EngineNumber;
    int? CurrentMileage;
    String? MilesKilometers;
    String? FirstRegistrationDate;
    String? NewUsedFlag;
    List<ModelOptionDetailsv2>? NewVehicleModelOptionDetails;
    String? VID;
    String? Baumuster;
    double? VehiclePrice;
    double? TotalVAT;
    double? OLEVGrant;
    double? ExtrasTotalExcVAT;
    String? CombinedCO2;
    String? VehicleVATTickBox;
    String? FirstYearRFLIncluded;
    double? FirstYearRFLAmount;
    String? FirstRegFeeIncludedFlag;
    double? FirstRegFeeAmount;
    String? HighLowVEDSupplementFlag;
    String? LeaseRFLSubsequentYears;
    double? LeaseRFLSubsequentYearsAmount;

    VehicleDetailsv2({this.OnlineCode,this.ModelClass,this.ModelBody,this.ModelDerivative,this.TotalPrice,this.OTRPrice,this.VIN,this.RegNo,this.CommissionNumber,this.EngineNumber,this.CurrentMileage,this.MilesKilometers,this.FirstRegistrationDate,this.NewUsedFlag,this.NewVehicleModelOptionDetails,this.VID,this.Baumuster,this.VehiclePrice,this.TotalVAT,this.OLEVGrant,this.ExtrasTotalExcVAT,this.CombinedCO2,this.VehicleVATTickBox,this.FirstYearRFLIncluded,this.FirstYearRFLAmount,this.FirstRegFeeIncludedFlag,this.FirstRegFeeAmount,this.HighLowVEDSupplementFlag,this.LeaseRFLSubsequentYears,this.LeaseRFLSubsequentYearsAmount});
    VehicleDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        OnlineCode = json['OnlineCode'];
        ModelClass = json['ModelClass'];
        ModelBody = json['ModelBody'];
        ModelDerivative = json['ModelDerivative'];
        TotalPrice = JsonConverters.toDouble(json['TotalPrice']);
        OTRPrice = JsonConverters.toDouble(json['OTRPrice']);
        VIN = json['VIN'];
        RegNo = json['RegNo'];
        CommissionNumber = json['CommissionNumber'];
        EngineNumber = json['EngineNumber'];
        CurrentMileage = json['CurrentMileage'];
        MilesKilometers = json['MilesKilometers'];
        FirstRegistrationDate = json['FirstRegistrationDate'];
        NewUsedFlag = json['NewUsedFlag'];
        NewVehicleModelOptionDetails = JsonConverters.fromJson(json['NewVehicleModelOptionDetails'],'List<ModelOptionDetailsv2>',context!);
        VID = json['VID'];
        Baumuster = json['Baumuster'];
        VehiclePrice = JsonConverters.toDouble(json['VehiclePrice']);
        TotalVAT = JsonConverters.toDouble(json['TotalVAT']);
        OLEVGrant = JsonConverters.toDouble(json['OLEVGrant']);
        ExtrasTotalExcVAT = JsonConverters.toDouble(json['ExtrasTotalExcVAT']);
        CombinedCO2 = json['CombinedCO2'];
        VehicleVATTickBox = json['VehicleVATTickBox'];
        FirstYearRFLIncluded = json['FirstYearRFLIncluded'];
        FirstYearRFLAmount = JsonConverters.toDouble(json['FirstYearRFLAmount']);
        FirstRegFeeIncludedFlag = json['FirstRegFeeIncludedFlag'];
        FirstRegFeeAmount = JsonConverters.toDouble(json['FirstRegFeeAmount']);
        HighLowVEDSupplementFlag = json['HighLowVEDSupplementFlag'];
        LeaseRFLSubsequentYears = json['LeaseRFLSubsequentYears'];
        LeaseRFLSubsequentYearsAmount = JsonConverters.toDouble(json['LeaseRFLSubsequentYearsAmount']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'OnlineCode': OnlineCode,
        'ModelClass': ModelClass,
        'ModelBody': ModelBody,
        'ModelDerivative': ModelDerivative,
        'TotalPrice': TotalPrice,
        'OTRPrice': OTRPrice,
        'VIN': VIN,
        'RegNo': RegNo,
        'CommissionNumber': CommissionNumber,
        'EngineNumber': EngineNumber,
        'CurrentMileage': CurrentMileage,
        'MilesKilometers': MilesKilometers,
        'FirstRegistrationDate': FirstRegistrationDate,
        'NewUsedFlag': NewUsedFlag,
        'NewVehicleModelOptionDetails': JsonConverters.toJson(NewVehicleModelOptionDetails,'List<ModelOptionDetailsv2>',context!),
        'VID': VID,
        'Baumuster': Baumuster,
        'VehiclePrice': VehiclePrice,
        'TotalVAT': TotalVAT,
        'OLEVGrant': OLEVGrant,
        'ExtrasTotalExcVAT': ExtrasTotalExcVAT,
        'CombinedCO2': CombinedCO2,
        'VehicleVATTickBox': VehicleVATTickBox,
        'FirstYearRFLIncluded': FirstYearRFLIncluded,
        'FirstYearRFLAmount': FirstYearRFLAmount,
        'FirstRegFeeIncludedFlag': FirstRegFeeIncludedFlag,
        'FirstRegFeeAmount': FirstRegFeeAmount,
        'HighLowVEDSupplementFlag': HighLowVEDSupplementFlag,
        'LeaseRFLSubsequentYears': LeaseRFLSubsequentYears,
        'LeaseRFLSubsequentYearsAmount': LeaseRFLSubsequentYearsAmount
    };

    getTypeName() => "VehicleDetailsv2";
    TypeContext? context = _ctx;
}

class DeliveryDetailsv2 implements IConvertible
{
    String? DealerCode;
    String? DeliveryPreference;
    String? DeliveryDate;

    DeliveryDetailsv2({this.DealerCode,this.DeliveryPreference,this.DeliveryDate});
    DeliveryDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DealerCode = json['DealerCode'];
        DeliveryPreference = json['DeliveryPreference'];
        DeliveryDate = json['DeliveryDate'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DealerCode': DealerCode,
        'DeliveryPreference': DeliveryPreference,
        'DeliveryDate': DeliveryDate
    };

    getTypeName() => "DeliveryDetailsv2";
    TypeContext? context = _ctx;
}

class ExistingVehicleDetailsv2 implements IConvertible
{
    String? TradeInFlag;
    String? TradeInIncludedInCalc;
    double? TradeInValue;
    double? TradeInValueNet;
    String? TradeInRegNo;
    String? TradeInVIN;
    int? TradeInMileage;
    String? TradeInCondition;
    String? SettlementFlag;
    String? SettlementIncludedInCalc;
    double? SettlementValue;
    double? SettlementValueNet;
    String? SettlementRegNo;
    String? SettlementVIN;
    int? SettlementMileage;

    ExistingVehicleDetailsv2({this.TradeInFlag,this.TradeInIncludedInCalc,this.TradeInValue,this.TradeInValueNet,this.TradeInRegNo,this.TradeInVIN,this.TradeInMileage,this.TradeInCondition,this.SettlementFlag,this.SettlementIncludedInCalc,this.SettlementValue,this.SettlementValueNet,this.SettlementRegNo,this.SettlementVIN,this.SettlementMileage});
    ExistingVehicleDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TradeInFlag = json['TradeInFlag'];
        TradeInIncludedInCalc = json['TradeInIncludedInCalc'];
        TradeInValue = JsonConverters.toDouble(json['TradeInValue']);
        TradeInValueNet = JsonConverters.toDouble(json['TradeInValueNet']);
        TradeInRegNo = json['TradeInRegNo'];
        TradeInVIN = json['TradeInVIN'];
        TradeInMileage = json['TradeInMileage'];
        TradeInCondition = json['TradeInCondition'];
        SettlementFlag = json['SettlementFlag'];
        SettlementIncludedInCalc = json['SettlementIncludedInCalc'];
        SettlementValue = JsonConverters.toDouble(json['SettlementValue']);
        SettlementValueNet = JsonConverters.toDouble(json['SettlementValueNet']);
        SettlementRegNo = json['SettlementRegNo'];
        SettlementVIN = json['SettlementVIN'];
        SettlementMileage = json['SettlementMileage'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TradeInFlag': TradeInFlag,
        'TradeInIncludedInCalc': TradeInIncludedInCalc,
        'TradeInValue': TradeInValue,
        'TradeInValueNet': TradeInValueNet,
        'TradeInRegNo': TradeInRegNo,
        'TradeInVIN': TradeInVIN,
        'TradeInMileage': TradeInMileage,
        'TradeInCondition': TradeInCondition,
        'SettlementFlag': SettlementFlag,
        'SettlementIncludedInCalc': SettlementIncludedInCalc,
        'SettlementValue': SettlementValue,
        'SettlementValueNet': SettlementValueNet,
        'SettlementRegNo': SettlementRegNo,
        'SettlementVIN': SettlementVIN,
        'SettlementMileage': SettlementMileage
    };

    getTypeName() => "ExistingVehicleDetailsv2";
    TypeContext? context = _ctx;
}

class InsuranceDetails implements IConvertible
{
    String? InterestedInFirstCoverFlag;

    InsuranceDetails({this.InterestedInFirstCoverFlag});
    InsuranceDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        InterestedInFirstCoverFlag = json['InterestedInFirstCoverFlag'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'InterestedInFirstCoverFlag': InterestedInFirstCoverFlag
    };

    getTypeName() => "InsuranceDetails";
    TypeContext? context = _ctx;
}

class AddressWithTimeLinev2 implements IConvertible
{
    String? AddressLine1;
    String? AddressLine2;
    String? AddressLine3;
    String? Town;
    String? County;
    String? Country;
    String? Postcode;
    String? Duration;
    String? DateStarted;
    String? TotalNumberOfMonths;

    AddressWithTimeLinev2({this.AddressLine1,this.AddressLine2,this.AddressLine3,this.Town,this.County,this.Country,this.Postcode,this.Duration,this.DateStarted,this.TotalNumberOfMonths});
    AddressWithTimeLinev2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AddressLine1 = json['AddressLine1'];
        AddressLine2 = json['AddressLine2'];
        AddressLine3 = json['AddressLine3'];
        Town = json['Town'];
        County = json['County'];
        Country = json['Country'];
        Postcode = json['Postcode'];
        Duration = json['Duration'];
        DateStarted = json['DateStarted'];
        TotalNumberOfMonths = json['TotalNumberOfMonths'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AddressLine1': AddressLine1,
        'AddressLine2': AddressLine2,
        'AddressLine3': AddressLine3,
        'Town': Town,
        'County': County,
        'Country': Country,
        'Postcode': Postcode,
        'Duration': Duration,
        'DateStarted': DateStarted,
        'TotalNumberOfMonths': TotalNumberOfMonths
    };

    getTypeName() => "AddressWithTimeLinev2";
    TypeContext? context = _ctx;
}

class Address implements IConvertible
{
    String? AddressLine1;
    String? AddressLine2;
    String? AddressLine3;
    String? AddressLine4;
    String? AddressLine5;
    String? Postcode;

    Address({this.AddressLine1,this.AddressLine2,this.AddressLine3,this.AddressLine4,this.AddressLine5,this.Postcode});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AddressLine1 = json['AddressLine1'];
        AddressLine2 = json['AddressLine2'];
        AddressLine3 = json['AddressLine3'];
        AddressLine4 = json['AddressLine4'];
        AddressLine5 = json['AddressLine5'];
        Postcode = json['Postcode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AddressLine1': AddressLine1,
        'AddressLine2': AddressLine2,
        'AddressLine3': AddressLine3,
        'AddressLine4': AddressLine4,
        'AddressLine5': AddressLine5,
        'Postcode': Postcode
    };

    getTypeName() => "Address";
    TypeContext? context = _ctx;
}

class EmployerDetailsv2 implements IConvertible
{
    String? EmploymentType;
    String? EmployersName;
    String? Occupation;
    AddressWithTimeLinev2? EmployersAddress;

    EmployerDetailsv2({this.EmploymentType,this.EmployersName,this.Occupation,this.EmployersAddress});
    EmployerDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        EmploymentType = json['EmploymentType'];
        EmployersName = json['EmployersName'];
        Occupation = json['Occupation'];
        EmployersAddress = JsonConverters.fromJson(json['EmployersAddress'],'AddressWithTimeLinev2',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'EmploymentType': EmploymentType,
        'EmployersName': EmployersName,
        'Occupation': Occupation,
        'EmployersAddress': JsonConverters.toJson(EmployersAddress,'AddressWithTimeLinev2',context!)
    };

    getTypeName() => "EmployerDetailsv2";
    TypeContext? context = _ctx;
}

class CurrentEmploymentDetailsv2 implements IConvertible
{
    EmployerDetailsv2? EmployerDetails;
    String? MonthsAtEmployer;
    String? DateEmploymentCommenced;
    String? AnnualIncome;

    CurrentEmploymentDetailsv2({this.EmployerDetails,this.MonthsAtEmployer,this.DateEmploymentCommenced,this.AnnualIncome});
    CurrentEmploymentDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        EmployerDetails = JsonConverters.fromJson(json['EmployerDetails'],'EmployerDetailsv2',context!);
        MonthsAtEmployer = json['MonthsAtEmployer'];
        DateEmploymentCommenced = json['DateEmploymentCommenced'];
        AnnualIncome = json['AnnualIncome'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'EmployerDetails': JsonConverters.toJson(EmployerDetails,'EmployerDetailsv2',context!),
        'MonthsAtEmployer': MonthsAtEmployer,
        'DateEmploymentCommenced': DateEmploymentCommenced,
        'AnnualIncome': AnnualIncome
    };

    getTypeName() => "CurrentEmploymentDetailsv2";
    TypeContext? context = _ctx;
}

class MarketingPreference implements IConvertible
{
    String? OptInMail;
    String? OptInTelephone;
    String? OptInEmail;
    String? OptInSMS;

    MarketingPreference({this.OptInMail,this.OptInTelephone,this.OptInEmail,this.OptInSMS});
    MarketingPreference.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        OptInMail = json['OptInMail'];
        OptInTelephone = json['OptInTelephone'];
        OptInEmail = json['OptInEmail'];
        OptInSMS = json['OptInSMS'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'OptInMail': OptInMail,
        'OptInTelephone': OptInTelephone,
        'OptInEmail': OptInEmail,
        'OptInSMS': OptInSMS
    };

    getTypeName() => "MarketingPreference";
    TypeContext? context = _ctx;
}

class CreditApplicationIndividualV2 implements IConvertible
{
    String? Title;
    String? Initial;
    String? FirstName;
    String? Surname;
    String? DateofBirth;
    String? Gender;
    String? MaritalStatus;
    String? ResidentialStatus;
    AddressWithTimeLinev2? CurrentAddress;
    List<PreviousAddressv2>? PreviousAddresses;
    String? HomePhone;
    String? MobilePhone;
    String? WorkPhone;
    String? ContactAtWork;
    String? Email;
    String? BankSortCode;
    String? BankAccountNumber;
    String? BankAccountName;
    String? BankName;
    Address? BankAddress;
    String? BankPaymentType;
    String? DrivingLicenceNumber;
    CurrentEmploymentDetailsv2? CurrentEmploymentDetails;
    List<PreviousEmploymentv2>? PreviousEmploymentDetails;
    MarketingPreference? MarketingPreference;
    String? CreditCheckConsent;

    CreditApplicationIndividualV2({this.Title,this.Initial,this.FirstName,this.Surname,this.DateofBirth,this.Gender,this.MaritalStatus,this.ResidentialStatus,this.CurrentAddress,this.PreviousAddresses,this.HomePhone,this.MobilePhone,this.WorkPhone,this.ContactAtWork,this.Email,this.BankSortCode,this.BankAccountNumber,this.BankAccountName,this.BankName,this.BankAddress,this.BankPaymentType,this.DrivingLicenceNumber,this.CurrentEmploymentDetails,this.PreviousEmploymentDetails,this.MarketingPreference,this.CreditCheckConsent});
    CreditApplicationIndividualV2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        Initial = json['Initial'];
        FirstName = json['FirstName'];
        Surname = json['Surname'];
        DateofBirth = json['DateofBirth'];
        Gender = json['Gender'];
        MaritalStatus = json['MaritalStatus'];
        ResidentialStatus = json['ResidentialStatus'];
        CurrentAddress = JsonConverters.fromJson(json['CurrentAddress'],'AddressWithTimeLinev2',context!);
        PreviousAddresses = JsonConverters.fromJson(json['PreviousAddresses'],'List<PreviousAddressv2>',context!);
        HomePhone = json['HomePhone'];
        MobilePhone = json['MobilePhone'];
        WorkPhone = json['WorkPhone'];
        ContactAtWork = json['ContactAtWork'];
        Email = json['Email'];
        BankSortCode = json['BankSortCode'];
        BankAccountNumber = json['BankAccountNumber'];
        BankAccountName = json['BankAccountName'];
        BankName = json['BankName'];
        BankAddress = JsonConverters.fromJson(json['BankAddress'],'Address',context!);
        BankPaymentType = json['BankPaymentType'];
        DrivingLicenceNumber = json['DrivingLicenceNumber'];
        CurrentEmploymentDetails = JsonConverters.fromJson(json['CurrentEmploymentDetails'],'CurrentEmploymentDetailsv2',context!);
        PreviousEmploymentDetails = JsonConverters.fromJson(json['PreviousEmploymentDetails'],'List<PreviousEmploymentv2>',context!);
        MarketingPreference = JsonConverters.fromJson(json['MarketingPreference'],'MarketingPreference',context!);
        CreditCheckConsent = json['CreditCheckConsent'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'Initial': Initial,
        'FirstName': FirstName,
        'Surname': Surname,
        'DateofBirth': DateofBirth,
        'Gender': Gender,
        'MaritalStatus': MaritalStatus,
        'ResidentialStatus': ResidentialStatus,
        'CurrentAddress': JsonConverters.toJson(CurrentAddress,'AddressWithTimeLinev2',context!),
        'PreviousAddresses': JsonConverters.toJson(PreviousAddresses,'List<PreviousAddressv2>',context!),
        'HomePhone': HomePhone,
        'MobilePhone': MobilePhone,
        'WorkPhone': WorkPhone,
        'ContactAtWork': ContactAtWork,
        'Email': Email,
        'BankSortCode': BankSortCode,
        'BankAccountNumber': BankAccountNumber,
        'BankAccountName': BankAccountName,
        'BankName': BankName,
        'BankAddress': JsonConverters.toJson(BankAddress,'Address',context!),
        'BankPaymentType': BankPaymentType,
        'DrivingLicenceNumber': DrivingLicenceNumber,
        'CurrentEmploymentDetails': JsonConverters.toJson(CurrentEmploymentDetails,'CurrentEmploymentDetailsv2',context!),
        'PreviousEmploymentDetails': JsonConverters.toJson(PreviousEmploymentDetails,'List<PreviousEmploymentv2>',context!),
        'MarketingPreference': JsonConverters.toJson(MarketingPreference,'MarketingPreference',context!),
        'CreditCheckConsent': CreditCheckConsent
    };

    getTypeName() => "CreditApplicationIndividualV2";
    TypeContext? context = _ctx;
}

class CreditApplicationBusinessV2 implements IConvertible
{
    String? TypeOfBusiness;
    String? BusinessContactPosition;
    String? Title;
    String? Initial;
    String? FirstName;
    String? Surname;
    AddressWithTimeLinev2? CurrentHomeAddress;
    String? HomePhone;
    String? WorkPhone;
    String? MobilePhone;
    String? Email;
    String? CompanyName;
    String? CompanyRegistrationNumber;
    String? TradingAs;
    String? BusinessActivity;
    int? NumberOfEmployees;
    int? YearsTrading;
    String? Position;
    String? BankSortCode;
    String? BankAccountNumber;
    String? BankAccountName;
    String? BankName;
    Address? BankAddress;
    int? NumberofPartners;
    List<BusinessPartnerv2>? BusinessPartners;
    MarketingPreference? MarketingPreference;
    List<PreviousAddressv2>? PreviousAddresses;

    CreditApplicationBusinessV2({this.TypeOfBusiness,this.BusinessContactPosition,this.Title,this.Initial,this.FirstName,this.Surname,this.CurrentHomeAddress,this.HomePhone,this.WorkPhone,this.MobilePhone,this.Email,this.CompanyName,this.CompanyRegistrationNumber,this.TradingAs,this.BusinessActivity,this.NumberOfEmployees,this.YearsTrading,this.Position,this.BankSortCode,this.BankAccountNumber,this.BankAccountName,this.BankName,this.BankAddress,this.NumberofPartners,this.BusinessPartners,this.MarketingPreference,this.PreviousAddresses});
    CreditApplicationBusinessV2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TypeOfBusiness = json['TypeOfBusiness'];
        BusinessContactPosition = json['BusinessContactPosition'];
        Title = json['Title'];
        Initial = json['Initial'];
        FirstName = json['FirstName'];
        Surname = json['Surname'];
        CurrentHomeAddress = JsonConverters.fromJson(json['CurrentHomeAddress'],'AddressWithTimeLinev2',context!);
        HomePhone = json['HomePhone'];
        WorkPhone = json['WorkPhone'];
        MobilePhone = json['MobilePhone'];
        Email = json['Email'];
        CompanyName = json['CompanyName'];
        CompanyRegistrationNumber = json['CompanyRegistrationNumber'];
        TradingAs = json['TradingAs'];
        BusinessActivity = json['BusinessActivity'];
        NumberOfEmployees = json['NumberOfEmployees'];
        YearsTrading = json['YearsTrading'];
        Position = json['Position'];
        BankSortCode = json['BankSortCode'];
        BankAccountNumber = json['BankAccountNumber'];
        BankAccountName = json['BankAccountName'];
        BankName = json['BankName'];
        BankAddress = JsonConverters.fromJson(json['BankAddress'],'Address',context!);
        NumberofPartners = json['NumberofPartners'];
        BusinessPartners = JsonConverters.fromJson(json['BusinessPartners'],'List<BusinessPartnerv2>',context!);
        MarketingPreference = JsonConverters.fromJson(json['MarketingPreference'],'MarketingPreference',context!);
        PreviousAddresses = JsonConverters.fromJson(json['PreviousAddresses'],'List<PreviousAddressv2>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TypeOfBusiness': TypeOfBusiness,
        'BusinessContactPosition': BusinessContactPosition,
        'Title': Title,
        'Initial': Initial,
        'FirstName': FirstName,
        'Surname': Surname,
        'CurrentHomeAddress': JsonConverters.toJson(CurrentHomeAddress,'AddressWithTimeLinev2',context!),
        'HomePhone': HomePhone,
        'WorkPhone': WorkPhone,
        'MobilePhone': MobilePhone,
        'Email': Email,
        'CompanyName': CompanyName,
        'CompanyRegistrationNumber': CompanyRegistrationNumber,
        'TradingAs': TradingAs,
        'BusinessActivity': BusinessActivity,
        'NumberOfEmployees': NumberOfEmployees,
        'YearsTrading': YearsTrading,
        'Position': Position,
        'BankSortCode': BankSortCode,
        'BankAccountNumber': BankAccountNumber,
        'BankAccountName': BankAccountName,
        'BankName': BankName,
        'BankAddress': JsonConverters.toJson(BankAddress,'Address',context!),
        'NumberofPartners': NumberofPartners,
        'BusinessPartners': JsonConverters.toJson(BusinessPartners,'List<BusinessPartnerv2>',context!),
        'MarketingPreference': JsonConverters.toJson(MarketingPreference,'MarketingPreference',context!),
        'PreviousAddresses': JsonConverters.toJson(PreviousAddresses,'List<PreviousAddressv2>',context!)
    };

    getTypeName() => "CreditApplicationBusinessV2";
    TypeContext? context = _ctx;
}

class PaymentDetails implements IConvertible
{
    List<PaymentDetail>? paymentDetails;

    PaymentDetails({this.paymentDetails});
    PaymentDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        paymentDetails = JsonConverters.fromJson(json['paymentDetails'],'List<PaymentDetail>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'paymentDetails': JsonConverters.toJson(paymentDetails,'List<PaymentDetail>',context!)
    };

    getTypeName() => "PaymentDetails";
    TypeContext? context = _ctx;
}

class DiPDetails implements IConvertible
{
    String? DiPCustomerId;
    String? DiPTimestamp;
    String? DiPRequestID;
    String? DiPDecisionType;
    String? DiPPrimaryDecisionCode;
    String? DiPDecisionDescription;
    String? DipDecisionDescriptionCode;
    String? DipPrimaryDecisionReason;
    String? DiPPrimaryDecisionReasonDealerMessage;
    List<DiPReasons>? diPReasons;

    DiPDetails({this.DiPCustomerId,this.DiPTimestamp,this.DiPRequestID,this.DiPDecisionType,this.DiPPrimaryDecisionCode,this.DiPDecisionDescription,this.DipDecisionDescriptionCode,this.DipPrimaryDecisionReason,this.DiPPrimaryDecisionReasonDealerMessage,this.diPReasons});
    DiPDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DiPCustomerId = json['DiPCustomerId'];
        DiPTimestamp = json['DiPTimestamp'];
        DiPRequestID = json['DiPRequestID'];
        DiPDecisionType = json['DiPDecisionType'];
        DiPPrimaryDecisionCode = json['DiPPrimaryDecisionCode'];
        DiPDecisionDescription = json['DiPDecisionDescription'];
        DipDecisionDescriptionCode = json['DipDecisionDescriptionCode'];
        DipPrimaryDecisionReason = json['DipPrimaryDecisionReason'];
        DiPPrimaryDecisionReasonDealerMessage = json['DiPPrimaryDecisionReasonDealerMessage'];
        diPReasons = JsonConverters.fromJson(json['diPReasons'],'List<DiPReasons>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DiPCustomerId': DiPCustomerId,
        'DiPTimestamp': DiPTimestamp,
        'DiPRequestID': DiPRequestID,
        'DiPDecisionType': DiPDecisionType,
        'DiPPrimaryDecisionCode': DiPPrimaryDecisionCode,
        'DiPDecisionDescription': DiPDecisionDescription,
        'DipDecisionDescriptionCode': DipDecisionDescriptionCode,
        'DipPrimaryDecisionReason': DipPrimaryDecisionReason,
        'DiPPrimaryDecisionReasonDealerMessage': DiPPrimaryDecisionReasonDealerMessage,
        'diPReasons': JsonConverters.toJson(diPReasons,'List<DiPReasons>',context!)
    };

    getTypeName() => "DiPDetails";
    TypeContext? context = _ctx;
}

// @DataContract
class CreateOCAv2Request implements IConvertible
{
    // @DataMember
    String? Username;

    // @DataMember
    String? Timestamp;

    // @DataMember
    String? Token;

    // @DataMember
    GeneralDetailsv2? GeneralDetails;

    // @DataMember
    FinanceDetailsv2? FinanceDetails;

    // @DataMember
    VehicleDetailsv2? VehicleDetails;

    // @DataMember
    DeliveryDetailsv2? DeliveryDetails;

    // @DataMember
    ExistingVehicleDetailsv2? ExistingVehicleDetails;

    // @DataMember
    InsuranceDetails? InsuranceDetails;

    // @DataMember
    CreditApplicationIndividualV2? CreditApplicationIndividual;

    // @DataMember
    CreditApplicationBusinessV2? CreditApplicationBusiness;

    // @DataMember
    PaymentDetails? PaymentDetails;

    // @DataMember
    List<NoteDetails>? Notes;

    // @DataMember
    DiPDetails? DiPDetails;

    CreateOCAv2Request({this.Username,this.Timestamp,this.Token,this.GeneralDetails,this.FinanceDetails,this.VehicleDetails,this.DeliveryDetails,this.ExistingVehicleDetails,this.InsuranceDetails,this.CreditApplicationIndividual,this.CreditApplicationBusiness,this.PaymentDetails,this.Notes,this.DiPDetails});
    CreateOCAv2Request.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Username = json['Username'];
        Timestamp = json['Timestamp'];
        Token = json['Token'];
        GeneralDetails = JsonConverters.fromJson(json['GeneralDetails'],'GeneralDetailsv2',context!);
        FinanceDetails = JsonConverters.fromJson(json['FinanceDetails'],'FinanceDetailsv2',context!);
        VehicleDetails = JsonConverters.fromJson(json['VehicleDetails'],'VehicleDetailsv2',context!);
        DeliveryDetails = JsonConverters.fromJson(json['DeliveryDetails'],'DeliveryDetailsv2',context!);
        ExistingVehicleDetails = JsonConverters.fromJson(json['ExistingVehicleDetails'],'ExistingVehicleDetailsv2',context!);
        InsuranceDetails = JsonConverters.fromJson(json['InsuranceDetails'],'InsuranceDetails',context!);
        CreditApplicationIndividual = JsonConverters.fromJson(json['CreditApplicationIndividual'],'CreditApplicationIndividualV2',context!);
        CreditApplicationBusiness = JsonConverters.fromJson(json['CreditApplicationBusiness'],'CreditApplicationBusinessV2',context!);
        PaymentDetails = JsonConverters.fromJson(json['PaymentDetails'],'PaymentDetails',context!);
        Notes = JsonConverters.fromJson(json['Notes'],'List<NoteDetails>',context!);
        DiPDetails = JsonConverters.fromJson(json['DiPDetails'],'DiPDetails',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Username': Username,
        'Timestamp': Timestamp,
        'Token': Token,
        'GeneralDetails': JsonConverters.toJson(GeneralDetails,'GeneralDetailsv2',context!),
        'FinanceDetails': JsonConverters.toJson(FinanceDetails,'FinanceDetailsv2',context!),
        'VehicleDetails': JsonConverters.toJson(VehicleDetails,'VehicleDetailsv2',context!),
        'DeliveryDetails': JsonConverters.toJson(DeliveryDetails,'DeliveryDetailsv2',context!),
        'ExistingVehicleDetails': JsonConverters.toJson(ExistingVehicleDetails,'ExistingVehicleDetailsv2',context!),
        'InsuranceDetails': JsonConverters.toJson(InsuranceDetails,'InsuranceDetails',context!),
        'CreditApplicationIndividual': JsonConverters.toJson(CreditApplicationIndividual,'CreditApplicationIndividualV2',context!),
        'CreditApplicationBusiness': JsonConverters.toJson(CreditApplicationBusiness,'CreditApplicationBusinessV2',context!),
        'PaymentDetails': JsonConverters.toJson(PaymentDetails,'PaymentDetails',context!),
        'Notes': JsonConverters.toJson(Notes,'List<NoteDetails>',context!),
        'DiPDetails': JsonConverters.toJson(DiPDetails,'DiPDetails',context!)
    };

    getTypeName() => "CreateOCAv2Request";
    TypeContext? context = _ctx;
}

class ModelOptionDetailsv2 implements IConvertible
{
    int? Seq;
    String? Type;
    String? Code;
    String? Description;
    double? Price;
    double? PriceGross;
    String? VATCategory;
    double? VATAmount;

    ModelOptionDetailsv2({this.Seq,this.Type,this.Code,this.Description,this.Price,this.PriceGross,this.VATCategory,this.VATAmount});
    ModelOptionDetailsv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        Type = json['Type'];
        Code = json['Code'];
        Description = json['Description'];
        Price = JsonConverters.toDouble(json['Price']);
        PriceGross = JsonConverters.toDouble(json['PriceGross']);
        VATCategory = json['VATCategory'];
        VATAmount = JsonConverters.toDouble(json['VATAmount']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'Type': Type,
        'Code': Code,
        'Description': Description,
        'Price': Price,
        'PriceGross': PriceGross,
        'VATCategory': VATCategory,
        'VATAmount': VATAmount
    };

    getTypeName() => "ModelOptionDetailsv2";
    TypeContext? context = _ctx;
}

class PreviousAddressv2 implements IConvertible
{
    int? Seq;
    AddressWithTimeLinev2? Address;

    PreviousAddressv2({this.Seq,this.Address});
    PreviousAddressv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        Address = JsonConverters.fromJson(json['Address'],'AddressWithTimeLinev2',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'Address': JsonConverters.toJson(Address,'AddressWithTimeLinev2',context!)
    };

    getTypeName() => "PreviousAddressv2";
    TypeContext? context = _ctx;
}

class PreviousEmploymentv2 implements IConvertible
{
    int? Seq;
    EmployerDetailsv2? previousEmployment;

    PreviousEmploymentv2({this.Seq,this.previousEmployment});
    PreviousEmploymentv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        previousEmployment = JsonConverters.fromJson(json['previousEmployment'],'EmployerDetailsv2',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'previousEmployment': JsonConverters.toJson(previousEmployment,'EmployerDetailsv2',context!)
    };

    getTypeName() => "PreviousEmploymentv2";
    TypeContext? context = _ctx;
}

class BusinessPartnerv2 implements IConvertible
{
    int? Seq;
    String? Title;
    String? Initial;
    String? FirstName;
    String? Surname;
    String? DateofBirth;
    String? Gender;
    String? MaritalStatus;
    String? ResidentialStatus;
    AddressWithTimeLinev2? CurrentAddress;
    List<PreviousAddressv2>? PreviousAddresses;
    String? HomePhone;
    String? MobilePhone;
    String? BusinessPhone;
    String? Relationship;
    String? Email;
    CurrentEmploymentDetailsv2? CurrentEmploymentDetails;
    List<PreviousEmploymentv2>? PreviousEmploymentDetails;
    String? PartnerType;

    BusinessPartnerv2({this.Seq,this.Title,this.Initial,this.FirstName,this.Surname,this.DateofBirth,this.Gender,this.MaritalStatus,this.ResidentialStatus,this.CurrentAddress,this.PreviousAddresses,this.HomePhone,this.MobilePhone,this.BusinessPhone,this.Relationship,this.Email,this.CurrentEmploymentDetails,this.PreviousEmploymentDetails,this.PartnerType});
    BusinessPartnerv2.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        Title = json['Title'];
        Initial = json['Initial'];
        FirstName = json['FirstName'];
        Surname = json['Surname'];
        DateofBirth = json['DateofBirth'];
        Gender = json['Gender'];
        MaritalStatus = json['MaritalStatus'];
        ResidentialStatus = json['ResidentialStatus'];
        CurrentAddress = JsonConverters.fromJson(json['CurrentAddress'],'AddressWithTimeLinev2',context!);
        PreviousAddresses = JsonConverters.fromJson(json['PreviousAddresses'],'List<PreviousAddressv2>',context!);
        HomePhone = json['HomePhone'];
        MobilePhone = json['MobilePhone'];
        BusinessPhone = json['BusinessPhone'];
        Relationship = json['Relationship'];
        Email = json['Email'];
        CurrentEmploymentDetails = JsonConverters.fromJson(json['CurrentEmploymentDetails'],'CurrentEmploymentDetailsv2',context!);
        PreviousEmploymentDetails = JsonConverters.fromJson(json['PreviousEmploymentDetails'],'List<PreviousEmploymentv2>',context!);
        PartnerType = json['PartnerType'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'Title': Title,
        'Initial': Initial,
        'FirstName': FirstName,
        'Surname': Surname,
        'DateofBirth': DateofBirth,
        'Gender': Gender,
        'MaritalStatus': MaritalStatus,
        'ResidentialStatus': ResidentialStatus,
        'CurrentAddress': JsonConverters.toJson(CurrentAddress,'AddressWithTimeLinev2',context!),
        'PreviousAddresses': JsonConverters.toJson(PreviousAddresses,'List<PreviousAddressv2>',context!),
        'HomePhone': HomePhone,
        'MobilePhone': MobilePhone,
        'BusinessPhone': BusinessPhone,
        'Relationship': Relationship,
        'Email': Email,
        'CurrentEmploymentDetails': JsonConverters.toJson(CurrentEmploymentDetails,'CurrentEmploymentDetailsv2',context!),
        'PreviousEmploymentDetails': JsonConverters.toJson(PreviousEmploymentDetails,'List<PreviousEmploymentv2>',context!),
        'PartnerType': PartnerType
    };

    getTypeName() => "BusinessPartnerv2";
    TypeContext? context = _ctx;
}

class PaymentDetail implements IConvertible
{
    int? Seq;
    String? PaymentType;
    double? AmountPaid;
    String? PaymentTransactionID;
    String? Description;
    String? PaymentDateTime;

    PaymentDetail({this.Seq,this.PaymentType,this.AmountPaid,this.PaymentTransactionID,this.Description,this.PaymentDateTime});
    PaymentDetail.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        PaymentType = json['PaymentType'];
        AmountPaid = JsonConverters.toDouble(json['AmountPaid']);
        PaymentTransactionID = json['PaymentTransactionID'];
        Description = json['Description'];
        PaymentDateTime = json['PaymentDateTime'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'PaymentType': PaymentType,
        'AmountPaid': AmountPaid,
        'PaymentTransactionID': PaymentTransactionID,
        'Description': Description,
        'PaymentDateTime': PaymentDateTime
    };

    getTypeName() => "PaymentDetail";
    TypeContext? context = _ctx;
}

class NoteDetails implements IConvertible
{
    int? Seq;
    String? Note;

    NoteDetails({this.Seq,this.Note});
    NoteDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        Note = json['Note'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'Note': Note
    };

    getTypeName() => "NoteDetails";
    TypeContext? context = _ctx;
}

class DiPReasons implements IConvertible
{
    int? DipReasonSeq;
    String? DipDecisionCode;
    String? DiPDecisionReason;
    String? DiPDealerMessage;

    DiPReasons({this.DipReasonSeq,this.DipDecisionCode,this.DiPDecisionReason,this.DiPDealerMessage});
    DiPReasons.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DipReasonSeq = json['DipReasonSeq'];
        DipDecisionCode = json['DipDecisionCode'];
        DiPDecisionReason = json['DiPDecisionReason'];
        DiPDealerMessage = json['DiPDealerMessage'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DipReasonSeq': DipReasonSeq,
        'DipDecisionCode': DipDecisionCode,
        'DiPDecisionReason': DiPDecisionReason,
        'DiPDealerMessage': DiPDealerMessage
    };

    getTypeName() => "DiPReasons";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'webservices.mbukdatabase.co.uk', types: <String, TypeInfo> {
    'CreateOCAv2RequestResponse': TypeInfo(TypeOf.Class, create:() => CreateOCAv2RequestResponse()),
    'GeneralDetailsv2': TypeInfo(TypeOf.Class, create:() => GeneralDetailsv2()),
    'FinanceDetailsv2': TypeInfo(TypeOf.Class, create:() => FinanceDetailsv2()),
    'VehicleDetailsv2': TypeInfo(TypeOf.Class, create:() => VehicleDetailsv2()),
    'List<ModelOptionDetailsv2>': TypeInfo(TypeOf.Class, create:() => <ModelOptionDetailsv2>[]),
    'ModelOptionDetailsv2': TypeInfo(TypeOf.Class, create:() => ModelOptionDetailsv2()),
    'DeliveryDetailsv2': TypeInfo(TypeOf.Class, create:() => DeliveryDetailsv2()),
    'ExistingVehicleDetailsv2': TypeInfo(TypeOf.Class, create:() => ExistingVehicleDetailsv2()),
    'InsuranceDetails': TypeInfo(TypeOf.Class, create:() => InsuranceDetails()),
    'AddressWithTimeLinev2': TypeInfo(TypeOf.Class, create:() => AddressWithTimeLinev2()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'EmployerDetailsv2': TypeInfo(TypeOf.Class, create:() => EmployerDetailsv2()),
    'CurrentEmploymentDetailsv2': TypeInfo(TypeOf.Class, create:() => CurrentEmploymentDetailsv2()),
    'MarketingPreference': TypeInfo(TypeOf.Class, create:() => MarketingPreference()),
    'CreditApplicationIndividualV2': TypeInfo(TypeOf.Class, create:() => CreditApplicationIndividualV2()),
    'List<PreviousAddressv2>': TypeInfo(TypeOf.Class, create:() => <PreviousAddressv2>[]),
    'PreviousAddressv2': TypeInfo(TypeOf.Class, create:() => PreviousAddressv2()),
    'List<PreviousEmploymentv2>': TypeInfo(TypeOf.Class, create:() => <PreviousEmploymentv2>[]),
    'PreviousEmploymentv2': TypeInfo(TypeOf.Class, create:() => PreviousEmploymentv2()),
    'CreditApplicationBusinessV2': TypeInfo(TypeOf.Class, create:() => CreditApplicationBusinessV2()),
    'List<BusinessPartnerv2>': TypeInfo(TypeOf.Class, create:() => <BusinessPartnerv2>[]),
    'BusinessPartnerv2': TypeInfo(TypeOf.Class, create:() => BusinessPartnerv2()),
    'PaymentDetails': TypeInfo(TypeOf.Class, create:() => PaymentDetails()),
    'List<PaymentDetail>': TypeInfo(TypeOf.Class, create:() => <PaymentDetail>[]),
    'PaymentDetail': TypeInfo(TypeOf.Class, create:() => PaymentDetail()),
    'DiPDetails': TypeInfo(TypeOf.Class, create:() => DiPDetails()),
    'List<DiPReasons>': TypeInfo(TypeOf.Class, create:() => <DiPReasons>[]),
    'DiPReasons': TypeInfo(TypeOf.Class, create:() => DiPReasons()),
    'CreateOCAv2Request': TypeInfo(TypeOf.Class, create:() => CreateOCAv2Request()),
    'List<NoteDetails>': TypeInfo(TypeOf.Class, create:() => <NoteDetails>[]),
    'NoteDetails': TypeInfo(TypeOf.Class, create:() => NoteDetails()),
});

Dart 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

HTTP + JSON

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}