CDD Engine Web Service v2.14.0.0

<back to all web services

AllChecksApplicationDataRequest

Requires Authentication
The following routes are available for this service:
POST/allchecks/submit/json
import 'package:servicestack/servicestack.dart';

class StandardResponse implements IConvertible
{
    int? Status;
    String? CorrelationId;
    String? Message;

    StandardResponse({this.Status,this.CorrelationId,this.Message});
    StandardResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

enum SourceSystemType
{
    MARS,
    ASA,
    OLS,
    INASA,
}

enum CustomerType
{
    New,
    Existing,
    None,
}

class Partner implements IConvertible
{
    String? PartnerId;
    String? PartnerName;

    Partner({this.PartnerId,this.PartnerName});
    Partner.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

enum PricingPackageType
{
    CustomUk,
    MonthlyUk,
    SimplicityUk,
    PaygUk,
    CustomRoi,
    PaygeComUK,
    None,
}

enum PreferredContactMethodType
{
    Email,
    Telephone,
    Any,
}

class ContactPerson implements IConvertible
{
    String? Title;
    String? FirstName;
    String? MiddleName;
    String? LastName;
    String? TelephoneNumber;
    String? AltTelephoneNumber;
    String? Email;
    String? Position;
    PreferredContactMethodType? PreferredContactMethod;
    String? PreferredContactBestTime;

    ContactPerson({this.Title,this.FirstName,this.MiddleName,this.LastName,this.TelephoneNumber,this.AltTelephoneNumber,this.Email,this.Position,this.PreferredContactMethod,this.PreferredContactBestTime});
    ContactPerson.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        FirstName = json['FirstName'];
        MiddleName = json['MiddleName'];
        LastName = json['LastName'];
        TelephoneNumber = json['TelephoneNumber'];
        AltTelephoneNumber = json['AltTelephoneNumber'];
        Email = json['Email'];
        Position = json['Position'];
        PreferredContactMethod = JsonConverters.fromJson(json['PreferredContactMethod'],'PreferredContactMethodType',context!);
        PreferredContactBestTime = json['PreferredContactBestTime'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'FirstName': FirstName,
        'MiddleName': MiddleName,
        'LastName': LastName,
        'TelephoneNumber': TelephoneNumber,
        'AltTelephoneNumber': AltTelephoneNumber,
        'Email': Email,
        'Position': Position,
        'PreferredContactMethod': JsonConverters.toJson(PreferredContactMethod,'PreferredContactMethodType',context!),
        'PreferredContactBestTime': PreferredContactBestTime
    };

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

class AuthorisedSigner extends ContactPerson implements IConvertible
{
    DateTime? DateOfBirth;
    String? CountryCode;

    AuthorisedSigner({this.DateOfBirth,this.CountryCode});
    AuthorisedSigner.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        DateOfBirth = JsonConverters.fromJson(json['DateOfBirth'],'DateTime',context!);
        CountryCode = json['CountryCode'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'DateOfBirth': JsonConverters.toJson(DateOfBirth,'DateTime',context!),
        'CountryCode': CountryCode
    });

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

class AccessibilityOptions implements IConvertible
{
    bool? AudiotapeRequired;
    bool? LargePrintRequired;
    bool? UncontractedBrailleGrade1Required;
    bool? UncontractedBrailleGrade2Required;
    bool? NextGenerationTextRequired;

    AccessibilityOptions({this.AudiotapeRequired,this.LargePrintRequired,this.UncontractedBrailleGrade1Required,this.UncontractedBrailleGrade2Required,this.NextGenerationTextRequired});
    AccessibilityOptions.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AudiotapeRequired = json['AudiotapeRequired'];
        LargePrintRequired = json['LargePrintRequired'];
        UncontractedBrailleGrade1Required = json['UncontractedBrailleGrade1Required'];
        UncontractedBrailleGrade2Required = json['UncontractedBrailleGrade2Required'];
        NextGenerationTextRequired = json['NextGenerationTextRequired'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AudiotapeRequired': AudiotapeRequired,
        'LargePrintRequired': LargePrintRequired,
        'UncontractedBrailleGrade1Required': UncontractedBrailleGrade1Required,
        'UncontractedBrailleGrade2Required': UncontractedBrailleGrade2Required,
        'NextGenerationTextRequired': NextGenerationTextRequired
    };

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

class ApplicationDetails implements IConvertible
{
    SourceSystemType? SourceSystem;
    String? SourceSystemIdentifier;
    CustomerType? CustomerType;
    String? Csr;
    Partner? Partner;
    String? SellerCode;
    PricingPackageType? PricingPackage;
    AuthorisedSigner? ContactPerson;
    String? SpecialInstructions;
    String? OfferDetails;
    DateTime? DateContractAccepted;
    bool? WorldpayBusinessFinanceInterest;
    bool? Sar;
    String? SellerEmail;
    DateTime? AnticipatedGoLiveDate;
    AccessibilityOptions? AccessibilityOptions;
    String? UltimateParentId;

    ApplicationDetails({this.SourceSystem,this.SourceSystemIdentifier,this.CustomerType,this.Csr,this.Partner,this.SellerCode,this.PricingPackage,this.ContactPerson,this.SpecialInstructions,this.OfferDetails,this.DateContractAccepted,this.WorldpayBusinessFinanceInterest,this.Sar,this.SellerEmail,this.AnticipatedGoLiveDate,this.AccessibilityOptions,this.UltimateParentId});
    ApplicationDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SourceSystem = JsonConverters.fromJson(json['SourceSystem'],'SourceSystemType',context!);
        SourceSystemIdentifier = json['SourceSystemIdentifier'];
        CustomerType = JsonConverters.fromJson(json['CustomerType'],'CustomerType',context!);
        Csr = json['Csr'];
        Partner = JsonConverters.fromJson(json['Partner'],'Partner',context!);
        SellerCode = json['SellerCode'];
        PricingPackage = JsonConverters.fromJson(json['PricingPackage'],'PricingPackageType',context!);
        ContactPerson = JsonConverters.fromJson(json['ContactPerson'],'AuthorisedSigner',context!);
        SpecialInstructions = json['SpecialInstructions'];
        OfferDetails = json['OfferDetails'];
        DateContractAccepted = JsonConverters.fromJson(json['DateContractAccepted'],'DateTime',context!);
        WorldpayBusinessFinanceInterest = json['WorldpayBusinessFinanceInterest'];
        Sar = json['Sar'];
        SellerEmail = json['SellerEmail'];
        AnticipatedGoLiveDate = JsonConverters.fromJson(json['AnticipatedGoLiveDate'],'DateTime',context!);
        AccessibilityOptions = JsonConverters.fromJson(json['AccessibilityOptions'],'AccessibilityOptions',context!);
        UltimateParentId = json['UltimateParentId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SourceSystem': JsonConverters.toJson(SourceSystem,'SourceSystemType',context!),
        'SourceSystemIdentifier': SourceSystemIdentifier,
        'CustomerType': JsonConverters.toJson(CustomerType,'CustomerType',context!),
        'Csr': Csr,
        'Partner': JsonConverters.toJson(Partner,'Partner',context!),
        'SellerCode': SellerCode,
        'PricingPackage': JsonConverters.toJson(PricingPackage,'PricingPackageType',context!),
        'ContactPerson': JsonConverters.toJson(ContactPerson,'AuthorisedSigner',context!),
        'SpecialInstructions': SpecialInstructions,
        'OfferDetails': OfferDetails,
        'DateContractAccepted': JsonConverters.toJson(DateContractAccepted,'DateTime',context!),
        'WorldpayBusinessFinanceInterest': WorldpayBusinessFinanceInterest,
        'Sar': Sar,
        'SellerEmail': SellerEmail,
        'AnticipatedGoLiveDate': JsonConverters.toJson(AnticipatedGoLiveDate,'DateTime',context!),
        'AccessibilityOptions': JsonConverters.toJson(AccessibilityOptions,'AccessibilityOptions',context!),
        'UltimateParentId': UltimateParentId
    };

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

class Address implements IConvertible
{
    String? Address1;
    String? Address2;
    String? Address3;
    String? Postcode;
    String? City;
    String? State;
    String? Countrycode;

