/* Options: Date: 2024-11-24 14:00:17 SwiftVersion: 5.0 Version: 6.50 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://clubready.com/api/current //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: PaymentProfileImportEndpoint.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/sales/paymentprofile/import", "POST") // @ApiResponse(Description="", ResponseType=typeof(PaymentProfileImportResponse), StatusCode=200) public class PaymentProfileImportEndpoint : PaymentProfileImportRequest, IReturn, IApiKeyEndpoint { public typealias Return = PaymentProfileImportResponse /** * Api Authentication Key */ // @ApiMember(Description="Api Authentication Key", IsRequired=true, ParameterType="query") public var apiKey:String /** * Encoded data uniquely identifying the payment profile. Long term storage of AcctToken is not recommended, as the token may change over time (for example, by processes like Account Updater). The length is usually 80 characters. */ // @ApiMember(Description="\r\nEncoded data uniquely identifying the payment profile. \r\nLong term storage of AcctToken is not recommended, as the token may change over time (for example, by processes like Account Updater). \r\nThe length is usually 80 characters.", IsRequired=true) public var acctToken:String /** * Encoded data containing non-PCI information about the Payment Profile. ProfileTokens contain a timestamp. If the ClubReady API does not process the token within 5 minutes,it cannot be accepted and a new profile will have to be created with a new AcctToken. The timevalidation is to prevent old tokens from be re-played at a later time. The length is variable, but generally around 1,000 characters. */ // @ApiMember(Description="\r\nEncoded data containing non-PCI information about the Payment Profile. \r\n\r\nProfileTokens contain a timestamp. If the ClubReady API does not process the token within 5 minutes,\r\nit cannot be accepted and a new profile will have to be created with a new AcctToken. The time\r\nvalidation is to prevent old tokens from be re-played at a later time. \r\n\r\nThe length is variable, but generally around 1,000 characters.", IsRequired=true) public var profileToken:String /** * When adding a Payment Profile that is 'on-file', the default behavior is to update the user's Payment TypePreference to the AcctClass of the new profile. If you wish to not update the preference, you can set`DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be omitted or `false`. For `IsTemp == true` profiles, `DoNotUpdatePaymentTypePreference` is ignored. */ // @ApiMember(Description="\r\nWhen adding a Payment Profile that is 'on-file', the default behavior is to update the user's Payment Type\r\nPreference to the AcctClass of the new profile. If you wish to not update the preference, you can set\r\n`DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be omitted or `false`. \r\n\r\nFor `IsTemp == true` profiles, `DoNotUpdatePaymentTypePreference` is ignored.") public var doNotUpdatePaymentTypePreference:Bool /** * **Conditionally Required** When adding a Payment Profile that has an OwnerType of `TempStUser`, the ownership will be changed to OwnerType of `User`with the `UserId` of the supplied `NewOwnerId`. */ // @ApiMember(Description="\r\n**Conditionally Required** \r\n\r\nWhen adding a Payment Profile that has an OwnerType of `TempStUser`, the ownership will be changed to OwnerType of `User`\r\nwith the `UserId` of the supplied `NewOwnerId`.") public var newOwnerId:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case apiKey case acctToken case profileToken case doNotUpdatePaymentTypePreference case newOwnerId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) apiKey = try container.decodeIfPresent(String.self, forKey: .apiKey) acctToken = try container.decodeIfPresent(String.self, forKey: .acctToken) profileToken = try container.decodeIfPresent(String.self, forKey: .profileToken) doNotUpdatePaymentTypePreference = try container.decodeIfPresent(Bool.self, forKey: .doNotUpdatePaymentTypePreference) newOwnerId = try container.decodeIfPresent(Int.self, forKey: .newOwnerId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if apiKey != nil { try container.encode(apiKey, forKey: .apiKey) } if acctToken != nil { try container.encode(acctToken, forKey: .acctToken) } if profileToken != nil { try container.encode(profileToken, forKey: .profileToken) } if doNotUpdatePaymentTypePreference != nil { try container.encode(doNotUpdatePaymentTypePreference, forKey: .doNotUpdatePaymentTypePreference) } if newOwnerId != nil { try container.encode(newOwnerId, forKey: .newOwnerId) } } } public class PaymentProfileImportResponse : Codable { public var success:Bool public var message:String public var paymentProfile:PaymentProfile required public init(){} } public protocol IApiKeyEndpoint { var apiKey:String { get set } } public class PaymentProfileImportRequest : Codable { public var acctToken:String public var profileToken:String public var doNotUpdatePaymentTypePreference:Bool public var newOwner:ValueTuple? required public init(){} } public class PaymentProfile : Codable { public var paymentProfileId:Int public var acctToken:String public var ownerId:Int public var ownerTypeId:Int16 public var acctTypeId:Int16 public var acctClassId:Int16 public var prefixName:String public var firstName:String public var middleName:String public var lastName:String public var suffixName:String public var address1:String public var address2:String public var urbanization:String public var city:String public var state:String public var postalCode:String public var countryCode:String public var last4:String public var ccExpMonth:UInt8? public var ccExpYear:UInt8? public var isTemp:Bool public var isDisabled:Bool public var onHoldUtc:Date? public var onHoldReasonCode:UInt8? public var onHoldReasonDetail:String public var acctUpdaterFlagUtc:Date? public var createdBy:Int public var createdUtc:Date public var modifiedBy:Int public var modifiedUtc:Date public var acctUpdaterFlag:Bool public var entryModeId:Int16 public var excludeFromAcctUpdater:Bool required public init(){} }