/* Options: Date: 2024-05-12 18:45:27 Version: 6.50 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://www.clubready.com/api/current //Package: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: SellContractAndSetupClientRequest.* //ExcludeTypes: //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: java.math.*,java.util.*,net.servicestack.client.* */ import java.math.* import java.util.* import net.servicestack.client.* @Route(Path="/sales/contract/sold/new/user", Verbs="POST") @ApiResponse(Description="", ResponseType=SellContractAndSetupClientResponse.class, StatusCode=200) open class SellContractAndSetupClientRequest : SellContractAndSetupClientDto(), IRestrictedApiRequest { /** * Api Authentication Key */ @ApiMember(Description="Api Authentication Key", IsRequired=true, ParameterType="query") var ApiKey:String? = null /** * Id for the chain of the Api Key */ @ApiMember(Description="Id for the chain of the Api Key", ParameterType="query") var ChainId:Int? = null /** * Id of the store for the user */ @ApiMember(Description="Id of the store for the user", IsRequired=true, ParameterType="query") var StoreId:Int? = null /** * Package Id being sold */ @ApiMember(Description="Package Id being sold", IsRequired=true) var PackageId:Int? = null /** * Installment Plan Id being sold */ @ApiMember(Description="Installment Plan Id being sold", IsRequired=true) var InstallmentPlanId:Int? = null /** * Amount being paid */ @ApiMember(Description="Amount being paid", IsRequired=true) var PaymentAmount:BigDecimal? = null /** * Date contract takes affect */ @ApiMember(Description="Date contract takes affect") var StartDate:Date? = null /** * First Name */ @ApiMember(Description="First Name", IsRequired=true) var FirstName:String? = null /** * Last Name */ @ApiMember(Description="Last Name", IsRequired=true) var LastName:String? = null /** * Email Address */ @ApiMember(Description="Email Address", IsRequired=true) var Email:String? = null /** * Gender */ @ApiMember(Description="Gender") var Gender:String? = null /** * Address */ @ApiMember(Description="Address") var Address:String? = null /** * City */ @ApiMember(Description="City") var City:String? = null /** * State */ @ApiMember(Description="State") var State:String? = null /** * Zip Code */ @ApiMember(Description="Zip Code") var Zip:String? = null /** * Home phone */ @ApiMember(Description="Home phone") var Phone:String? = null /** * Work phone */ @ApiMember(Description="Work phone") var WorkPhone:String? = null /** * Date of Birth */ @ApiMember(Description="Date of Birth") var DateOfBirth:Date? = null /** * Cell phone */ @ApiMember(Description="Cell phone") var CellPhone:String? = null /** * Add an internal note for the new prospect */ @ApiMember(Description="Add an internal note for the new prospect") var Note:String? = null /** * Unique Id for the user from your system. We store internally as ExternalUserId */ @ApiMember(Description="Unique Id for the user from your system. We store internally as ExternalUserId") var ExternalId:String? = null /** * Promo code to apply a discount. */ @ApiMember(Description="Promo code to apply a discount.") var PromoCode:String? = null /** * Username should be between 4 and 255 characters long */ @ApiMember(Description="Username should be between 4 and 255 characters long") var Username:String? = null /** * ReferralTypeId */ @ApiMember(Description="ReferralTypeId") var ReferralTypeId:Int? = null /** * Emergency contact name */ @ApiMember(Description="Emergency contact name") var EmergencyContactName:String? = null /** * Emergency contact phone number */ @ApiMember(Description="Emergency contact phone number") var EmergencyContactPhone:String? = null /** * Emergency contact relationship */ @ApiMember(Description="Emergency contact relationship") var EmergencyContactType:String? = null /** * An array of Payment Methods to be used for this purchase. Any entry with PreferredOnFile is assumed if omitted or null. Each object of the array may contain properties:| Property | Description || --- | --- || PaymentMethodType | Usually "AcctToken" (Default or omitted/null) or "PreferredOnFile" || PaymentAmount | The amount to be attempted for this Payment Method. When omitted (or null), the Request's PaymentAmount will be attempted || AcctToken | The AcctToken to attempt payment (when using PaymentMethodType:AcctToken) || ProfileToken | When provided (with AcctToken), a Payment Profile will be created (this will prevent the requirement to call `/sales/paymentprofile/import` (when using PaymentMethodType:AcctToken) || DoNotUpdatePaymentTypePreference | When using ProfileToken, do not set the PaymentTypePreference (for more information, see `/sales/paymentprofile/import` (when using PaymentMethodType:AcctToken) || | |* Scenario #1: Use a Gift Card with PreferredOnFile to cover the amount not approved by the Gift Card. JSON:```json{ PaymentMethods: [ { "PaymentMethodType":"AcctToken", "PaymentAmount":"1.00", "AcctToken":"eyJ...GiftCard AcctToken...", "ProfileToken":"eyJ...Gift Card ProfileToken..." }, { "PaymentMethodType":"PreferredOnFile", "PaymentAmount":"1.00" } ]}```JSV:```[{PaymentMethodType:AcctToken,PaymentAmount:1.00,AcctToken:eyj...,ProfileToken:eyJ...},{PaymentMethodType:PreferredOnFile,PaymentAmount:1.00}]```* Scenario #2: Use a Gift Card with PreferredOnFile to cover the amount not approved by the Gift Card. JSON:```json{ PaymentMethods: [ { "PaymentMethodType":"AcctToken", "PaymentAmount":"1.00", "AcctToken":"eyJ...GiftCard AcctToken...", "ProfileToken":"eyJ...Gift Card ProfileToken..." }, { "PaymentMethodType":"PreferredOnFile", "PaymentAmount":"1.00" } ]}```JSV:```jsv[{PaymentMethodType:AcctToken,PaymentAmount:1.00,AcctToken:eyj...,ProfileToken:eyJ...},{PaymentMethodType:PreferredOnFile,PaymentAmount:1.00}]```Notes: * The example shows PaymentAmount of 1.00 for both "AcctToken" and "PreferredOnFile". This is for the examplewith a total of $1.00. The firstPaymentMethod (the Gift Card) will be attempted for $1.00. If it partially approvesfor less than 1.00 (example: $0.80), the second payment method (PreferredOnFile) will be attempted for the lesser ofit's PaymentAmount and the remaining amount (example: $0.20).* Because this endpoint creates a new user, the "PreferredOnFile" option is not applicable. Also, ProfileToken withthe OwnerType "TempstUser" is required because the Payment Profile owner will be converted to the newly created user.* When using Query String (or this web site), this value must be encoded with JSV [(JSON-like Separated Values)](https://docs.servicestack.net/jsv-format).Basic steps to convert JSON to JSV: 1) Remove properties that are null, 2) Remove white space including line feeds, 3) Remove quotes. */ @ApiMember(Description="\r\nAn array of Payment Methods to be used for this purchase. Any entry with PreferredOnFile is assumed if omitted or null. \r\n\r\nEach object of the array may contain properties:\r\n\r\n| Property | Description |\r\n| --- | --- |\r\n| PaymentMethodType | Usually \"AcctToken\" (Default or omitted/null) or \"PreferredOnFile\" |\r\n| PaymentAmount | The amount to be attempted for this Payment Method. When omitted (or null), the Request's PaymentAmount will be attempted |\r\n| AcctToken | The AcctToken to attempt payment (when using PaymentMethodType:AcctToken) |\r\n| ProfileToken | When provided (with AcctToken), a Payment Profile will be created (this will prevent the requirement to call `/sales/paymentprofile/import` (when using PaymentMethodType:AcctToken) |\r\n| DoNotUpdatePaymentTypePreference | When using ProfileToken, do not set the PaymentTypePreference (for more information, see `/sales/paymentprofile/import` (when using PaymentMethodType:AcctToken) |\r\n| | |\r\n\r\n* Scenario #1: Use a Gift Card with PreferredOnFile to cover the amount not approved by the Gift Card. \r\n\r\nJSON:\r\n```json\r\n{\r\n PaymentMethods: [\r\n {\r\n \"PaymentMethodType\":\"AcctToken\",\r\n \"PaymentAmount\":\"1.00\",\r\n \"AcctToken\":\"eyJ...GiftCard AcctToken...\",\r\n \"ProfileToken\":\"eyJ...Gift Card ProfileToken...\"\r\n },\r\n {\r\n \"PaymentMethodType\":\"PreferredOnFile\",\r\n \"PaymentAmount\":\"1.00\"\r\n }\r\n ]\r\n}\r\n```\r\nJSV:\r\n```\r\n[{PaymentMethodType:AcctToken,PaymentAmount:1.00,AcctToken:eyj...,ProfileToken:eyJ...},{PaymentMethodType:PreferredOnFile,PaymentAmount:1.00}]\r\n```\r\n\r\n* Scenario #2: Use a Gift Card with PreferredOnFile to cover the amount not approved by the Gift Card. \r\n\r\nJSON:\r\n```json\r\n{\r\n PaymentMethods: [\r\n {\r\n \"PaymentMethodType\":\"AcctToken\",\r\n \"PaymentAmount\":\"1.00\",\r\n \"AcctToken\":\"eyJ...GiftCard AcctToken...\",\r\n \"ProfileToken\":\"eyJ...Gift Card ProfileToken...\"\r\n },\r\n {\r\n \"PaymentMethodType\":\"PreferredOnFile\",\r\n \"PaymentAmount\":\"1.00\"\r\n }\r\n ]\r\n}\r\n```\r\nJSV:\r\n```jsv\r\n[{PaymentMethodType:AcctToken,PaymentAmount:1.00,AcctToken:eyj...,ProfileToken:eyJ...},{PaymentMethodType:PreferredOnFile,PaymentAmount:1.00}]\r\n```\r\n\r\nNotes: \r\n\r\n* The example shows PaymentAmount of 1.00 for both \"AcctToken\" and \"PreferredOnFile\". This is for the example\r\nwith a total of $1.00. The firstPaymentMethod (the Gift Card) will be attempted for $1.00. If it partially approves\r\nfor less than 1.00 (example: $0.80), the second payment method (PreferredOnFile) will be attempted for the lesser of\r\nit's PaymentAmount and the remaining amount (example: $0.20).\r\n\r\n* Because this endpoint creates a new user, the \"PreferredOnFile\" option is not applicable. Also, ProfileToken with\r\nthe OwnerType \"TempstUser\" is required because the Payment Profile owner will be converted to the newly created user.\r\n\r\n* When using Query String (or this web site), this value must be encoded with JSV [(JSON-like Separated Values)](https://docs.servicestack.net/jsv-format).\r\nBasic steps to convert JSON to JSV: 1) Remove properties that are null, 2) Remove white space including line feeds, 3) Remove quotes.\r\n") var PaymentMethods:ArrayList = ArrayList() var RestrictedId:Int? = null var RestrictedResourceType:RestrictedResourceType? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) AcctToken provided by creating a Payment Profile with the Vault Api. Required if Package requires purchase and PaymentMethods is empty. */ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\nAcctToken provided by creating a Payment Profile with the Vault Api. Required if Package requires purchase and PaymentMethods is empty.") var AcctToken:String? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) Last 4 digits of the Payment Profile. Required with AcctToken. */ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\nLast 4 digits of the Payment Profile. Required with AcctToken.") var Last4:String? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) 2 digit expiration month. **Required with AcctToken for Credit Card.** */ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\n2 digit expiration month. **Required with AcctToken for Credit Card.**") var ExpMonth:Int? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) 2 digit expiration year. **Required with AcctToken for Credit Card.** */ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\n2 digit expiration year. **Required with AcctToken for Credit Card.**") var ExpYear:Int? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) The Account Type the Payment Profile
Common Values
TextNumericalAccount Type
VISA1Visa
MC2MasterCard
Disc3Discover
Amex4American Express
PC11Personal Checking
PS12Personal Savings
BC13Business Checking