    Address({this.Address1,this.Address2,this.Address3,this.Postcode,this.City,this.State,this.Countrycode});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Address1 = json['Address1'];
        Address2 = json['Address2'];
        Address3 = json['Address3'];
        Postcode = json['Postcode'];
        City = json['City'];
        State = json['State'];
        Countrycode = json['Countrycode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Address1': Address1,
        'Address2': Address2,
        'Address3': Address3,
        'Postcode': Postcode,
        'City': City,
        'State': State,
        'Countrycode': Countrycode
    };

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

class BusinessAddress extends Address implements IConvertible
{
    bool? IsCommercial;

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

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

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'IsCommercial': IsCommercial
    });

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

enum CompanyType
{
    SoleTrader,
    Partnership,
    LimitedCompany,
    Trust,
    RegisteredCharity,
    PublicLimitedCompany,
    LimitedByGuarantee,
    ClubSocietyAssociation,
    CommunityInterestCompanyOrIndustrialProvident,
    LimitedLiabilityPartnership,
    Other,
}

class Financials implements IConvertible
{
    double? Annual;
    double? CardPercentage;
    double? CreditCardPercentage;
    double? AverageTransactionValue;

    Financials({this.Annual,this.CardPercentage,this.CreditCardPercentage,this.AverageTransactionValue});
    Financials.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Annual = JsonConverters.toDouble(json['Annual']);
        CardPercentage = JsonConverters.toDouble(json['CardPercentage']);
        CreditCardPercentage = JsonConverters.toDouble(json['CreditCardPercentage']);
        AverageTransactionValue = JsonConverters.toDouble(json['AverageTransactionValue']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Annual': Annual,
        'CardPercentage': CardPercentage,
        'CreditCardPercentage': CreditCardPercentage,
        'AverageTransactionValue': AverageTransactionValue
    };

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

class TradeAssociation implements IConvertible
{
    String? GroupName;
    String? MemberNumber;

    TradeAssociation({this.GroupName,this.MemberNumber});
    TradeAssociation.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

class Business implements IConvertible
{
    String? LegalName;
    BusinessAddress? LegalAddress;
    String? WebsiteAddress;
    CompanyType? CompanyType;
    String? CompanyTypeOther;
    String? CompanyRegistrationNumber;
    String? CharityNumber;
    String? MerchantCategoryCode;
    String? MerchantCategoryDescription;
    String? DescriptionOfGoodsAndServices;
    String? VatNumber;
    DateTime? DateStartedTrading;
    String? CountryOfIncorporation;
    String? RegionOfIncorporation;
    Financials? Financials;
    bool? NewToCards;
    TradeAssociation? TradeAssociation;

    Business({this.LegalName,this.LegalAddress,this.WebsiteAddress,this.CompanyType,this.CompanyTypeOther,this.CompanyRegistrationNumber,this.CharityNumber,this.MerchantCategoryCode,this.MerchantCategoryDescription,this.DescriptionOfGoodsAndServices,this.VatNumber,this.DateStartedTrading,this.CountryOfIncorporation,this.RegionOfIncorporation,this.Financials,this.NewToCards,this.TradeAssociation});
    Business.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        LegalName = json['LegalName'];
        LegalAddress = JsonConverters.fromJson(json['LegalAddress'],'BusinessAddress',context!);
        WebsiteAddress = json['WebsiteAddress'];
        CompanyType = JsonConverters.fromJson(json['CompanyType'],'CompanyType',context!);
        CompanyTypeOther = json['CompanyTypeOther'];
        CompanyRegistrationNumber = json['CompanyRegistrationNumber'];
        CharityNumber = json['CharityNumber'];
        MerchantCategoryCode = json['MerchantCategoryCode'];
        MerchantCategoryDescription = json['MerchantCategoryDescription'];
        DescriptionOfGoodsAndServices = json['DescriptionOfGoodsAndServices'];
        VatNumber = json['VatNumber'];
        DateStartedTrading = JsonConverters.fromJson(json['DateStartedTrading'],'DateTime',context!);
        CountryOfIncorporation = json['CountryOfIncorporation'];
        RegionOfIncorporation = json['RegionOfIncorporation'];
        Financials = JsonConverters.fromJson(json['Financials'],'Financials',context!);
        NewToCards = json['NewToCards'];
        TradeAssociation = JsonConverters.fromJson(json['TradeAssociation'],'TradeAssociation',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'LegalName': LegalName,
        'LegalAddress': JsonConverters.toJson(LegalAddress,'BusinessAddress',context!),
        'WebsiteAddress': WebsiteAddress,
        'CompanyType': JsonConverters.toJson(CompanyType,'CompanyType',context!),
        'CompanyTypeOther': CompanyTypeOther,
        'CompanyRegistrationNumber': CompanyRegistrationNumber,
        'CharityNumber': CharityNumber,
        'MerchantCategoryCode': MerchantCategoryCode,
        'MerchantCategoryDescription': MerchantCategoryDescription,
        'DescriptionOfGoodsAndServices': DescriptionOfGoodsAndServices,
        'VatNumber': VatNumber,
        'DateStartedTrading': JsonConverters.toJson(DateStartedTrading,'DateTime',context!),
        'CountryOfIncorporation': CountryOfIncorporation,
        'RegionOfIncorporation': RegionOfIncorporation,
        'Financials': JsonConverters.toJson(Financials,'Financials',context!),
        'NewToCards': NewToCards,
        'TradeAssociation': JsonConverters.toJson(TradeAssociation,'TradeAssociation',context!)
    };

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

class PrincipalAddress extends Address implements IConvertible
{
    DateTime? StartDate;
    DateTime? EndDate;

    PrincipalAddress({this.StartDate,this.EndDate});
    PrincipalAddress.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        StartDate = JsonConverters.fromJson(json['StartDate'],'DateTime',context!);
        EndDate = JsonConverters.fromJson(json['EndDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'StartDate': JsonConverters.toJson(StartDate,'DateTime',context!),
        'EndDate': JsonConverters.toJson(EndDate,'DateTime',context!)
    });

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

enum PositionType
{
    SoleTrader,
    Partner,
    Director,
    CompanySecretary,
    ChiefFinancialOfficer,
    Chairman,
    DesignatedBoardMember,
    Settlor,
    Treasurer,
    Trustee,
    ChiefExecutive,
    AuthorisedPersonWithConsent,
    NonExecutiveDirector,
    ContactPerson,
    Shareholder,
}

class Principal implements IConvertible
{
    String? Title;
    String? FirstName;
    String? MiddleName;
    String? LastName;
    DateTime? DateOfBirth;
    String? Nationality;
    List<PrincipalAddress>? HomeAddresses;
    double? OwnershipPercentage;
    PositionType? Position;
    bool? IsFinancialController;

    Principal({this.Title,this.FirstName,this.MiddleName,this.LastName,this.DateOfBirth,this.Nationality,this.HomeAddresses,this.OwnershipPercentage,this.Position,this.IsFinancialController});
    Principal.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        FirstName = json['FirstName'];
        MiddleName = json['MiddleName'];
        LastName = json['LastName'];
        DateOfBirth = JsonConverters.fromJson(json['DateOfBirth'],'DateTime',context!);
        Nationality = json['Nationality'];
        HomeAddresses = JsonConverters.fromJson(json['HomeAddresses'],'List<PrincipalAddress>',context!);
        OwnershipPercentage = JsonConverters.toDouble(json['OwnershipPercentage']);
        Position = JsonConverters.fromJson(json['Position'],'PositionType',context!);
        IsFinancialController = json['IsFinancialController'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'FirstName': FirstName,
        'MiddleName': MiddleName,
        'LastName': LastName,
        'DateOfBirth': JsonConverters.toJson(DateOfBirth,'DateTime',context!),
        'Nationality': Nationality,
        'HomeAddresses': JsonConverters.toJson(HomeAddresses,'List<PrincipalAddress>',context!),
        'OwnershipPercentage': OwnershipPercentage,
        'Position': JsonConverters.toJson(Position,'PositionType',context!),
        'IsFinancialController': IsFinancialController
    };

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

class BankAccount implements IConvertible
{
    String? SortCode;
    String? AccountNumber;
    String? BankName;
    String? BankAccountName;

    BankAccount({this.SortCode,this.AccountNumber,this.BankName,this.BankAccountName});
    BankAccount.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SortCode = json['SortCode'];
        AccountNumber = json['AccountNumber'];
        BankName = json['BankName'];
        BankAccountName = json['BankAccountName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SortCode': SortCode,
        'AccountNumber': AccountNumber,
        'BankName': BankName,
        'BankAccountName': BankAccountName
    };

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

class ClearingDetails implements IConvertible
{
    String? MerchantUrl;
    String? Telephone;
    String? Email;

