""" Options: Date: 2024-07-06 12:43:58 Version: 5.140 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: http://abservice-test.worldpay.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: OrderBoardingRequest.* #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 Partner: partner_name: Optional[str] = None partner_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Person: title: Optional[str] = None first_name: Optional[str] = None middle_name: Optional[str] = None last_name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Contact(Person): idp_guid: 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[str] = 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 OrderMeta: source_system: Optional[str] = None source_system_identifier: Optional[str] = None csr: Optional[str] = None ultimate_parent_id: Optional[str] = None order_type: Optional[str] = None customer_type: Optional[str] = None partner: Optional[Partner] = None seller_code: Optional[str] = None seller_email: Optional[str] = None special_instructions: Optional[str] = None contact: Optional[AuthorisedSigner] = 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 has_supporting_files: bool = False @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 MerchantAddress(Address): address_type: Optional[str] = None is_commercial: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class InvoiceContact(Person): email: Optional[str] = None position: 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 MerchantCategory: merchant_category_code: Optional[str] = None merchant_category_description: Optional[str] = None description_of_goods_and_services: 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) @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 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 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 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 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 Acquiring: settlement_period: int = 0 funding_mode: Optional[str] = None rates: Optional[Rates] = None trading_currencies: Optional[List[TradingCurrency]] = None @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 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ProductOption: type: Optional[str] = None value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Product: name: Optional[str] = None type: Optional[str] = None variant: Optional[str] = None quantity: Optional[int] = None related_fees: Optional[List[ProductFee]] = None options: Optional[List[ProductOption]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Subscription: proposition: Optional[str] = None pricing_package: Optional[str] = None term: Optional[int] = None renewal_length: Optional[int] = None acquiring: Optional[Acquiring] = None products: Optional[List[Product]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class OrderPayload: party_id: Optional[str] = None parent_party_id: Optional[str] = None legal_name: Optional[str] = None trading_name: Optional[str] = None addresses: Optional[List[MerchantAddress]] = None trading_contact: Optional[Contact] = None invoice_contact: Optional[InvoiceContact] = None settlement_bank_account: Optional[BankAccount] = None charges_bank_account: Optional[BankAccount] = None direct_debit_correspondence_email: Optional[str] = None website_address: Optional[str] = None company_type: Optional[str] = None company_type_other: Optional[str] = None company_registration_number: Optional[str] = None charity_number: Optional[str] = None merchant_categories: Optional[List[MerchantCategory]] = None vat_number: Optional[str] = None date_started_trading: Optional[datetime.datetime] = None anticipated_go_live_date: Optional[datetime.datetime] = None country_of_incorporation: Optional[str] = None region_of_incorporation: Optional[str] = None financials: Optional[Financials] = None new_to_cards: Optional[bool] = None trade_association: Optional[TradeAssociation] = None principals: Optional[List[Principal]] = None goods_and_services: Optional[GoodsAndServices] = None accessibility_options: Optional[AccessibilityOptions] = None clearing_details: Optional[ClearingDetails] = None acquiring: Optional[Acquiring] = None subscriptions: Optional[List[Subscription]] = None children: Optional[List[OrderPayload]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Order: meta: Optional[OrderMeta] = None payload: Optional[OrderPayload] = 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 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 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 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("/OrderBoarding", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class OrderBoardingRequest(IReturn[InitiateBoardingResponse]): # @ApiMember(IsRequired=true) correlation_id: Optional[str] = None # @ApiMember(IsRequired=true) order_json: Optional[Order] = None onboarding_request_id: Optional[str] = None local_enterprise_id: Optional[str] = None audience: Optional[str] = None