/* Options: Date: 2024-07-06 14:13:00 SwiftVersion: 5.0 Version: 5.140 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: http://abservice-test.worldpay.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: OrderBoardingRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/OrderBoarding", "POST") public class OrderBoardingRequest : IReturn, Codable { public typealias Return = InitiateBoardingResponse // @ApiMember(IsRequired=true) public var correlationId:String? // @ApiMember(IsRequired=true) public var orderJson:Order? public var onboardingRequestId:String? public var localEnterpriseId:String? public var audience:String? required public init(){} } public class InitiateBoardingResponse : Codable { public var applicationGuid:String? public var csr:Int? public var applicationQueueGuid:String? public var queueStatus:ApplicationQueueStatus? public var boardingStatus:ApplicationBoardingStatus? public var errorMessages:[String] = [] required public init(){} } public class Order : Codable { public var meta:OrderMeta? public var payload:OrderPayload? required public init(){} } // @DataContract public enum ApplicationQueueStatus : Int, Codable { case Queued = 0 case StandardisedXML = 20 case ReadyToDistribute = 40 case AwaitingDistributeResponse = 60 case ReadyToAutoboard = 80 case ThrottleCheckPassed = 100 case EligibilityCheckPassed = 300 case SentToAutoboardService = 400 case AutoboardingSuspended = 450 case SuccessfullyBoarded = 500 case QueueError = 1000 case ThrottleCheckError = 1100 case XMLStandardisationError = 1200 case EligibilityCheckError = 1300 case AutoboardingError = 1400 case IneligibleThrottleLimit = 2100 case IneligibleApplication = 2300 } // @DataContract public enum ApplicationBoardingStatus : Int, Codable { case PENDING = 0 case IN_PROGRESS = 5 case FAILED = 9 case COMPLETED = 10 } public class Acquiring : Codable { public var settlementPeriodTPlus:Int? public var rates:Rates? public var services:Services? public var tradingCurrencies:[TradingCurrency] = [] required public init(){} } public class OrderMeta : Codable { public var sourceSystem:String? public var sourceSystemIdentifier:String? public var csr:String? public var ultimateParentId:String? public var orderType:String? public var customerType:String? public var partner:Partner? public var sellerCode:String? public var sellerEmail:String? public var specialInstructions:String? public var contact:AuthorisedSigner? public var offerDetails:String? public var dateContractAccepted:Date? public var worldpayBusinessFinanceInterest:Bool? public var sar:Bool? public var hasSupportingFiles:Bool? required public init(){} } public class OrderPayload : Codable { public var partyId:String? public var parentPartyId:String? public var legalName:String? public var tradingName:String? public var addresses:[MerchantAddress] = [] public var tradingContact:Contact? public var invoiceContact:InvoiceContact? public var settlementBankAccount:BankAccount? public var chargesBankAccount:BankAccount? public var directDebitCorrespondenceEmail:String? public var websiteAddress:String? public var companyType:String? public var companyTypeOther:String? public var companyRegistrationNumber:String? public var charityNumber:String? public var merchantCategories:[MerchantCategory] = [] public var vatNumber:String? public var dateStartedTrading:Date? public var anticipatedGoLiveDate:Date? public var countryOfIncorporation:String? public var regionOfIncorporation:String? public var financials:Financials? public var newToCards:Bool? public var tradeAssociation:TradeAssociation? public var principals:[Principal] = [] public var goodsAndServices:GoodsAndServices? public var accessibilityOptions:AccessibilityOptions? public var clearingDetails:ClearingDetails? public var acquiring:Acquiring? public var subscriptions:[Subscription] = [] public var children:[OrderPayload] = [] required public init(){} } public class Partner : Codable { public var partnerId:String? public var partnerName:String? required public init(){} } public class AuthorisedSigner : ContactPerson { public var dateOfBirth:Date? public var countryCode:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case dateOfBirth case countryCode } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) dateOfBirth = try container.decodeIfPresent(Date.self, forKey: .dateOfBirth) countryCode = try container.decodeIfPresent(String.self, forKey: .countryCode) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if dateOfBirth != nil { try container.encode(dateOfBirth, forKey: .dateOfBirth) } if countryCode != nil { try container.encode(countryCode, forKey: .countryCode) } } } public class AccessibilityOptions : Codable { public var audiotapeRequired:Bool? public var largePrintRequired:Bool? public var uncontractedBrailleGrade1Required:Bool? public var uncontractedBrailleGrade2Required:Bool? public var nextGenerationTextRequired:Bool? required public init(){} } public class Principal : Codable { public var title:String? public var firstName:String? public var middleName:String? public var lastName:String? public var dateOfBirth:Date? public var nationality:String? public var homeAddresses:[PrincipalAddress] = [] public var ownershipPercentage:Double? public var position:PositionType? public var isFinancialController:Bool? required public init(){} } public class GoodsAndServices : Codable { public var goodsProvidedByThirdParty:Bool? public var deposits:Deposits? public var warrantiesAndGuarantees:WarrantiesAndGuarantees? public var prepayments:Prepayments? public var membershipsSubscriptionAndInsurancePremiums:MembershipsSubscriptionAndInsurancePremiums? public var stockHeldAtAnotherAddressLocation:Address? required public init(){} } public class Partner : Codable { public var partnerName:String? public var partnerId:String? required public init(){} } public class AuthorisedSigner : Contact { public var dateOfBirth:Date? public var countryCode:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case dateOfBirth case countryCode } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) dateOfBirth = try container.decodeIfPresent(Date.self, forKey: .dateOfBirth) countryCode = try container.decodeIfPresent(String.self, forKey: .countryCode) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if dateOfBirth != nil { try container.encode(dateOfBirth, forKey: .dateOfBirth) } if countryCode != nil { try container.encode(countryCode, forKey: .countryCode) } } } public class MerchantAddress : Address { public var addressType:String? public var isCommercial:Bool? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case addressType case isCommercial } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) addressType = try container.decodeIfPresent(String.self, forKey: .addressType) isCommercial = try container.decodeIfPresent(Bool.self, forKey: .isCommercial) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if addressType != nil { try container.encode(addressType, forKey: .addressType) } if isCommercial != nil { try container.encode(isCommercial, forKey: .isCommercial) } } } public class Contact : Person { public var idpGuid:String? public var telephoneNumber:String? public var altTelephoneNumber:String? public var email:String? public var position:String? public var preferredContactMethod:String? public var preferredContactBestTime:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case idpGuid case telephoneNumber case altTelephoneNumber case email case position case preferredContactMethod case preferredContactBestTime } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) idpGuid = try container.decodeIfPresent(String.self, forKey: .idpGuid) telephoneNumber = try container.decodeIfPresent(String.self, forKey: .telephoneNumber) altTelephoneNumber = try container.decodeIfPresent(String.self, forKey: .altTelephoneNumber) email = try container.decodeIfPresent(String.self, forKey: .email) position = try container.decodeIfPresent(String.self, forKey: .position) preferredContactMethod = try container.decodeIfPresent(String.self, forKey: .preferredContactMethod) preferredContactBestTime = try container.decodeIfPresent(String.self, forKey: .preferredContactBestTime) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if idpGuid != nil { try container.encode(idpGuid, forKey: .idpGuid) } if telephoneNumber != nil { try container.encode(telephoneNumber, forKey: .telephoneNumber) } if altTelephoneNumber != nil { try container.encode(altTelephoneNumber, forKey: .altTelephoneNumber) } if email != nil { try container.encode(email, forKey: .email) } if position != nil { try container.encode(position, forKey: .position) } if preferredContactMethod != nil { try container.encode(preferredContactMethod, forKey: .preferredContactMethod) } if preferredContactBestTime != nil { try container.encode(preferredContactBestTime, forKey: .preferredContactBestTime) } } } public class InvoiceContact : Person { public var email:String? public var position:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case email case position } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) email = try container.decodeIfPresent(String.self, forKey: .email) position = try container.decodeIfPresent(String.self, forKey: .position) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if email != nil { try container.encode(email, forKey: .email) } if position != nil { try container.encode(position, forKey: .position) } } } public class BankAccount : Codable { public var sortCode:String? public var accountNumber:String? public var bankName:String? public var bankAccountName:String? public var swiftCode:String? public var internationalBankAccountNumber:String? required public init(){} } public class MerchantCategory : Codable { public var merchantCategoryCode:String? public var merchantCategoryDescription:String? public var descriptionOfGoodsAndServices:String? required public init(){} } public class Financials : Codable { public var annual:Double? public var cardPercentage:Double? public var creditCardPercentage:Double? public var averageTransactionValue:Double? public var cardNotPresentPercentage:Double? required public init(){} } public class TradeAssociation : Codable { public var groupName:String? public var memberNumber:String? required public init(){} } public class Principal : Person { public var position:String? public var isFinancialController:Bool? public var dateOfBirth:Date? public var nationality:String? public var ownershipPercentage:Double? public var homeAddresses:[PrincipalAddress] = [] public var principalIdDocuments:[PrincipalIdDocument] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case position case isFinancialController case dateOfBirth case nationality case ownershipPercentage case homeAddresses case principalIdDocuments } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) position = try container.decodeIfPresent(String.self, forKey: .position) isFinancialController = try container.decodeIfPresent(Bool.self, forKey: .isFinancialController) dateOfBirth = try container.decodeIfPresent(Date.self, forKey: .dateOfBirth) nationality = try container.decodeIfPresent(String.self, forKey: .nationality) ownershipPercentage = try container.decodeIfPresent(Double.self, forKey: .ownershipPercentage) homeAddresses = try container.decodeIfPresent([PrincipalAddress].self, forKey: .homeAddresses) ?? [] principalIdDocuments = try container.decodeIfPresent([PrincipalIdDocument].self, forKey: .principalIdDocuments) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if position != nil { try container.encode(position, forKey: .position) } if isFinancialController != nil { try container.encode(isFinancialController, forKey: .isFinancialController) } if dateOfBirth != nil { try container.encode(dateOfBirth, forKey: .dateOfBirth) } if nationality != nil { try container.encode(nationality, forKey: .nationality) } if ownershipPercentage != nil { try container.encode(ownershipPercentage, forKey: .ownershipPercentage) } if homeAddresses.count > 0 { try container.encode(homeAddresses, forKey: .homeAddresses) } if principalIdDocuments.count > 0 { try container.encode(principalIdDocuments, forKey: .principalIdDocuments) } } } public class GoodsAndServices : Codable { public var goodsProvidedByThirdParty:Bool? public var deposits:Deposits? public var warrantiesAndGuarantees:WarrantiesAndGuarantees? public var prepayments:Prepayments? public var membershipsSubscriptionAndInsurancePremiums:MembershipsSubscriptionAndInsurancePremiums? public var stockHeldAtAnotherAddressLocation:Address? required public init(){} } public class AccessibilityOptions : Codable { public var audiotapeRequired:Bool? public var largePrintRequired:Bool? public var uncontractedBrailleGrade1Required:Bool? public var uncontractedBrailleGrade2Required:Bool? public var nextGenerationTextRequired:Bool? required public init(){} } public class ClearingDetails : Codable { public var merchantUrl:String? public var telephone:String? public var email:String? required public init(){} } public class Acquiring : Codable { public var settlementPeriod:Int? public var fundingMode:String? public var rates:Rates? public var tradingCurrencies:[TradingCurrency] = [] required public init(){} } public class Subscription : Codable { public var proposition:String? public var pricingPackage:String? public var term:Int? public var renewalLength:Int? public var acquiring:Acquiring? public var products:[Product] = [] required public init(){} } public class Financials : Codable { public var annual:Double? public var cardPercentage:Double? public var creditCardPercentage:Double? public var averageTransactionValue:Double? required public init(){} } public class TradeAssociation : Codable { public var groupName:String? public var memberNumber:String? required public init(){} } public class BankAccount : Codable { public var sortCode:String? public var accountNumber:String? public var bankName:String? public var bankAccountName:String? required public init(){} } public class ClearingDetails : Codable { public var merchantUrl:String? public var telephone:String? public var email:String? required public init(){} } public class Address : Codable { public var address1:String? public var address2:String? public var address3:String? public var postcode:String? public var city:String? public var state:String? public var countrycode:String? required public init(){} } public class Address : Codable { public var address1:String? public var address2:String? public var address3:String? public var postcode:String? public var city:String? public var state:String? public var countryCode:String? required public init(){} } public class Person : Codable { public var title:String? public var firstName:String? public var middleName:String? public var lastName:String? required public init(){} } public class Product : Codable { public var name:String? public var type:String? public var variant:String? public var quantity:Int? public var relatedFees:[ProductFee] = [] public var options:[ProductOption] = [] required public init(){} } public class ProductFee : Codable { public var type:ProductFeeType? public var cost:Double? required public init(){} } public class ProductFee : Codable { public var type:String? public var cost:Double? public var billingParty:String? required public init(){} } public class ProductOption : Codable { public var type:String? public var value:String? required public init(){} }