    ClearingDetails({this.MerchantUrl,this.Telephone,this.Email});
    ClearingDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'MerchantUrl': MerchantUrl,
        'Telephone': Telephone,
        'Email': Email
    };

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

class OutletAllocatedProduct implements IConvertible
{
    int? Id;
    int? Quantity;

    OutletAllocatedProduct({this.Id,this.Quantity});
    OutletAllocatedProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

class Outlet implements IConvertible
{
    String? TradingName;
    BusinessAddress? TradingAddress;
    ContactPerson? ContactPerson;
    BusinessAddress? TerminalDeliveryAddress;
    BusinessAddress? CorrespondenceAddress;
    BankAccount? SettlementBankAccount;
    BankAccount? ChargesBankAccount;
    String? DirectDebitCorrespondenceEmail;
    ClearingDetails? ClearingDetails;
    List<OutletAllocatedProduct>? ProductAllocation;

    Outlet({this.TradingName,this.TradingAddress,this.ContactPerson,this.TerminalDeliveryAddress,this.CorrespondenceAddress,this.SettlementBankAccount,this.ChargesBankAccount,this.DirectDebitCorrespondenceEmail,this.ClearingDetails,this.ProductAllocation});
    Outlet.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TradingName = json['TradingName'];
        TradingAddress = JsonConverters.fromJson(json['TradingAddress'],'BusinessAddress',context!);
        ContactPerson = JsonConverters.fromJson(json['ContactPerson'],'ContactPerson',context!);
        TerminalDeliveryAddress = JsonConverters.fromJson(json['TerminalDeliveryAddress'],'BusinessAddress',context!);
        CorrespondenceAddress = JsonConverters.fromJson(json['CorrespondenceAddress'],'BusinessAddress',context!);
        SettlementBankAccount = JsonConverters.fromJson(json['SettlementBankAccount'],'BankAccount',context!);
        ChargesBankAccount = JsonConverters.fromJson(json['ChargesBankAccount'],'BankAccount',context!);
        DirectDebitCorrespondenceEmail = json['DirectDebitCorrespondenceEmail'];
        ClearingDetails = JsonConverters.fromJson(json['ClearingDetails'],'ClearingDetails',context!);
        ProductAllocation = JsonConverters.fromJson(json['ProductAllocation'],'List<OutletAllocatedProduct>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TradingName': TradingName,
        'TradingAddress': JsonConverters.toJson(TradingAddress,'BusinessAddress',context!),
        'ContactPerson': JsonConverters.toJson(ContactPerson,'ContactPerson',context!),
        'TerminalDeliveryAddress': JsonConverters.toJson(TerminalDeliveryAddress,'BusinessAddress',context!),
        'CorrespondenceAddress': JsonConverters.toJson(CorrespondenceAddress,'BusinessAddress',context!),
        'SettlementBankAccount': JsonConverters.toJson(SettlementBankAccount,'BankAccount',context!),
        'ChargesBankAccount': JsonConverters.toJson(ChargesBankAccount,'BankAccount',context!),
        'DirectDebitCorrespondenceEmail': DirectDebitCorrespondenceEmail,
        'ClearingDetails': JsonConverters.toJson(ClearingDetails,'ClearingDetails',context!),
        'ProductAllocation': JsonConverters.toJson(ProductAllocation,'List<OutletAllocatedProduct>',context!)
    };

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

class Deposits implements IConvertible
{
    bool? Accepted;
    int? PerOfSalesWhereInitialDepositTaken;
    int? SizePercOfTotalValue;
    int? AvgTimeBeforeDeliveryTaken;
    int? AvgTimeBeforeDeliveryBalanceTaken;

    Deposits({this.Accepted,this.PerOfSalesWhereInitialDepositTaken,this.SizePercOfTotalValue,this.AvgTimeBeforeDeliveryTaken,this.AvgTimeBeforeDeliveryBalanceTaken});
    Deposits.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Accepted = json['Accepted'];
        PerOfSalesWhereInitialDepositTaken = json['PerOfSalesWhereInitialDepositTaken'];
        SizePercOfTotalValue = json['SizePercOfTotalValue'];
        AvgTimeBeforeDeliveryTaken = json['AvgTimeBeforeDeliveryTaken'];
        AvgTimeBeforeDeliveryBalanceTaken = json['AvgTimeBeforeDeliveryBalanceTaken'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Accepted': Accepted,
        'PerOfSalesWhereInitialDepositTaken': PerOfSalesWhereInitialDepositTaken,
        'SizePercOfTotalValue': SizePercOfTotalValue,
        'AvgTimeBeforeDeliveryTaken': AvgTimeBeforeDeliveryTaken,
        'AvgTimeBeforeDeliveryBalanceTaken': AvgTimeBeforeDeliveryBalanceTaken
    };

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

class WarrantiesAndGuarantees implements IConvertible
{
    bool? LevyCharge;
    int? PercCardTurnover;
    int? AvgLengthInMonths;
    int? PercGoodsReturned;
    String? ThirdPartyProviders;

    WarrantiesAndGuarantees({this.LevyCharge,this.PercCardTurnover,this.AvgLengthInMonths,this.PercGoodsReturned,this.ThirdPartyProviders});
    WarrantiesAndGuarantees.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        LevyCharge = json['LevyCharge'];
        PercCardTurnover = json['PercCardTurnover'];
        AvgLengthInMonths = json['AvgLengthInMonths'];
        PercGoodsReturned = json['PercGoodsReturned'];
        ThirdPartyProviders = json['ThirdPartyProviders'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'LevyCharge': LevyCharge,
        'PercCardTurnover': PercCardTurnover,
        'AvgLengthInMonths': AvgLengthInMonths,
        'PercGoodsReturned': PercGoodsReturned,
        'ThirdPartyProviders': ThirdPartyProviders
    };

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

class Prepayments implements IConvertible
{
    bool? FullPaymentAcceptedPriorToSupply;
    int? PercGoodsWherePaymentTakenPriorToDelivery;
    int? AvgDaysPaymentTakenInAdvance;

    Prepayments({this.FullPaymentAcceptedPriorToSupply,this.PercGoodsWherePaymentTakenPriorToDelivery,this.AvgDaysPaymentTakenInAdvance});
    Prepayments.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'FullPaymentAcceptedPriorToSupply': FullPaymentAcceptedPriorToSupply,
        'PercGoodsWherePaymentTakenPriorToDelivery': PercGoodsWherePaymentTakenPriorToDelivery,
        'AvgDaysPaymentTakenInAdvance': AvgDaysPaymentTakenInAdvance
    };

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

class MembershipsSubscriptionAndInsurancePremiums implements IConvertible
{
    bool? LevyCharge;
    int? PercCardTurnover;
    int? AvgLengthInMonths;
    double? MembershipCost;

    MembershipsSubscriptionAndInsurancePremiums({this.LevyCharge,this.PercCardTurnover,this.AvgLengthInMonths,this.MembershipCost});
    MembershipsSubscriptionAndInsurancePremiums.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        LevyCharge = json['LevyCharge'];
        PercCardTurnover = json['PercCardTurnover'];
        AvgLengthInMonths = json['AvgLengthInMonths'];
        MembershipCost = JsonConverters.toDouble(json['MembershipCost']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'LevyCharge': LevyCharge,
        'PercCardTurnover': PercCardTurnover,
        'AvgLengthInMonths': AvgLengthInMonths,
        'MembershipCost': MembershipCost
    };

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

class GoodsAndServices implements IConvertible
{
    bool? GoodsProvidedByThirdParty;
    Deposits? Deposits;
    WarrantiesAndGuarantees? WarrantiesAndGuarantees;
    Prepayments? Prepayments;
    MembershipsSubscriptionAndInsurancePremiums? MembershipsSubscriptionAndInsurancePremiums;
    Address? StockHeldAtAnotherAddressLocation;

