/* Options: Date: 2024-05-13 02:02:42 Version: 6.50 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://www.clubready.com/api/current //GlobalNamespace: //MakePartial: True //MakeVirtual: True //MakeInternal: False //MakeDataContractsExtensible: False //AddNullableAnnotations: False //AddReturnMarker: True //AddDescriptionAsComments: True //AddDataContractAttributes: False //AddIndexesToDataMembers: False //AddGeneratedCodeAttributes: False //AddResponseStatus: False //AddImplicitVersion: //InitializeCollections: True //ExportValueTypes: False IncludeTypes: SellContractAndSetupClientRequest.* //ExcludeTypes: //AddNamespaces: //AddDefaultXmlNamespace: http://schemas.servicestack.net/types */ using System; using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using ServiceStack; using ServiceStack.DataAnnotations; using ClubReady.Web.Api; using ClubReady.Core.Api.Models; using ClubReadyGateway.Vault; using ClubReady.Core.Sales.Enums; using ClubReady.Web.Api.Sales.Model; namespace ClubReady.Core.Api.Models { public partial class ApiDtoBase { public virtual string ApiKey { get; set; } public virtual int? StoreId { get; set; } public virtual int? ChainId { get; set; } } [DataContract] public partial class PaymentMethodDto { [DataMember] public virtual string AcctToken { get; set; } [DataMember] public virtual string ProfileToken { get; set; } [DataMember] public virtual string PaymentProfileId { get; set; } [DataMember] public virtual decimal? PaymentAmount { get; set; } [DataMember] public virtual PaymentMethodType? PaymentMethodType { get; set; } [DataMember] public virtual bool? DoNotUpdatePaymentTypePreference { get; set; } } public partial class SellContractAndSetupClientDto : ApiDtoBase { public SellContractAndSetupClientDto() { PaymentMethods = new List{}; } public virtual string AcctToken { get; set; } public virtual string Last4 { get; set; } public virtual int? ExpMonth { get; set; } public virtual int? ExpYear { get; set; } public virtual AcctType? AcctType { get; set; } public virtual int? BnkRoute { get; set; } public virtual bool IsTemp { get; set; } public virtual int PackageId { get; set; } public virtual int InstallmentPlanId { get; set; } public virtual decimal PaymentAmount { get; set; } public virtual DateTime? StartDate { get; set; } public virtual string FirstName { get; set; } public virtual string LastName { get; set; } public virtual string Address { get; set; } public virtual string City { get; set; } public virtual string State { get; set; } public virtual string Zip { get; set; } public virtual string Email { get; set; } public virtual string Gender { get; set; } public virtual string Phone { get; set; } public virtual string WorkPhone { get; set; } public virtual DateTime? DateOfBirth { get; set; } public virtual string CellPhone { get; set; } public virtual string Note { get; set; } public virtual string ExternalId { get; set; } public virtual string PromoCode { get; set; } public virtual string Username { get; set; } public virtual int? ReferralTypeId { get; set; } public virtual string EmergencyContactName { get; set; } public virtual string EmergencyContactPhone { get; set; } public virtual string EmergencyContactType { get; set; } public virtual List PaymentMethods { get; set; } } } namespace ClubReady.Core.Sales.Enums { public enum PaymentMethodType { Uninitialized = 0, PaymentProfileId = 1, PreferredOnFile = 2, AcctToken = 3, Error = -1, } } namespace ClubReady.Web.Api { public partial interface IApiKeyEndpoint { string ApiKey { get; set; } } public partial interface IRestrictedApiRequest : IApiKeyEndpoint { int? RestrictedId { get; set; } RestrictedResourceType RestrictedResourceType { get; set; } } public enum RestrictedResourceType { Store, Chain, User, Undefined, } } namespace ClubReady.Web.Api.Sales.Model { [Route("/sales/contract/sold/new/user", "POST")] [ApiResponse(Description="", ResponseType=typeof(ClubReady.Web.Api.Sales.Model.SellContractAndSetupClientResponse), StatusCode=200)] public partial class SellContractAndSetupClientRequest : SellContractAndSetupClientDto, IRestrictedApiRequest { public SellContractAndSetupClientRequest() { PaymentMethods = new List{}; } /// ///Api Authentication Key /// [ApiMember(Description="Api Authentication Key", IsRequired=true, ParameterType="query")] public virtual string ApiKey { get; set; } /// ///Id for the chain of the Api Key /// [ApiMember(Description="Id for the chain of the Api Key", ParameterType="query")] public virtual int? ChainId { get; set; } /// ///Id of the store for the user /// [ApiMember(Description="Id of the store for the user", IsRequired=true, ParameterType="query")] public virtual int? StoreId { get; set; } /// ///Package Id being sold /// [ApiMember(Description="Package Id being sold", IsRequired=true)] public virtual int PackageId { get; set; } /// ///Installment Plan Id being sold /// [ApiMember(Description="Installment Plan Id being sold", IsRequired=true)] public virtual int InstallmentPlanId { get; set; } /// ///Amount being paid /// [ApiMember(Description="Amount being paid", IsRequired=true)] public virtual decimal PaymentAmount { get; set; } /// ///Date contract takes affect /// [ApiMember(Description="Date contract takes affect")] public virtual DateTime? StartDate { get; set; } /// ///First Name /// [ApiMember(Description="First Name", IsRequired=true)] public virtual string FirstName { get; set; } /// ///Last Name /// [ApiMember(Description="Last Name", IsRequired=true)] public virtual string LastName { get; set; } /// ///Email Address /// [ApiMember(Description="Email Address", IsRequired=true)] public virtual string Email { get; set; } /// ///Gender /// [ApiMember(Description="Gender")] public virtual string Gender { get; set; } /// ///Address /// [ApiMember(Description="Address")] public virtual string Address { get; set; } /// ///City /// [ApiMember(Description="City")] public virtual string City { get; set; } /// ///State /// [ApiMember(Description="State")] public virtual string State { get; set; } /// ///Zip Code /// [ApiMember(Description="Zip Code")] public virtual string Zip { get; set; } /// ///Home phone /// [ApiMember(Description="Home phone")] public virtual string Phone { get; set; } /// ///Work phone /// [ApiMember(Description="Work phone")] public virtual string WorkPhone { get; set; } /// ///Date of Birth /// [ApiMember(Description="Date of Birth")] public virtual DateTime? DateOfBirth { get; set; } /// ///Cell phone /// [ApiMember(Description="Cell phone")] public virtual string CellPhone { get; set; } /// ///Add an internal note for the new prospect /// [ApiMember(Description="Add an internal note for the new prospect")] public virtual string Note { get; set; } /// ///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")] public virtual string ExternalId { get; set; } /// ///Promo code to apply a discount. /// [ApiMember(Description="Promo code to apply a discount.")] public virtual string PromoCode { get; set; } /// ///Username should be between 4 and 255 characters long /// [ApiMember(Description="Username should be between 4 and 255 characters long")] public virtual string Username { get; set; } /// ///ReferralTypeId /// [ApiMember(Description="ReferralTypeId")] public virtual int? ReferralTypeId { get; set; } /// ///Emergency contact name /// [ApiMember(Description="Emergency contact name")] public virtual string EmergencyContactName { get; set; } /// ///Emergency contact phone number /// [ApiMember(Description="Emergency contact phone number")] public virtual string EmergencyContactPhone { get; set; } /// ///Emergency contact relationship /// [ApiMember(Description="Emergency contact relationship")] public virtual string EmergencyContactType { get; set; } /// ///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")] public virtual List PaymentMethods { get; set; } public virtual int? RestrictedId { get; set; } public virtual RestrictedResourceType RestrictedResourceType { get; set; } /// ///**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.")] public virtual string AcctToken { get; set; } /// ///**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.")] public virtual string Last4 { get; set; } /// ///**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.**")] public virtual int? ExpMonth { get; set; } /// ///**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.**")] public virtual int? ExpYear { get; set; } /// ///**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
")] public virtual AcctType? AcctType { get; set; } /// ///**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.**")] public virtual int? BnkRoute { get; set; } /// ///**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).")] public virtual bool IsTemp { get; set; } } } namespace ClubReadyGateway.Vault { [DataContract] public enum AcctType { 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, } }