/* Options: Date: 2025-08-03 08:58:21 SwiftVersion: 5.0 Version: 6.50 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://www.clubready.com/api //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 /** * IP address of the end user */ // @ApiMember(Description="IP address of the end user", Name="X-Forwarded-For", ParameterType="header") public var xForwardedFor:String /** * API Authentication Key */ // @ApiMember(Description="API Authentication Key", IsRequired=true, ParameterType="query") public var apiKey:String /** * The ProfileToken JWT to import (see description above) */ // @ApiMember(Description="The ProfileToken JWT to import (see description above)", IsRequired=true) public var profileToken:String /** * When adding a PaymentMethod that is 'on-file' (`IsTemp == true`), the default behavior is toset this PaymentMethod as the preferred method. If you do not wish this to be the preferredmethod, you can set `DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can beomitted or `false`.For non 'on-file' PaymentMethods, this setting is ignored. */ // @ApiMember(Description="When adding a PaymentMethod that is 'on-file' (`IsTemp == true`), the default behavior is to\r\nset this PaymentMethod as the preferred method. If you do not wish this to be the preferred\r\nmethod, you can set `DoNotUpdatePaymentTypePreference` to `true`. Otherwise, this can be\r\nomitted or `false`.\r\n\r\nFor non 'on-file' PaymentMethods, this setting is ignored.") public var doNotUpdatePaymentTypePreference:Bool /** * **Conditionally Required** When importing a ProfileToken with an OwnerType of `TempStUser`, the ownership will be changed toOwnerType of `User` with the userId of the supplied `NewOwnerId`.This is needed when a PaymentMethod is created for a User that has not been selected or created, yet. */ // @ApiMember(Description="**Conditionally Required** \r\n\r\nWhen importing a ProfileToken with an OwnerType of `TempStUser`, the ownership will be changed to\r\nOwnerType of `User` with the userId of the supplied `NewOwnerId`.\r\n\r\nThis is needed when a PaymentMethod is created for a User that has not been selected or created, yet.") public var newOwnerId:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case xForwardedFor case apiKey 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) xForwardedFor = try container.decodeIfPresent(String.self, forKey: .xForwardedFor) apiKey = try container.decodeIfPresent(String.self, forKey: .apiKey) 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 xForwardedFor != nil { try container.encode(xForwardedFor, forKey: .xForwardedFor) } if apiKey != nil { try container.encode(apiKey, forKey: .apiKey) } 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 profileToken:String public var doNotUpdatePaymentTypePreference:Bool public var newOwnerId:Int? required public init(){} } public class PaymentProfile : IFullNameContainer, 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(){} } public protocol IFullNameContainer { var firstLastName:String { get set } var fullName:String { get set } var prefixName:String { get set } var firstName:String { get set } var middleName:String { get set } var lastName:String { get set } var suffixName:String { get set } }