    GoodsAndServices({this.GoodsProvidedByThirdParty,this.Deposits,this.WarrantiesAndGuarantees,this.Prepayments,this.MembershipsSubscriptionAndInsurancePremiums,this.StockHeldAtAnotherAddressLocation});
    GoodsAndServices.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GoodsProvidedByThirdParty = json['GoodsProvidedByThirdParty'];
        Deposits = JsonConverters.fromJson(json['Deposits'],'Deposits',context!);
        WarrantiesAndGuarantees = JsonConverters.fromJson(json['WarrantiesAndGuarantees'],'WarrantiesAndGuarantees',context!);
        Prepayments = JsonConverters.fromJson(json['Prepayments'],'Prepayments',context!);
        MembershipsSubscriptionAndInsurancePremiums = JsonConverters.fromJson(json['MembershipsSubscriptionAndInsurancePremiums'],'MembershipsSubscriptionAndInsurancePremiums',context!);
        StockHeldAtAnotherAddressLocation = JsonConverters.fromJson(json['StockHeldAtAnotherAddressLocation'],'Address',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GoodsProvidedByThirdParty': GoodsProvidedByThirdParty,
        'Deposits': JsonConverters.toJson(Deposits,'Deposits',context!),
        'WarrantiesAndGuarantees': JsonConverters.toJson(WarrantiesAndGuarantees,'WarrantiesAndGuarantees',context!),
        'Prepayments': JsonConverters.toJson(Prepayments,'Prepayments',context!),
        'MembershipsSubscriptionAndInsurancePremiums': JsonConverters.toJson(MembershipsSubscriptionAndInsurancePremiums,'MembershipsSubscriptionAndInsurancePremiums',context!),
        'StockHeldAtAnotherAddressLocation': JsonConverters.toJson(StockHeldAtAnotherAddressLocation,'Address',context!)
    };

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

class MerchantDetails implements IConvertible
{
    Business? Business;
    List<Principal>? Principals;
    List<Outlet>? Outlets;
    GoodsAndServices? GoodsAndServices;

    MerchantDetails({this.Business,this.Principals,this.Outlets,this.GoodsAndServices});
    MerchantDetails.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Business = JsonConverters.fromJson(json['Business'],'Business',context!);
        Principals = JsonConverters.fromJson(json['Principals'],'List<Principal>',context!);
        Outlets = JsonConverters.fromJson(json['Outlets'],'List<Outlet>',context!);
        GoodsAndServices = JsonConverters.fromJson(json['GoodsAndServices'],'GoodsAndServices',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Business': JsonConverters.toJson(Business,'Business',context!),
        'Principals': JsonConverters.toJson(Principals,'List<Principal>',context!),
        'Outlets': JsonConverters.toJson(Outlets,'List<Outlet>',context!),
        'GoodsAndServices': JsonConverters.toJson(GoodsAndServices,'GoodsAndServices',context!)
    };

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

enum CardType
{
    VisaDebit,
    VisaCredit,
    VisaCommercial,
    MastercardDebit,
    MastercardCredit,
    MastercardCommercial,
    MastercardWorldSignia,
    JcbCredit,
    JcbDebit,
    JcbCommercial,
    DinersDiscoverCredit,
    DinersDiscoverDebit,
    DinersDiscoverCommercial,
    Amex,
    ChinaUnionPayCredit,
    ChinaUnionPayDebit,
    ChinaUnionPayCommercial,
    VisaBusinessDebit,
    MastercardBusiness,
}

class RateChargePair implements IConvertible
{
    double? Percent;
    double? Cost;

    RateChargePair({this.Percent,this.Cost});
    RateChargePair.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Percent = JsonConverters.toDouble(json['Percent']);
        Cost = JsonConverters.toDouble(json['Cost']);
        return this;
    }

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

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

class CardCharge implements IConvertible
{
    CardType? CardType;
    RateChargePair? Purchase;
    RateChargePair? Refund;

    CardCharge({this.CardType,this.Purchase,this.Refund});
    CardCharge.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CardType = JsonConverters.fromJson(json['CardType'],'CardType',context!);
        Purchase = JsonConverters.fromJson(json['Purchase'],'RateChargePair',context!);
        Refund = JsonConverters.fromJson(json['Refund'],'RateChargePair',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CardType': JsonConverters.toJson(CardType,'CardType',context!),
        'Purchase': JsonConverters.toJson(Purchase,'RateChargePair',context!),
        'Refund': JsonConverters.toJson(Refund,'RateChargePair',context!)
    };

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

enum PremiumTransactionChargeType
{
    Magstripe,
    CnpMoto,
    Paper,
    PanKeyEntry,
    SecureEcom,
    NonSecureEcom,
    InterRegional,
    IntraRegional,
    NonAuth,
}

class PremiumTransactionCharge implements IConvertible
{
    PremiumTransactionChargeType? Type;
    RateChargePair? CreditCard;
    RateChargePair? DebitCard;

    PremiumTransactionCharge({this.Type,this.CreditCard,this.DebitCard});
    PremiumTransactionCharge.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Type = JsonConverters.fromJson(json['Type'],'PremiumTransactionChargeType',context!);
        CreditCard = JsonConverters.fromJson(json['CreditCard'],'RateChargePair',context!);
        DebitCard = JsonConverters.fromJson(json['DebitCard'],'RateChargePair',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'PremiumTransactionChargeType',context!),
        'CreditCard': JsonConverters.toJson(CreditCard,'RateChargePair',context!),
        'DebitCard': JsonConverters.toJson(DebitCard,'RateChargePair',context!)
    };

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

enum AdditionalTarrifType
{
    NameAndAddressCheck,
    Auth,
    chargeback,
    Mmsc,
    PaperStatement,
    PciVerbalAssessment,
    PciIpScan,
    PciNonCompliance,
    PciSaferPaymentsPlus,
    JoiningFee,
    PayMonthlyAcquiringFee,
    PciSaferPayments,
}

class AdditionalTarrif implements IConvertible
{
    AdditionalTarrifType? Type;
    double? Cost;

    AdditionalTarrif({this.Type,this.Cost});
    AdditionalTarrif.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Type = JsonConverters.fromJson(json['Type'],'AdditionalTarrifType',context!);
        Cost = JsonConverters.toDouble(json['Cost']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'AdditionalTarrifType',context!),
        'Cost': Cost
    };

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

class Rates implements IConvertible
{
    List<CardCharge>? CardCharges;
    List<PremiumTransactionCharge>? PremiumTransactionCharges;
    List<AdditionalTarrif>? AdditionalTarrifs;

    Rates({this.CardCharges,this.PremiumTransactionCharges,this.AdditionalTarrifs});
    Rates.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CardCharges = JsonConverters.fromJson(json['CardCharges'],'List<CardCharge>',context!);
        PremiumTransactionCharges = JsonConverters.fromJson(json['PremiumTransactionCharges'],'List<PremiumTransactionCharge>',context!);
        AdditionalTarrifs = JsonConverters.fromJson(json['AdditionalTarrifs'],'List<AdditionalTarrif>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CardCharges': JsonConverters.toJson(CardCharges,'List<CardCharge>',context!),
        'PremiumTransactionCharges': JsonConverters.toJson(PremiumTransactionCharges,'List<PremiumTransactionCharge>',context!),
        'AdditionalTarrifs': JsonConverters.toJson(AdditionalTarrifs,'List<AdditionalTarrif>',context!)
    };

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

class Cnp implements IConvertible
{
    bool? Required;
    double? Percentage;

    Cnp({this.Required,this.Percentage});
    Cnp.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Required = json['Required'];
        Percentage = JsonConverters.toDouble(json['Percentage']);
        return this;
    }

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

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

class Amex implements IConvertible
{
    bool? Required;
    String? ExistingAmexNumber;

    Amex({this.Required,this.ExistingAmexNumber});
    Amex.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

class Services implements IConvertible
{
    Cnp? Cnp;
    Amex? Amex;
    bool? CashbackRequired;
    bool? WorldpayDashboardRequired;
    bool? PaperInvoicingRequired;