You may use the Text or the Numerical value.

*/ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\nThe Account Type the Payment Profile\r\n\r\n
\r\nCommon Values\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
TextNumericalAccount Type
VISA1Visa
MC2MasterCard
Disc3Discover
Amex4American Express
PC11Personal Checking
PS12Personal Savings
BC13Business Checking
\r\n

You may use the Text or the Numerical value.

\r\n
") var AcctType:AcctType? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) Bank Routing Number. **Required with AcctToken for Bank Accounts.** */ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\nBank Routing Number. **Required with AcctToken for Bank Accounts.**") var BnkRoute:Int? = null /** * **Deprecated** (Use `PaymentMethods` with `ProfileToken`) Whether the Payment Profile is Temporary. (One time transactions and Gift Cards are IsTemp = True). */ @ApiMember(Description="\r\n**Deprecated** (Use `PaymentMethods` with `ProfileToken`) \r\n\r\nWhether the Payment Profile is Temporary. (One time transactions and Gift Cards are IsTemp = True).") var IsTemp:Boolean? = null } enum class RestrictedResourceType { Store, Chain, User, Undefined, } open interface IRestrictedApiRequest : IApiKeyEndpoint { var RestrictedId:Int? var RestrictedResourceType:RestrictedResourceType? } open interface IApiKeyEndpoint { var ApiKey:String? } open class ApiDtoBase { var ApiKey:String? = null var StoreId:Int? = null var ChainId:Int? = null } @DataContract enum class AcctType(val value:Int) { Uninitialized(0), Visa(1), Mc(2), Disc(3), Amex(4), Diners(5), Jcb(6), EnRoute(7), PayPal(8), BillMe(9), Pc(11), Ps(12), Bc(13), Bs(14), Becs(15), Bacs(16), Maestro(20), Solo(21), VisaElectron(22), Cibc(23), RoyalBankCa(24), TdCaTrust(25), Scotia(26), Bmo(27), HsbcCa(28), UnionPay(29), InterPayment(30), Laser(31), UnknownCredit(40), TransArmor(41), Factor4(42), XPass(43), ConnectedAccount(44), Error(-1), } @DataContract open class PaymentMethodDto { @DataMember var AcctToken:String? = null @DataMember var ProfileToken:String? = null @DataMember var PaymentProfileId:String? = null @DataMember var PaymentAmount:BigDecimal? = null @DataMember var PaymentMethodType:PaymentMethodType? = null @DataMember var DoNotUpdatePaymentTypePreference:Boolean? = null } open class SellContractAndSetupClientDto : ApiDtoBase() { var AcctToken:String? = null var Last4:String? = null var ExpMonth:Int? = null var ExpYear:Int? = null var AcctType:AcctType? = null var BnkRoute:Int? = null var IsTemp:Boolean? = null var PackageId:Int? = null var InstallmentPlanId:Int? = null var PaymentAmount:BigDecimal? = null var StartDate:Date? = null var FirstName:String? = null var LastName:String? = null var Address:String? = null var City:String? = null var State:String? = null var Zip:String? = null var Email:String? = null var Gender:String? = null var Phone:String? = null var WorkPhone:String? = null var DateOfBirth:Date? = null var CellPhone:String? = null var Note:String? = null var ExternalId:String? = null var PromoCode:String? = null var Username:String? = null var ReferralTypeId:Int? = null var EmergencyContactName:String? = null var EmergencyContactPhone:String? = null var EmergencyContactType:String? = null var PaymentMethods:ArrayList = ArrayList() } enum class PaymentMethodType(val value:Int) { Uninitialized(0), PaymentProfileId(1), PreferredOnFile(2), AcctToken(3), Error(-1), }