Autoboard Webservice v5.13.0.0

<back to all web services

ApplicationBoarding

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

// @DataContract
enum ApplicationQueueStatus
{
    Queued,
    StandardisedXML,
    ReadyToDistribute,
    AwaitingDistributeResponse,
    ReadyToAutoboard,
    ThrottleCheckPassed,
    EligibilityCheckPassed,
    SentToAutoboardService,
    AutoboardingSuspended,
    SuccessfullyBoarded,
    QueueError,
    ThrottleCheckError,
    XMLStandardisationError,
    EligibilityCheckError,
    AutoboardingError,
    IneligibleThrottleLimit,
    IneligibleApplication,
}

// @DataContract
enum ApplicationBoardingStatus
{
    PENDING,
    IN_PROGRESS,
    FAILED,
    COMPLETED,
}

class InitiateBoardingResponse implements IConvertible
{
    String? applicationGuid;
    int? csr;
    String? applicationQueueGuid;
    ApplicationQueueStatus? queueStatus;
    ApplicationBoardingStatus? boardingStatus;
    List<String>? errorMessages;

    InitiateBoardingResponse({this.applicationGuid,this.csr,this.applicationQueueGuid,this.queueStatus,this.boardingStatus,this.errorMessages});
    InitiateBoardingResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        applicationGuid = json['applicationGuid'];
        csr = json['csr'];
        applicationQueueGuid = json['applicationQueueGuid'];
        queueStatus = JsonConverters.fromJson(json['queueStatus'],'ApplicationQueueStatus',context!);
        boardingStatus = JsonConverters.fromJson(json['boardingStatus'],'ApplicationBoardingStatus',context!);
        errorMessages = JsonConverters.fromJson(json['errorMessages'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'applicationGuid': applicationGuid,
        'csr': csr,
        'applicationQueueGuid': applicationQueueGuid,
        'queueStatus': JsonConverters.toJson(queueStatus,'ApplicationQueueStatus',context!),
        'boardingStatus': JsonConverters.toJson(boardingStatus,'ApplicationBoardingStatus',context!),
        'errorMessages': JsonConverters.toJson(errorMessages,'List<String>',context!)
    };

    getTypeName() => "InitiateBoardingResponse";
    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 ApplicationBoarding implements IConvertible
{
    String? correlationId;
    int? csr;
    String? sellerCode;
    String? sellerEmail;
    int? applicationSource;
    Application? applicationJson;

    ApplicationBoarding({this.correlationId,this.csr,this.sellerCode,this.sellerEmail,this.applicationSource,this.applicationJson});
    ApplicationBoarding.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        correlationId = json['correlationId'];
        csr = json['csr'];
        sellerCode = json['sellerCode'];
        sellerEmail = json['sellerEmail'];
        applicationSource = json['applicationSource'];
        applicationJson = JsonConverters.fromJson(json['applicationJson'],'Application',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'correlationId': correlationId,
        'csr': csr,
        'sellerCode': sellerCode,
        'sellerEmail': sellerEmail,
        'applicationSource': applicationSource,
        'applicationJson': JsonConverters.toJson(applicationJson,'Application',context!)
    };

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

TypeContext _ctx = TypeContext(library: 'abservice.worldpay.com', types: <String, TypeInfo> {
    'ApplicationQueueStatus': TypeInfo(TypeOf.Enum, enumValues:ApplicationQueueStatus.values),
    'ApplicationBoardingStatus': TypeInfo(TypeOf.Enum, enumValues:ApplicationBoardingStatus.values),
    'InitiateBoardingResponse': TypeInfo(TypeOf.Class, create:() => InitiateBoardingResponse()),
    '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()),
    'ApplicationBoarding': TypeInfo(TypeOf.Class, create:() => ApplicationBoarding()),
});

Dart ApplicationBoarding 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.

POST /ApplicationBoarding HTTP/1.1 
Host: abservice.worldpay.com 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"correlationId":"00000000000000000000000000000000","csr":0,"sellerCode":"String","sellerEmail":"String","applicationSource":0,"applicationJson":{"applicationDetails":{"sourceSystem":"MARS","sourceSystemIdentifier":"String","customerType":"New","csr":"String","partner":{"partnerId":"String","partnerName":"String"},"sellerCode":"String","pricingPackage":"CustomUk","contactPerson":{"dateOfBirth":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","worldpayBusinessFinanceInterest":false,"sar":false,"sellerEmail":"String","anticipatedGoLiveDate":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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"}}}}}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"applicationGuid":"00000000000000000000000000000000","csr":0,"applicationQueueGuid":"00000000000000000000000000000000","queueStatus":"Queued","boardingStatus":"PENDING","errorMessages":["String"]}