    Services({this.Cnp,this.Amex,this.CashbackRequired,this.WorldpayDashboardRequired,this.PaperInvoicingRequired});
    Services.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Cnp = JsonConverters.fromJson(json['Cnp'],'Cnp',context!);
        Amex = JsonConverters.fromJson(json['Amex'],'Amex',context!);
        CashbackRequired = json['CashbackRequired'];
        WorldpayDashboardRequired = json['WorldpayDashboardRequired'];
        PaperInvoicingRequired = json['PaperInvoicingRequired'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Cnp': JsonConverters.toJson(Cnp,'Cnp',context!),
        'Amex': JsonConverters.toJson(Amex,'Amex',context!),
        'CashbackRequired': CashbackRequired,
        'WorldpayDashboardRequired': WorldpayDashboardRequired,
        'PaperInvoicingRequired': PaperInvoicingRequired
    };

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

enum CurrencyCodeType
{
    GBP,
    EUR,
    USD,
    AED,
    AFN,
    ALL,
    AMD,
    ANG,
    AOA,
    ARS,
    AUD,
    AWG,
    AZN,
    BAM,
    BBD,
    BDT,
    BGN,
    BHD,
    BIF,
    BMD,
    BND,
    BOB,
    BRL,
    BSD,
    BTN,
    BWP,
    BYR,
    BZD,
    CAD,
    CDF,
    CHF,
    CLP,
    CNY,
    COP,
    COU,
    CRC,
    CUC,
    CUP,
    CVE,
    CZK,
    DJF,
    DKK,
    DOP,
    DZD,
    EEK,
    EGP,
    ERN,
    ETB,
    FJD,
    FKP,
    GEL,
    GHS,
    GIP,
    GMD,
    GNF,
    GTQ,
    GYD,
    HKD,
    HNL,
    HRK,
    HTG,
    HUF,
    IDR,
    ILS,
    INR,
    IQD,
    IRR,
    ISK,
    JMD,
    JOD,
    JPY,
    KES,
    KGS,
    KHR,
    KMF,
    KPW,
    KRW,
    KWD,
    KYD,
    KZT,
    LAK,
    LBP,
    LKR,
    LRD,
    LSL,
    LTL,
    LVL,
    LYD,
    MAD,
    MDL,
    MGA,
    MKD,
    MMK,
    MNT,
    MOP,
    MRO,
    MUR,
    MVR,
    MWK,
    MXN,
    MYR,
    MZN,
    NAD,
    NGN,
    NIO,
    NOK,
    NPR,
    NZD,
    OMR,
    PAB,
    PEN,
    PGK,
    PHP,
    PKR,
    PLN,
    PYG,
    QAR,
    RON,
    RSD,
    RUB,
    RWF,
    SAR,
    SBD,
    SCR,
    SDG,
    SEK,
    SGD,
    SHP,
    SLL,
    SOS,
    SRD,
    STD,
    SYP,
    SZL,
    THB,
    TJS,
    TMT,
    TND,
    TOP,
    TRY,
    TTD,
    TWD,
    TZS,
    UAH,
    UGX,
    UYU,
    UZS,
    VEF,
    VND,
    VUV,
    WST,
    YER,
    ZAR,
    ZMK,
    ZWL,
}

class TradingCurrency implements IConvertible
{
    List<CurrencyCodeType>? TransactionCurrencies;
    CurrencyCodeType? SettlementCurrency;
    String? SettlementBankSwift;
    String? SettlementBankIban;

    TradingCurrency({this.TransactionCurrencies,this.SettlementCurrency,this.SettlementBankSwift,this.SettlementBankIban});
    TradingCurrency.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        TransactionCurrencies = JsonConverters.fromJson(json['TransactionCurrencies'],'List<CurrencyCodeType>',context!);
        SettlementCurrency = JsonConverters.fromJson(json['SettlementCurrency'],'CurrencyCodeType',context!);
        SettlementBankSwift = json['SettlementBankSwift'];
        SettlementBankIban = json['SettlementBankIban'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'TransactionCurrencies': JsonConverters.toJson(TransactionCurrencies,'List<CurrencyCodeType>',context!),
        'SettlementCurrency': JsonConverters.toJson(SettlementCurrency,'CurrencyCodeType',context!),
        'SettlementBankSwift': SettlementBankSwift,
        'SettlementBankIban': SettlementBankIban
    };

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

class Acquiring implements IConvertible
{
    int? SettlementPeriodTPlus;
    Rates? Rates;
    Services? Services;
    List<TradingCurrency>? TradingCurrencies;

    Acquiring({this.SettlementPeriodTPlus,this.Rates,this.Services,this.TradingCurrencies});
    Acquiring.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SettlementPeriodTPlus = json['SettlementPeriodTPlus'];
        Rates = JsonConverters.fromJson(json['Rates'],'Rates',context!);
        Services = JsonConverters.fromJson(json['Services'],'Services',context!);
        TradingCurrencies = JsonConverters.fromJson(json['TradingCurrencies'],'List<TradingCurrency>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SettlementPeriodTPlus': SettlementPeriodTPlus,
        'Rates': JsonConverters.toJson(Rates,'Rates',context!),
        'Services': JsonConverters.toJson(Services,'Services',context!),
        'TradingCurrencies': JsonConverters.toJson(TradingCurrencies,'List<TradingCurrency>',context!)
    };

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

enum PosProductType
{
    Mobile,
    Wifi,
    Bluetooth,
    Fixed,
    PosMidOnly,
}

enum ProductFeeType
{
    HireCost,
    TransactionCost,
    ServiceFee,
    ManagedServiceSetup,
    ManagedServiceMonthly,
}

class ProductFee implements IConvertible
{
    ProductFeeType? Type;
    double? Cost;

    ProductFee({this.Type,this.Cost});
    ProductFee.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Type = JsonConverters.fromJson(json['Type'],'ProductFeeType',context!);
        Cost = JsonConverters.toDouble(json['Cost']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'ProductFeeType',context!),
        'Cost': Cost
    };

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

enum PosProductOptionType
{
    PSP,
}

class PosProductOption implements IConvertible
{
    PosProductOptionType? Type;
    String? Value;

    PosProductOption({this.Type,this.Value});
    PosProductOption.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'PosProductOptionType',context!),
        'Value': Value
    };

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

class PosProduct implements IConvertible
{
    int? Id;
    PosProductType? Type;
    int? Quantity;
    List<ProductFee>? RelatedFees;
    List<PosProductOption>? Options;

    PosProduct({this.Id,this.Type,this.Quantity,this.RelatedFees,this.Options});
    PosProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Type = JsonConverters.fromJson(json['Type'],'PosProductType',context!);
        Quantity = json['Quantity'];
        RelatedFees = JsonConverters.fromJson(json['RelatedFees'],'List<ProductFee>',context!);
        Options = JsonConverters.fromJson(json['Options'],'List<PosProductOption>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Type': JsonConverters.toJson(Type,'PosProductType',context!),
        'Quantity': Quantity,
        'RelatedFees': JsonConverters.toJson(RelatedFees,'List<ProductFee>',context!),
        'Options': JsonConverters.toJson(Options,'List<PosProductOption>',context!)
    };

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

class PosProducts implements IConvertible
{
    int? Term;
    int? RenewalLength;
    List<PosProduct>? Products;

    PosProducts({this.Term,this.RenewalLength,this.Products});
    PosProducts.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Term': Term,
        'RenewalLength': RenewalLength,
        'Products': JsonConverters.toJson(Products,'List<PosProduct>',context!)
    };

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

enum EcomProductType
{
    Gateway,
    VirtualTerminal,
    PayByLink,
    EcomMidOnly,
}

enum EcomProductOptionType
{
    PSP,
    FreeTransactions,
}

class EcomProductOption implements IConvertible
{
    EcomProductOptionType? Type;
    String? Value;

    EcomProductOption({this.Type,this.Value});
    EcomProductOption.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'EcomProductOptionType',context!),
        'Value': Value
    };

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

class EcomProduct implements IConvertible
{
    int? Id;
    EcomProductType? Type;
    int? Quantity;
    List<ProductFee>? RelatedFees;
    List<EcomProductOption>? Options;

    EcomProduct({this.Id,this.Type,this.Quantity,this.RelatedFees,this.Options});
    EcomProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Type = JsonConverters.fromJson(json['Type'],'EcomProductType',context!);
        Quantity = json['Quantity'];
        RelatedFees = JsonConverters.fromJson(json['RelatedFees'],'List<ProductFee>',context!);
        Options = JsonConverters.fromJson(json['Options'],'List<EcomProductOption>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Type': JsonConverters.toJson(Type,'EcomProductType',context!),
        'Quantity': Quantity,
        'RelatedFees': JsonConverters.toJson(RelatedFees,'List<ProductFee>',context!),
        'Options': JsonConverters.toJson(Options,'List<EcomProductOption>',context!)
    };

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

enum EcomOptionType
{
    Paypal,
    FuturePay,
    RMM,
}

class EcomOption implements IConvertible
{
    EcomOptionType? Type;
    List<ProductFee>? RelatedFees;

