/* Options: Date: 2024-07-06 12:00:45 SwiftVersion: 5.0 Version: 5.140 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: http://wp-cddws-test.worldpay.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: AllChecksApplicationDataRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/allchecks/submit/json", "POST") public class AllChecksApplicationDataRequest : IReturn, Codable { public typealias Return = StandardResponse public var application:Application? public var correlationId:String? public var napPartyId:String? public var leid:String? public var orderId:String? public var partyIndividuals:[String] = [] required public init(){} } public class StandardResponse : Codable { public var status:Int? public var correlationId:String? public var message:String? required public init(){} } public class Application : Codable { public var applicationDetails:ApplicationDetails? public var merchantDetails:MerchantDetails? public var acquiring:Acquiring? public var products:Products? required public init(){} } public class ApplicationDetails : Codable { public var specialInstructions:String? public var typeAcquiring:Bool? public var typePOS_F2F:Bool? public var typePOS_MOTO:Bool? public var typeOnlinePayments:Bool? public var typeVirtualTerminal:Bool? public var sellerCode:String? public var numOutlets:Int? public var mccCode:String? public var offerDescription:String? public var pricingPackage:String? public var contractLength:Int? public var settlementPeriodTPlus:String? public var ecomPSP:String? public var posPSP:String? required public init(){} } public class ApplicationDetails : Codable { public var sourceSystem:SourceSystemType? public var sourceSystemIdentifier:String? public var customerType:CustomerType? public var csr:String? public var partner:Partner? public var sellerCode:String? public var pricingPackage:PricingPackageType? public var contactPerson:AuthorisedSigner? public var specialInstructions:String? public var offerDetails:String? public var dateContractAccepted:Date? public var worldpayBusinessFinanceInterest:Bool? public var sar:Bool? public var sellerEmail:String? public var anticipatedGoLiveDate:Date? public var accessibilityOptions:AccessibilityOptions? public var ultimateParentId:String? required public init(){} } public class MerchantDetails : Codable { public var business:Business? public var principals:[Principal] = [] public var outlets:[Outlet] = [] public var goodsAndServices:GoodsAndServices? required public init(){} } 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 Products : Codable { public var posProducts:PosProducts? public var ecomProducts:EcomProducts? public var wptProducts:WptProducts? public var ipProducts:IpProducts? required public init(){} } public class Business : Codable { public var legalName:String? public var legalAddress:BusinessAddress? public var websiteAddress:String? public var companyType:CompanyType? public var companyTypeOther:String? public var companyRegistrationNumber:String? public var charityNumber:String? public var merchantCategoryCode:String? public var merchantCategoryDescription:String? public var descriptionOfGoodsAndServices:String? public var vatNumber:String? public var dateStartedTrading:Date? public var countryOfIncorporation:String? public var regionOfIncorporation:String? public var financials:Financials? public var newToCards:Bool? public var tradeAssociation:TradeAssociation? 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 Outlet : Codable { public var tradingName:String? public var tradingAddress:BusinessAddress? public var contactPerson:ContactPerson? public var terminalDeliveryAddress:BusinessAddress? public var correspondenceAddress:BusinessAddress? public var settlementBankAccount:BankAccount? public var chargesBankAccount:BankAccount? public var directDebitCorrespondenceEmail:String? public var clearingDetails:ClearingDetails? public var productAllocation:[OutletAllocatedProduct] = [] 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 PosProducts : Codable { public var term:Int? public var renewalLength:Int? public var products:[PosProduct] = [] required public init(){} } public class EcomProducts : Codable { public var term:Int? public var renewalLength:Int? public var products:[EcomProduct] = [] public var options:[EcomOption] = [] required public init(){} } public class WptProducts : Codable { public var term:Int? public var renewalLength:Int? public var posInstallationDate:Date? public var integratedSolutionProvider:IntegratedSolutionProvider? public var products:[WptProduct] = [] required public init(){} } public class IpProducts : Codable { public var term:Int? public var renewalLength:Int? public var integratedSolutionProvider:IntegratedSolutionProvider? public var products:[IpProduct] = [] required public init(){} } 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 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 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 enum PreferredContactMethodType : String, Codable { case Email case Telephone case Any } public class ContactPerson : Codable { public var title:String? public var firstName:String? public var middleName:String? public var lastName:String? public var telephoneNumber:String? public var altTelephoneNumber:String? public var email:String? public var position:String? public var preferredContactMethod:PreferredContactMethodType? public var preferredContactBestTime:String? required public init(){} } public class BusinessAddress : Address { public var isCommercial:Bool? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case isCommercial } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) 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 isCommercial != nil { try container.encode(isCommercial, forKey: .isCommercial) } } } public enum CompanyType : String, Codable { case SoleTrader case Partnership case LimitedCompany case Trust case RegisteredCharity case PublicLimitedCompany case LimitedByGuarantee case ClubSocietyAssociation case CommunityInterestCompanyOrIndustrialProvident case LimitedLiabilityPartnership case Other } 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 OutletAllocatedProduct : Codable { public var id:Int? public var quantity:Int? 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 PosProduct : Codable { public var id:Int? public var type:PosProductType? public var quantity:Int? public var relatedFees:[ProductFee] = [] public var options:[PosProductOption] = [] required public init(){} } public class EcomProduct : Codable { public var id:Int? public var type:EcomProductType? public var quantity:Int? public var relatedFees:[ProductFee] = [] public var options:[EcomProductOption] = [] required public init(){} } public class EcomOption : Codable { public var type:EcomOptionType? public var relatedFees:[ProductFee] = [] required public init(){} } public class IntegratedSolutionProvider : Codable { public var name:String? public var address:Address? public var telephone:String? public var primaryContact:IspContact? public var technicalContact:IspContact? public var providerType:String? public var providerSoftware:String? required public init(){} } public class WptProduct : Codable { public var type:WptProductType? public var id:Int? public var variant:WptVariantType? public var quantity:Int? public var relatedFees:[ProductFee] = [] required public init(){} } public class IpProduct : Codable { public var id:Int? public var type:IpProductType? public var quantity:Int? public var relatedFees:[ProductFee] = [] public var variant:IpVariantType? 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 enum PosProductType : String, Codable { case Mobile case Wifi case Bluetooth case Fixed case PosMidOnly } public class ProductFee : Codable { public var type:ProductFeeType? public var cost:Double? required public init(){} } public class PosProductOption : Codable { public var type:PosProductOptionType? public var value:String? required public init(){} } public enum EcomProductType : String, Codable { case Gateway case VirtualTerminal case PayByLink case EcomMidOnly } public class EcomProductOption : Codable { public var type:EcomProductOptionType? public var value:String? required public init(){} } public enum EcomOptionType : String, Codable { case Paypal case FuturePay case RMM } public class IspContact : Codable { public var title:String? public var firstName:String? public var lastName:String? public var position:String? public var emailAddress:String? required public init(){} } public enum WptProductType : String, Codable { case VerifoneP400 case IngenicoWL258 case VerifoneV240 } public enum WptVariantType : String, Codable { case Serial case Usb case Ethernet case None } public enum IpProductType : String, Codable { case PaxA920 case MiuraM020 } public enum IpVariantType : String, Codable { case Sdk case Cloud case None } public class ProductFee : Codable { public var type:String? public var cost:Double? public var billingParty:String? required public init(){} } public enum PosProductOptionType : String, Codable { case PSP } public enum EcomProductOptionType : String, Codable { case PSP case FreeTransactions }