""" Options: Date: 2024-07-06 13:10:01 Version: 5.140 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: http://wpcdd-featuretest-ws.worldpay.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: AllChecksApplicationDataRequest.* #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 @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 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 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 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ApplicationDetails: special_instructions: Optional[str] = None type_acquiring: Optional[bool] = None type_p_o_s__f2_f: Optional[bool] = None type_p_o_s__m_o_t_o: Optional[bool] = None type_online_payments: Optional[bool] = None type_virtual_terminal: Optional[bool] = None seller_code: Optional[str] = None num_outlets: Optional[int] = None mcc_code: Optional[str] = None offer_description: Optional[str] = None pricing_package: Optional[str] = None contract_length: Optional[int] = None settlement_period_t_plus: Optional[str] = None ecom_p_s_p: Optional[str] = None pos_p_s_p: Optional[str] = None @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 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 StandardResponse: status: int = 0 correlation_id: Optional[str] = None message: Optional[str] = None # @Route("/allchecks/submit/json", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AllChecksApplicationDataRequest(IReturn[StandardResponse]): application: Optional[Application] = None correlation_id: Optional[str] = None nap_party_id: Optional[str] = None leid: Optional[str] = None order_id: Optional[str] = None party_individuals: Optional[List[str]] = None