    EcomOption({this.Type,this.RelatedFees});
    EcomOption.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'EcomOptionType',context!),
        'RelatedFees': JsonConverters.toJson(RelatedFees,'List<ProductFee>',context!)
    };

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

class EcomProducts implements IConvertible
{
    int? Term;
    int? RenewalLength;
    List<EcomProduct>? Products;
    List<EcomOption>? Options;

    EcomProducts({this.Term,this.RenewalLength,this.Products,this.Options});
    EcomProducts.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Term = json['Term'];
        RenewalLength = json['RenewalLength'];
        Products = JsonConverters.fromJson(json['Products'],'List<EcomProduct>',context!);
        Options = JsonConverters.fromJson(json['Options'],'List<EcomOption>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Term': Term,
        'RenewalLength': RenewalLength,
        'Products': JsonConverters.toJson(Products,'List<EcomProduct>',context!),
        'Options': JsonConverters.toJson(Options,'List<EcomOption>',context!)
    };

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

class IspContact implements IConvertible
{
    String? Title;
    String? FirstName;
    String? LastName;
    String? Position;
    String? EmailAddress;

    IspContact({this.Title,this.FirstName,this.LastName,this.Position,this.EmailAddress});
    IspContact.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        FirstName = json['FirstName'];
        LastName = json['LastName'];
        Position = json['Position'];
        EmailAddress = json['EmailAddress'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'FirstName': FirstName,
        'LastName': LastName,
        'Position': Position,
        'EmailAddress': EmailAddress
    };

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

class IntegratedSolutionProvider implements IConvertible
{
    String? Name;
    Address? Address;
    String? Telephone;
    IspContact? PrimaryContact;
    IspContact? TechnicalContact;
    String? ProviderType;
    String? ProviderSoftware;

    IntegratedSolutionProvider({this.Name,this.Address,this.Telephone,this.PrimaryContact,this.TechnicalContact,this.ProviderType,this.ProviderSoftware});
    IntegratedSolutionProvider.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        Telephone = json['Telephone'];
        PrimaryContact = JsonConverters.fromJson(json['PrimaryContact'],'IspContact',context!);
        TechnicalContact = JsonConverters.fromJson(json['TechnicalContact'],'IspContact',context!);
        ProviderType = json['ProviderType'];
        ProviderSoftware = json['ProviderSoftware'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'Telephone': Telephone,
        'PrimaryContact': JsonConverters.toJson(PrimaryContact,'IspContact',context!),
        'TechnicalContact': JsonConverters.toJson(TechnicalContact,'IspContact',context!),
        'ProviderType': ProviderType,
        'ProviderSoftware': ProviderSoftware
    };

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

enum WptProductType
{
    VerifoneP400,
    IngenicoWL258,
    VerifoneV240,
}

enum WptVariantType
{
    Serial,
    Usb,
    Ethernet,
    None,
}

class WptProduct implements IConvertible
{
    WptProductType? Type;
    int? Id;
    WptVariantType? Variant;
    int? Quantity;
    List<ProductFee>? RelatedFees;

    WptProduct({this.Type,this.Id,this.Variant,this.Quantity,this.RelatedFees});
    WptProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Type = JsonConverters.fromJson(json['Type'],'WptProductType',context!);
        Id = json['Id'];
        Variant = JsonConverters.fromJson(json['Variant'],'WptVariantType',context!);
        Quantity = json['Quantity'];
        RelatedFees = JsonConverters.fromJson(json['RelatedFees'],'List<ProductFee>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Type': JsonConverters.toJson(Type,'WptProductType',context!),
        'Id': Id,
        'Variant': JsonConverters.toJson(Variant,'WptVariantType',context!),
        'Quantity': Quantity,
        'RelatedFees': JsonConverters.toJson(RelatedFees,'List<ProductFee>',context!)
    };

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

class WptProducts implements IConvertible
{
    int? Term;
    int? RenewalLength;
    DateTime? PosInstallationDate;
    IntegratedSolutionProvider? IntegratedSolutionProvider;
    List<WptProduct>? Products;

    WptProducts({this.Term,this.RenewalLength,this.PosInstallationDate,this.IntegratedSolutionProvider,this.Products});
    WptProducts.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Term = json['Term'];
        RenewalLength = json['RenewalLength'];
        PosInstallationDate = JsonConverters.fromJson(json['PosInstallationDate'],'DateTime',context!);
        IntegratedSolutionProvider = JsonConverters.fromJson(json['IntegratedSolutionProvider'],'IntegratedSolutionProvider',context!);
        Products = JsonConverters.fromJson(json['Products'],'List<WptProduct>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Term': Term,
        'RenewalLength': RenewalLength,
        'PosInstallationDate': JsonConverters.toJson(PosInstallationDate,'DateTime',context!),
        'IntegratedSolutionProvider': JsonConverters.toJson(IntegratedSolutionProvider,'IntegratedSolutionProvider',context!),
        'Products': JsonConverters.toJson(Products,'List<WptProduct>',context!)
    };

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

enum IpProductType
{
    PaxA920,
    MiuraM020,
}

enum IpVariantType
{
    Sdk,
    Cloud,
    None,
}

class IpProduct implements IConvertible
{
    int? Id;
    IpProductType? Type;
    int? Quantity;
    List<ProductFee>? RelatedFees;
    IpVariantType? Variant;

    IpProduct({this.Id,this.Type,this.Quantity,this.RelatedFees,this.Variant});
    IpProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Type = JsonConverters.fromJson(json['Type'],'IpProductType',context!);
        Quantity = json['Quantity'];
        RelatedFees = JsonConverters.fromJson(json['RelatedFees'],'List<ProductFee>',context!);
        Variant = JsonConverters.fromJson(json['Variant'],'IpVariantType',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Type': JsonConverters.toJson(Type,'IpProductType',context!),
        'Quantity': Quantity,
        'RelatedFees': JsonConverters.toJson(RelatedFees,'List<ProductFee>',context!),
        'Variant': JsonConverters.toJson(Variant,'IpVariantType',context!)
    };

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

class IpProducts implements IConvertible
{
    int? Term;
    int? RenewalLength;
    IntegratedSolutionProvider? IntegratedSolutionProvider;
    List<IpProduct>? Products;

    IpProducts({this.Term,this.RenewalLength,this.IntegratedSolutionProvider,this.Products});
    IpProducts.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Term = json['Term'];
        RenewalLength = json['RenewalLength'];
        IntegratedSolutionProvider = JsonConverters.fromJson(json['IntegratedSolutionProvider'],'IntegratedSolutionProvider',context!);
        Products = JsonConverters.fromJson(json['Products'],'List<IpProduct>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Term': Term,
        'RenewalLength': RenewalLength,
        'IntegratedSolutionProvider': JsonConverters.toJson(IntegratedSolutionProvider,'IntegratedSolutionProvider',context!),
        'Products': JsonConverters.toJson(Products,'List<IpProduct>',context!)
    };

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

class Products implements IConvertible
{
    PosProducts? PosProducts;
    EcomProducts? EcomProducts;
    WptProducts? WptProducts;
    IpProducts? IpProducts;

    Products({this.PosProducts,this.EcomProducts,this.WptProducts,this.IpProducts});
    Products.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PosProducts = JsonConverters.fromJson(json['PosProducts'],'PosProducts',context!);
        EcomProducts = JsonConverters.fromJson(json['EcomProducts'],'EcomProducts',context!);
        WptProducts = JsonConverters.fromJson(json['WptProducts'],'WptProducts',context!);
        IpProducts = JsonConverters.fromJson(json['IpProducts'],'IpProducts',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PosProducts': JsonConverters.toJson(PosProducts,'PosProducts',context!),
        'EcomProducts': JsonConverters.toJson(EcomProducts,'EcomProducts',context!),
        'WptProducts': JsonConverters.toJson(WptProducts,'WptProducts',context!),
        'IpProducts': JsonConverters.toJson(IpProducts,'IpProducts',context!)
    };

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

class Application implements IConvertible
{
    ApplicationDetails? ApplicationDetails;
    MerchantDetails? MerchantDetails;
    Acquiring? Acquiring;
    Products? Products;

