""" Options: Date: 2024-07-06 13:00:38 Version: 5.140 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: http://abservice.worldpay.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: ApplicationBoarding.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum class SourceSystemType(str, Enum): MARS = 'MARS' ASA = 'ASA' OLS = 'OLS' INASA = 'INASA' class CustomerType(IntEnum): NEW = 0 EXISTING = 1 NONE = -1 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Partner: partner_name: Optional[str] = None partner_id: Optional[str] = None class PricingPackageType(IntEnum): CUSTOM_UK = 0 MONTHLY_UK = 1 SIMPLICITY_UK = 2 PAYG_UK = 3 CUSTOM_ROI = 4 PAYGE_COM_U_K = 5 NONE = -1 class PreferredContactMethodType(str, Enum): EMAIL = 'Email' TELEPHONE = 'Telephone' ANY = 'Any' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ContactPerson: title: Optional[str] = None first_name: Optional[str] = None middle_name: Optional[str] = None last_name: Optional[str] = None telephone_number: Optional[str] = None alt_telephone_number: Optional[str] = None email: Optional[str] = None position: Optional[str] = None preferred_contact_method: Optional[PreferredContactMethodType] = None preferred_contact_best_time: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AuthorisedSigner(Contact): date_of_birth: Optional[datetime.datetime] = None country_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AccessibilityOptions: audiotape_required: Optional[bool] = None large_print_required: Optional[bool] = None uncontracted_braille_grade1_required: Optional[bool] = None uncontracted_braille_grade2_required: Optional[bool] = None next_generation_text_required: Optional[bool] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ApplicationDetails: source_system: Optional[SourceSystemType] = None source_system_identifier: Optional[str] = None customer_type: Optional[CustomerType] = None csr: Optional[str] = None partner: Optional[Partner] = None seller_code: Optional[str] = None pricing_package: Optional[PricingPackageType] = None contact_person: Optional[AuthorisedSigner] = None special_instructions: Optional[str] = None offer_details: Optional[str] = None date_contract_accepted: datetime.datetime = datetime.datetime(1, 1, 1) worldpay_business_finance_interest: Optional[bool] = None sar: Optional[bool] = None seller_email: Optional[str] = None anticipated_go_live_date: Optional[datetime.datetime] = None accessibility_options: Optional[AccessibilityOptions] = None ultimate_parent_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: address1: Optional[str] = None address2: Optional[str] = None address3: Optional[str] = None postcode: Optional[str] = None city: Optional[str] = None state: Optional[str] = None country_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BusinessAddress(Address): is_commercial: Optional[bool] = None class CompanyType(str, Enum): SOLE_TRADER = 'SoleTrader' PARTNERSHIP = 'Partnership' LIMITED_COMPANY = 'LimitedCompany' TRUST = 'Trust' REGISTERED_CHARITY = 'RegisteredCharity' PUBLIC_LIMITED_COMPANY = 'PublicLimitedCompany' LIMITED_BY_GUARANTEE = 'LimitedByGuarantee' CLUB_SOCIETY_ASSOCIATION = 'ClubSocietyAssociation' COMMUNITY_INTEREST_COMPANY_OR_INDUSTRIAL_PROVIDENT = 'CommunityInterestCompanyOrIndustrialProvident' LIMITED_LIABILITY_PARTNERSHIP = 'LimitedLiabilityPartnership' OTHER = 'Other' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Financials: annual: Decimal = decimal.Decimal(0) card_percentage: Decimal = decimal.Decimal(0) credit_card_percentage: Decimal = decimal.Decimal(0) average_transaction_value: Decimal = decimal.Decimal(0) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TradeAssociation: group_name: Optional[str] = None member_number: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Business: legal_name: Optional[str] = None legal_address: Optional[BusinessAddress] = None website_address: Optional[str] = None company_type: Optional[CompanyType] = None company_type_other: Optional[str] = None company_registration_number: Optional[str] = None charity_number: Optional[str] = None merchant_category_code: Optional[str] = None merchant_category_description: Optional[str] = None description_of_goods_and_services: Optional[str] = None vat_number: Optional[str] = None date_started_trading: Optional[datetime.datetime] = None country_of_incorporation: Optional[str] = None region_of_incorporation: Optional[str] = None financials: Optional[Financials] = None new_to_cards: bool = False trade_association: Optional[TradeAssociation] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Principal(Person): position: Optional[str] = None is_financial_controller: bool = False date_of_birth: datetime.datetime = datetime.datetime(1, 1, 1) nationality: Optional[str] = None ownership_percentage: Decimal = decimal.Decimal(0) home_addresses: Optional[List[PrincipalAddress]] = None principal_id_documents: Optional[List[PrincipalIdDocument]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BankAccount: sort_code: Optional[str] = None account_number: Optional[str] = None bank_name: Optional[str] = None bank_account_name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ClearingDetails: merchant_url: Optional[str] = None telephone: Optional[str] = None email: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class OutletAllocatedProduct: id: int = 0 quantity: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Outlet: trading_name: Optional[str] = None trading_address: Optional[BusinessAddress] = None contact_person: Optional[ContactPerson] = None terminal_delivery_address: Optional[BusinessAddress] = None correspondence_address: Optional[BusinessAddress] = None settlement_bank_account: Optional[BankAccount] = None charges_bank_account: Optional[BankAccount] = None direct_debit_correspondence_email: Optional[str] = None clearing_details: Optional[ClearingDetails] = None product_allocation: Optional[List[OutletAllocatedProduct]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GoodsAndServices: goods_provided_by_third_party: Optional[bool] = None deposits: Optional[Deposits] = None warranties_and_guarantees: Optional[WarrantiesAndGuarantees] = None prepayments: Optional[Prepayments] = None memberships_subscription_and_insurance_premiums: Optional[MembershipsSubscriptionAndInsurancePremiums] = None stock_held_at_another_address_location: Optional[Address] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class MerchantDetails: business: Optional[Business] = None principals: Optional[List[Principal]] = None outlets: Optional[List[Outlet]] = None goods_and_services: Optional[GoodsAndServices] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Acquiring: settlement_period: int = 0 funding_mode: Optional[str] = None rates: Optional[Rates] = None trading_currencies: Optional[List[TradingCurrency]] = None class PosProductType(str, Enum): MOBILE = 'Mobile' WIFI = 'Wifi' BLUETOOTH = 'Bluetooth' FIXED = 'Fixed' POS_MID_ONLY = 'PosMidOnly' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ProductFee: type: Optional[str] = None cost: Decimal = decimal.Decimal(0) billing_party: Optional[str] = None class PosProductOptionType(str, Enum): PSP = 'PSP' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PosProductOption: type: Optional[PosProductOptionType] = None value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PosProduct: id: int = 0 type: Optional[PosProductType] = None quantity: int = 0 related_fees: Optional[List[ProductFee]] = None options: Optional[List[PosProductOption]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PosProducts: term: Optional[int] = None renewal_length: Optional[int] = None products: Optional[List[PosProduct]] = None class EcomProductType(str, Enum): GATEWAY = 'Gateway' VIRTUAL_TERMINAL = 'VirtualTerminal' PAY_BY_LINK = 'PayByLink' ECOM_MID_ONLY = 'EcomMidOnly' class EcomProductOptionType(str, Enum): PSP = 'PSP' FREE_TRANSACTIONS = 'FreeTransactions' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EcomProductOption: type: Optional[EcomProductOptionType] = None value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EcomProduct: id: int = 0 type: Optional[EcomProductType] = None quantity: int = 0 related_fees: Optional[List[ProductFee]] = None options: Optional[List[EcomProductOption]] = None class EcomOptionType(str, Enum): PAYPAL = 'Paypal' FUTURE_PAY = 'FuturePay' RMM = 'RMM' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EcomOption: type: Optional[EcomOptionType] = None related_fees: Optional[List[ProductFee]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EcomProducts: term: Optional[int] = None renewal_length: Optional[int] = None products: Optional[List[EcomProduct]] = None options: Optional[List[EcomOption]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class IspContact: title: Optional[str] = None first_name: Optional[str] = None last_name: Optional[str] = None position: Optional[str] = None email_address: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class IntegratedSolutionProvider: name: Optional[str] = None address: Optional[Address] = None telephone: Optional[str] = None primary_contact: Optional[IspContact] = None technical_contact: Optional[IspContact] = None provider_type: Optional[str] = None provider_software: Optional[str] = None class WptProductType(str, Enum): VERIFONE_P400 = 'VerifoneP400' INGENICO_W_L258 = 'IngenicoWL258' VERIFONE_V240 = 'VerifoneV240' class WptVariantType(str, Enum): SERIAL = 'Serial' USB = 'Usb' ETHERNET = 'Ethernet' NONE = 'None' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WptProduct: type: Optional[WptProductType] = None id: int = 0 variant: Optional[WptVariantType] = None quantity: int = 0 related_fees: Optional[List[ProductFee]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class WptProducts: term: Optional[int] = None renewal_length: Optional[int] = None pos_installation_date: datetime.datetime = datetime.datetime(1, 1, 1) integrated_solution_provider: Optional[IntegratedSolutionProvider] = None products: Optional[List[WptProduct]] = None class IpProductType(str, Enum): PAX_A920 = 'PaxA920' MIURA_M020 = 'MiuraM020' class IpVariantType(str, Enum): SDK = 'Sdk' CLOUD = 'Cloud' NONE = 'None' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class IpProduct: id: int = 0 type: Optional[IpProductType] = None quantity: int = 0 related_fees: Optional[List[ProductFee]] = None variant: Optional[IpVariantType] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class IpProducts: term: Optional[int] = None renewal_length: Optional[int] = None integrated_solution_provider: Optional[IntegratedSolutionProvider] = None products: Optional[List[IpProduct]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Products: pos_products: Optional[PosProducts] = None ecom_products: Optional[EcomProducts] = None wpt_products: Optional[WptProducts] = None ip_products: Optional[IpProducts] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Application: application_details: Optional[ApplicationDetails] = None merchant_details: Optional[MerchantDetails] = None acquiring: Optional[Acquiring] = None products: Optional[Products] = None class ApplicationQueueStatus(IntEnum): QUEUED = 0 STANDARDISED_X_M_L = 20 READY_TO_DISTRIBUTE = 40 AWAITING_DISTRIBUTE_RESPONSE = 60 READY_TO_AUTOBOARD = 80 THROTTLE_CHECK_PASSED = 100 ELIGIBILITY_CHECK_PASSED = 300 SENT_TO_AUTOBOARD_SERVICE = 400 AUTOBOARDING_SUSPENDED = 450 SUCCESSFULLY_BOARDED = 500 QUEUE_ERROR = 1000 THROTTLE_CHECK_ERROR = 1100 XML_STANDARDISATION_ERROR = 1200 ELIGIBILITY_CHECK_ERROR = 1300 AUTOBOARDING_ERROR = 1400 INELIGIBLE_THROTTLE_LIMIT = 2100 INELIGIBLE_APPLICATION = 2300 class ApplicationBoardingStatus(IntEnum): PENDING = 0 I_N__P_R_O_G_R_E_S_S = 5 FAILED = 9 COMPLETED = 10 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Acquiring: settlement_period_t_plus: int = 0 rates: Optional[Rates] = None services: Optional[Services] = None trading_currencies: Optional[List[TradingCurrency]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Partner: partner_id: Optional[str] = None partner_name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AuthorisedSigner(ContactPerson): date_of_birth: Optional[datetime.datetime] = None country_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AccessibilityOptions: audiotape_required: Optional[bool] = None large_print_required: Optional[bool] = None uncontracted_braille_grade1_required: Optional[bool] = None uncontracted_braille_grade2_required: Optional[bool] = None next_generation_text_required: Optional[bool] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Principal: title: Optional[str] = None first_name: Optional[str] = None middle_name: Optional[str] = None last_name: Optional[str] = None date_of_birth: datetime.datetime = datetime.datetime(1, 1, 1) nationality: Optional[str] = None home_addresses: Optional[List[PrincipalAddress]] = None ownership_percentage: Decimal = decimal.Decimal(0) position: Optional[PositionType] = None is_financial_controller: Optional[bool] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GoodsAndServices: goods_provided_by_third_party: Optional[bool] = None deposits: Optional[Deposits] = None warranties_and_guarantees: Optional[WarrantiesAndGuarantees] = None prepayments: Optional[Prepayments] = None memberships_subscription_and_insurance_premiums: Optional[MembershipsSubscriptionAndInsurancePremiums] = None stock_held_at_another_address_location: Optional[Address] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BankAccount: sort_code: Optional[str] = None account_number: Optional[str] = None bank_name: Optional[str] = None bank_account_name: Optional[str] = None swift_code: Optional[str] = None international_bank_account_number: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Financials: annual: Decimal = decimal.Decimal(0) card_percentage: Decimal = decimal.Decimal(0) credit_card_percentage: Decimal = decimal.Decimal(0) average_transaction_value: Decimal = decimal.Decimal(0) card_not_present_percentage: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TradeAssociation: group_name: Optional[str] = None member_number: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ClearingDetails: merchant_url: Optional[str] = None telephone: Optional[str] = None email: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: address1: Optional[str] = None address2: Optional[str] = None address3: Optional[str] = None postcode: Optional[str] = None city: Optional[str] = None state: Optional[str] = None countrycode: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ProductFee: type: Optional[ProductFeeType] = None cost: Decimal = decimal.Decimal(0) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class InitiateBoardingResponse: application_guid: Optional[str] = None csr: int = 0 application_queue_guid: Optional[str] = None queue_status: Optional[ApplicationQueueStatus] = None boarding_status: Optional[ApplicationBoardingStatus] = None error_messages: Optional[List[str]] = None # @Route("/ApplicationBoarding", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ApplicationBoarding(IReturn[InitiateBoardingResponse]): correlation_id: Optional[str] = None csr: int = 0 seller_code: Optional[str] = None seller_email: Optional[str] = None application_source: int = 0 application_json: Optional[Application] = None