    Application({this.ApplicationDetails,this.MerchantDetails,this.Acquiring,this.Products});
    Application.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ApplicationDetails = JsonConverters.fromJson(json['ApplicationDetails'],'ApplicationDetails',context!);
        MerchantDetails = JsonConverters.fromJson(json['MerchantDetails'],'MerchantDetails',context!);
        Acquiring = JsonConverters.fromJson(json['Acquiring'],'Acquiring',context!);
        Products = JsonConverters.fromJson(json['Products'],'Products',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ApplicationDetails': JsonConverters.toJson(ApplicationDetails,'ApplicationDetails',context!),
        'MerchantDetails': JsonConverters.toJson(MerchantDetails,'MerchantDetails',context!),
        'Acquiring': JsonConverters.toJson(Acquiring,'Acquiring',context!),
        'Products': JsonConverters.toJson(Products,'Products',context!)
    };

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

class AllChecksApplicationDataRequest implements IConvertible
{
    Application? Application;
    String? CorrelationId;
    String? NapPartyId;
    String? LEID;
    String? OrderId;
    List<String>? PartyIndividuals;

    AllChecksApplicationDataRequest({this.Application,this.CorrelationId,this.NapPartyId,this.LEID,this.OrderId,this.PartyIndividuals});
    AllChecksApplicationDataRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Application = JsonConverters.fromJson(json['Application'],'Application',context!);
        CorrelationId = json['CorrelationId'];
        NapPartyId = json['NapPartyId'];
        LEID = json['LEID'];
        OrderId = json['OrderId'];
        PartyIndividuals = JsonConverters.fromJson(json['PartyIndividuals'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Application': JsonConverters.toJson(Application,'Application',context!),
        'CorrelationId': CorrelationId,
        'NapPartyId': NapPartyId,
        'LEID': LEID,
        'OrderId': OrderId,
        'PartyIndividuals': JsonConverters.toJson(PartyIndividuals,'List<String>',context!)
    };

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

TypeContext _ctx = TypeContext(library: 'wpcdd_featuretest_ws.worldpay.com', types: <String, TypeInfo> {
    'StandardResponse': TypeInfo(TypeOf.Class, create:() => StandardResponse()),
    'SourceSystemType': TypeInfo(TypeOf.Enum, enumValues:SourceSystemType.values),
    'CustomerType': TypeInfo(TypeOf.Enum, enumValues:CustomerType.values),
    'Partner': TypeInfo(TypeOf.Class, create:() => Partner()),
    'PricingPackageType': TypeInfo(TypeOf.Enum, enumValues:PricingPackageType.values),
    'PreferredContactMethodType': TypeInfo(TypeOf.Enum, enumValues:PreferredContactMethodType.values),
    'ContactPerson': TypeInfo(TypeOf.Class, create:() => ContactPerson()),
    'AuthorisedSigner': TypeInfo(TypeOf.Class, create:() => AuthorisedSigner()),
    'AccessibilityOptions': TypeInfo(TypeOf.Class, create:() => AccessibilityOptions()),
    'ApplicationDetails': TypeInfo(TypeOf.Class, create:() => ApplicationDetails()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'BusinessAddress': TypeInfo(TypeOf.Class, create:() => BusinessAddress()),
    'CompanyType': TypeInfo(TypeOf.Enum, enumValues:CompanyType.values),
    'Financials': TypeInfo(TypeOf.Class, create:() => Financials()),
    'TradeAssociation': TypeInfo(TypeOf.Class, create:() => TradeAssociation()),
    'Business': TypeInfo(TypeOf.Class, create:() => Business()),
    'PrincipalAddress': TypeInfo(TypeOf.Class, create:() => PrincipalAddress()),
    'PositionType': TypeInfo(TypeOf.Enum, enumValues:PositionType.values),
    'Principal': TypeInfo(TypeOf.Class, create:() => Principal()),
    'List<PrincipalAddress>': TypeInfo(TypeOf.Class, create:() => <PrincipalAddress>[]),
    'BankAccount': TypeInfo(TypeOf.Class, create:() => BankAccount()),
    'ClearingDetails': TypeInfo(TypeOf.Class, create:() => ClearingDetails()),
    'OutletAllocatedProduct': TypeInfo(TypeOf.Class, create:() => OutletAllocatedProduct()),
    'Outlet': TypeInfo(TypeOf.Class, create:() => Outlet()),
    'List<OutletAllocatedProduct>': TypeInfo(TypeOf.Class, create:() => <OutletAllocatedProduct>[]),
    'Deposits': TypeInfo(TypeOf.Class, create:() => Deposits()),
    'WarrantiesAndGuarantees': TypeInfo(TypeOf.Class, create:() => WarrantiesAndGuarantees()),
    'Prepayments': TypeInfo(TypeOf.Class, create:() => Prepayments()),
    'MembershipsSubscriptionAndInsurancePremiums': TypeInfo(TypeOf.Class, create:() => MembershipsSubscriptionAndInsurancePremiums()),
    'GoodsAndServices': TypeInfo(TypeOf.Class, create:() => GoodsAndServices()),
    'MerchantDetails': TypeInfo(TypeOf.Class, create:() => MerchantDetails()),
    'List<Principal>': TypeInfo(TypeOf.Class, create:() => <Principal>[]),
    'List<Outlet>': TypeInfo(TypeOf.Class, create:() => <Outlet>[]),
    'CardType': TypeInfo(TypeOf.Enum, enumValues:CardType.values),
    'RateChargePair': TypeInfo(TypeOf.Class, create:() => RateChargePair()),
    'CardCharge': TypeInfo(TypeOf.Class, create:() => CardCharge()),
    'PremiumTransactionChargeType': TypeInfo(TypeOf.Enum, enumValues:PremiumTransactionChargeType.values),
    'PremiumTransactionCharge': TypeInfo(TypeOf.Class, create:() => PremiumTransactionCharge()),
    'AdditionalTarrifType': TypeInfo(TypeOf.Enum, enumValues:AdditionalTarrifType.values),
    'AdditionalTarrif': TypeInfo(TypeOf.Class, create:() => AdditionalTarrif()),
    'Rates': TypeInfo(TypeOf.Class, create:() => Rates()),
    'List<CardCharge>': TypeInfo(TypeOf.Class, create:() => <CardCharge>[]),
    'List<PremiumTransactionCharge>': TypeInfo(TypeOf.Class, create:() => <PremiumTransactionCharge>[]),
    'List<AdditionalTarrif>': TypeInfo(TypeOf.Class, create:() => <AdditionalTarrif>[]),
    'Cnp': TypeInfo(TypeOf.Class, create:() => Cnp()),
    'Amex': TypeInfo(TypeOf.Class, create:() => Amex()),
    'Services': TypeInfo(TypeOf.Class, create:() => Services()),
    'CurrencyCodeType': TypeInfo(TypeOf.Enum, enumValues:CurrencyCodeType.values),
    'TradingCurrency': TypeInfo(TypeOf.Class, create:() => TradingCurrency()),
    'List<CurrencyCodeType>': TypeInfo(TypeOf.Class, create:() => <CurrencyCodeType>[]),
    'Acquiring': TypeInfo(TypeOf.Class, create:() => Acquiring()),
    'List<TradingCurrency>': TypeInfo(TypeOf.Class, create:() => <TradingCurrency>[]),
    'PosProductType': TypeInfo(TypeOf.Enum, enumValues:PosProductType.values),
    'ProductFeeType': TypeInfo(TypeOf.Enum, enumValues:ProductFeeType.values),
    'ProductFee': TypeInfo(TypeOf.Class, create:() => ProductFee()),
    'PosProductOptionType': TypeInfo(TypeOf.Enum, enumValues:PosProductOptionType.values),
    'PosProductOption': TypeInfo(TypeOf.Class, create:() => PosProductOption()),
    'PosProduct': TypeInfo(TypeOf.Class, create:() => PosProduct()),
    'List<ProductFee>': TypeInfo(TypeOf.Class, create:() => <ProductFee>[]),
    'List<PosProductOption>': TypeInfo(TypeOf.Class, create:() => <PosProductOption>[]),
    'PosProducts': TypeInfo(TypeOf.Class, create:() => PosProducts()),
    'List<PosProduct>': TypeInfo(TypeOf.Class, create:() => <PosProduct>[]),
    'EcomProductType': TypeInfo(TypeOf.Enum, enumValues:EcomProductType.values),
    'EcomProductOptionType': TypeInfo(TypeOf.Enum, enumValues:EcomProductOptionType.values),
    'EcomProductOption': TypeInfo(TypeOf.Class, create:() => EcomProductOption()),
    'EcomProduct': TypeInfo(TypeOf.Class, create:() => EcomProduct()),
    'List<EcomProductOption>': TypeInfo(TypeOf.Class, create:() => <EcomProductOption>[]),
    'EcomOptionType': TypeInfo(TypeOf.Enum, enumValues:EcomOptionType.values),
    'EcomOption': TypeInfo(TypeOf.Class, create:() => EcomOption()),
    'EcomProducts': TypeInfo(TypeOf.Class, create:() => EcomProducts()),
    'List<EcomProduct>': TypeInfo(TypeOf.Class, create:() => <EcomProduct>[]),
    'List<EcomOption>': TypeInfo(TypeOf.Class, create:() => <EcomOption>[]),
    'IspContact': TypeInfo(TypeOf.Class, create:() => IspContact()),
    'IntegratedSolutionProvider': TypeInfo(TypeOf.Class, create:() => IntegratedSolutionProvider()),
    'WptProductType': TypeInfo(TypeOf.Enum, enumValues:WptProductType.values),
    'WptVariantType': TypeInfo(TypeOf.Enum, enumValues:WptVariantType.values),
    'WptProduct': TypeInfo(TypeOf.Class, create:() => WptProduct()),
    'WptProducts': TypeInfo(TypeOf.Class, create:() => WptProducts()),
    'List<WptProduct>': TypeInfo(TypeOf.Class, create:() => <WptProduct>[]),
    'IpProductType': TypeInfo(TypeOf.Enum, enumValues:IpProductType.values),
    'IpVariantType': TypeInfo(TypeOf.Enum, enumValues:IpVariantType.values),
    'IpProduct': TypeInfo(TypeOf.Class, create:() => IpProduct()),
    'IpProducts': TypeInfo(TypeOf.Class, create:() => IpProducts()),
    'List<IpProduct>': TypeInfo(TypeOf.Class, create:() => <IpProduct>[]),
    'Products': TypeInfo(TypeOf.Class, create:() => Products()),
    'Application': TypeInfo(TypeOf.Class, create:() => Application()),
    'AllChecksApplicationDataRequest': TypeInfo(TypeOf.Class, create:() => AllChecksApplicationDataRequest()),
});

Dart AllChecksApplicationDataRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /allchecks/submit/json HTTP/1.1 
Host: wpcdd-featuretest-ws.worldpay.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Application: 
	{
		ApplicationDetails: 
		{
			SourceSystem: MARS,
			SourceSystemIdentifier: String,
			CustomerType: New,
			Csr: String,
			Partner: 
			{
				PartnerId: String,
				PartnerName: String
			},
			SellerCode: String,
			PricingPackage: CustomUk,
			ContactPerson: 
			{
				DateOfBirth: 0001-01-01,
				CountryCode: String,
				Title: String,
				FirstName: String,
				MiddleName: String,
				LastName: String,
				TelephoneNumber: String,
				AltTelephoneNumber: String,
				Email: String,
				Position: String,
				PreferredContactMethod: Email,
				PreferredContactBestTime: String
			},
			SpecialInstructions: String,
			OfferDetails: String,
			DateContractAccepted: 0001-01-01,
			WorldpayBusinessFinanceInterest: False,
			Sar: False,
			SellerEmail: String,
			AnticipatedGoLiveDate: 0001-01-01,
			AccessibilityOptions: 
			{
				AudiotapeRequired: False,
				LargePrintRequired: False,
				UncontractedBrailleGrade1Required: False,
				UncontractedBrailleGrade2Required: False,
				NextGenerationTextRequired: False
			},
			UltimateParentId: String
		},
		MerchantDetails: 
		{
			Business: 
			{
				LegalName: String,
				LegalAddress: 
				{
					IsCommercial: False,
					Address1: String,
					Address2: String,
					Address3: String,
					Postcode: String,
					City: String,
					State: String,
					Countrycode: String
				},
				WebsiteAddress: String,
				CompanyType: SoleTrader,
				CompanyTypeOther: String,
				CompanyRegistrationNumber: String,
				CharityNumber: String,
				MerchantCategoryCode: String,
				MerchantCategoryDescription: String,
				DescriptionOfGoodsAndServices: String,
				VatNumber: String,
				DateStartedTrading: 0001-01-01,
				CountryOfIncorporation: String,
				RegionOfIncorporation: String,
				Financials: 
				{
					Annual: 0,
					CardPercentage: 0,
					CreditCardPercentage: 0,
					AverageTransactionValue: 0
				},
				NewToCards: False,
				TradeAssociation: 
				{
					GroupName: String,
					MemberNumber: String
				}
			},
			GoodsAndServices: 
			{
				GoodsProvidedByThirdParty: False,
				Deposits: 
				{
					Accepted: False,
					PerOfSalesWhereInitialDepositTaken: 0,
					SizePercOfTotalValue: 0,
					AvgTimeBeforeDeliveryTaken: 0,
					AvgTimeBeforeDeliveryBalanceTaken: 0
				},
				WarrantiesAndGuarantees: 
				{
					LevyCharge: False,
					PercCardTurnover: 0,
					AvgLengthInMonths: 0,
					PercGoodsReturned: 0,
					ThirdPartyProviders: String
				},
				Prepayments: 
				{
					FullPaymentAcceptedPriorToSupply: False,
					PercGoodsWherePaymentTakenPriorToDelivery: 0,
					AvgDaysPaymentTakenInAdvance: 0
				},
				MembershipsSubscriptionAndInsurancePremiums: 
				{
					LevyCharge: False,
					PercCardTurnover: 0,
					AvgLengthInMonths: 0,
					MembershipCost: 0
				},
				StockHeldAtAnotherAddressLocation: 
				{
					Address1: String,
					Address2: String,
					Address3: String,
					Postcode: String,
					City: String,
					State: String,
					Countrycode: String
				}
			}
		},
		Acquiring: 
		{
			SettlementPeriodTPlus: 0,
			Rates: {},
			Services: 
			{
				Cnp: 
				{
					Required: False,
					Percentage: 0
				},
				Amex: 
				{
					Required: False,
					ExistingAmexNumber: String
				},
				CashbackRequired: False,
				WorldpayDashboardRequired: False,
				PaperInvoicingRequired: False
			}
		},
		Products: 
		{
			PosProducts: 
			{
				Term: 0,
				RenewalLength: 0
			},
			EcomProducts: 
			{
				Term: 0,
				RenewalLength: 0
			},
			WptProducts: 
			{
				Term: 0,
				RenewalLength: 0,
				PosInstallationDate: 0001-01-01,
				IntegratedSolutionProvider: 
				{
					Name: String,
					Address: 
					{
						Address1: String,
						Address2: String,
						Address3: String,
						Postcode: String,
						City: String,
						State: String,
						Countrycode: String
					},
					Telephone: String,
					PrimaryContact: 
					{
						Title: String,
						FirstName: String,
						LastName: String,
						Position: String,
						EmailAddress: String
					},
					TechnicalContact: 
					{
						Title: String,
						FirstName: String,
						LastName: String,
						Position: String,
						EmailAddress: String
					},
					ProviderType: String,
					ProviderSoftware: String
				}
			},
			IpProducts: 
			{
				Term: 0,
				RenewalLength: 0,
				IntegratedSolutionProvider: 
				{
					Name: String,
					Address: 
					{
						Address1: String,
						Address2: String,
						Address3: String,
						Postcode: String,
						City: String,
						State: String,
						Countrycode: String
					},
					Telephone: String,
					PrimaryContact: 
					{
						Title: String,
						FirstName: String,
						LastName: String,
						Position: String,
						EmailAddress: String
					},
					TechnicalContact: 
					{
						Title: String,
						FirstName: String,
						LastName: String,
						Position: String,
						EmailAddress: String
					},
					ProviderType: String,
					ProviderSoftware: String
				}
			}
		}
	},
	CorrelationId: String,
	NapPartyId: String,
	LEID: String,
	OrderId: String,
	PartyIndividuals: 
	[
		String
	]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Status: 0,
	CorrelationId: String,
	Message: String
}