/* Options:
Date: 2025-05-27 20:56:01
Version: 8.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://active-ewebservice.biz/aeservices30/api

//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: PostSchedulingPrivateRequest.*
//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 AIM.WebService;

namespace AIM.WebService
{
    [DataContract]
    public partial class BaseRequest
    {
        ///<summary>
        ///This is your AIM API Key provided by Tri-Tech
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")]
        public virtual string ApiKey { get; set; }

        [DataMember]
        [ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")]
        public virtual string OAuthToken { get; set; }
    }

    [DataContract]
    public partial class BaseResponse
    {
        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")]
        public virtual BaseResponseResult Status { get; set; }
    }

    [DataContract(Name="CCInfo")]
    public partial class CcInfo
    {
        ///<summary>
        ///Token returned from processor
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Token returned from processor", IsRequired=true, Name="TokenStr", ParameterType="query")]
        public virtual string TokenStr { get; set; }

        ///<summary>
        ///Card Type (VISA, MCARD, AMEX, DSCVR)
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Card Type (VISA, MCARD, AMEX, DSCVR)", IsRequired=true, Name="CardType", ParameterType="query")]
        public virtual string CardType { get; set; }

        ///<summary>
        ///Last four of the card
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Last four of the card", IsRequired=true, Name="LastFour", ParameterType="query")]
        public virtual string LastFour { get; set; }

        ///<summary>
        ///Expiration Date of the Card. (MM/YY)
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Expiration Date of the Card. (MM/YY)", Name="Expiration", ParameterType="query")]
        public virtual string Expiration { get; set; }

        ///<summary>
        ///Reason the card is on file.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Reason the card is on file.", Name="ReasonOnFile", ParameterType="query")]
        public virtual string ReasonOnFile { get; set; }

        ///<summary>
        ///ID of the existing Token Record in AIM, if applicable
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="ID of the existing Token Record in AIM, if applicable", Format="int64", Name="TokenPk", ParameterType="query")]
        public virtual long? TokenPk { get; set; }

        ///<summary>
        ///Is this the customer's primary card? Defaults to false.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="boolean", Description="Is this the customer's primary card? Defaults to false.", Name="Primary", ParameterType="query")]
        public virtual bool? Primary { get; set; }
    }

    [DataContract(Name="CustomerInfo")]
    public partial class CustomerInfo
    {
        ///<summary>
        ///The WebId of the customer. Optional.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="The WebId of the customer. Optional.", Format="int32", IsRequired=true, Name="WebId", ParameterType="query")]
        public virtual int? WebId { get; set; }

        ///<summary>
        ///Name of the customer.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Name of the customer.", IsRequired=true, Name="Name", ParameterType="query")]
        public virtual string Name { get; set; }

        ///<summary>
        ///Address line 1 of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Address line 1 of the customer", Name="Addr1", ParameterType="query")]
        public virtual string Addr1 { get; set; }

        ///<summary>
        ///Address line 2 of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Address line 2 of the customer", Name="Addr2", ParameterType="query")]
        public virtual string Addr2 { get; set; }

        ///<summary>
        ///City of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="City of the customer", Name="City", ParameterType="query")]
        public virtual string City { get; set; }

        ///<summary>
        ///State/Province of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="State/Province of the customer", Name="St", ParameterType="query")]
        public virtual string St { get; set; }

        ///<summary>
        ///Zip code of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Zip code of the customer", Name="Zip", ParameterType="query")]
        public virtual string Zip { get; set; }

        ///<summary>
        ///Country of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Country of the customer", Name="Country", ParameterType="query")]
        public virtual string Country { get; set; }

        ///<summary>
        ///Phone number of the customer
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Phone number of the customer", Name="Phone", ParameterType="query")]
        public virtual string Phone { get; set; }

        ///<summary>
        ///Email address of the customer. Required.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Email address of the customer. Required.", IsRequired=true, Name="Email", ParameterType="query")]
        public virtual string Email { get; set; }
    }

    [DataContract(Name="FormInput")]
    public partial class FormInput
    {
        ///<summary>
        ///Field Name of the Input Field
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Field Name of the Input Field", IsRequired=true, Name="Key", ParameterType="query")]
        public virtual string Key { get; set; }

        ///<summary>
        ///Value of the Input Field.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Value of the Input Field.", IsRequired=true, Name="Value", ParameterType="query")]
        public virtual string Value { get; set; }

        ///<summary>
        ///Whether or not the field is encryped with the C2B encryption key.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="boolean", Description="Whether or not the field is encryped with the C2B encryption key.", IsRequired=true, Name="Encrypted", ParameterType="query")]
        public virtual bool Encrypted { get; set; }
    }

    ///<summary>
    ///PostSchedulingPrivateRequires active-e Lesson Scheduling Service
    ///</summary>
    [Route("/PostSchedulingPrivate", "POST")]
    [DataContract]
    public partial class PostSchedulingPrivateRequest
        : BaseRequest, IReturn<PostSchedulingPrivateResponse>
    {
        public PostSchedulingPrivateRequest()
        {
            FormInputList = new List<FormInput>{};
        }

        ///<summary>
        ///The type ID of the private appointment
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="The type ID of the private appointment", Format="int64", IsRequired=true, Name="TypeId", ParameterType="query")]
        public virtual long? TypeId { get; set; }

        ///<summary>
        ///The Instructor ID of the appointment
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="The Instructor ID of the appointment", Format="int32", IsRequired=true, Name="InstructorId", ParameterType="query")]
        public virtual int? InstructorId { get; set; }

        ///<summary>
        ///IThe location ID of the appointment
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="IThe location ID of the appointment", Format="int64", IsRequired=true, Name="LocationId", ParameterType="query")]
        public virtual long? LocationId { get; set; }

        ///<summary>
        ///The start time of the appointment.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="The start time of the appointment.", Format="date-time", IsRequired=true, Name="AppointmentStart", ParameterType="query")]
        public virtual DateTime? AppointmentStart { get; set; }

        ///<summary>
        ///The name of the student
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="The name of the student", IsRequired=true, Name="StudentName", ParameterType="query")]
        public virtual string StudentName { get; set; }

        ///<summary>
        ///Online reference number of this appointment
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Online reference number of this appointment", Name="RefNumber", ParameterType="query")]
        public virtual string RefNumber { get; set; }

        ///<summary>
        ///The AIM customer account # of the customer. Optional.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="The AIM customer account # of the customer. Optional.", Format="int32", Name="CustomerAcct", ParameterType="query")]
        public virtual int? CustomerAcct { get; set; }

        ///<summary>
        ///Customer Information
        ///</summary>
        [DataMember]
        [ApiMember(DataType="object", Description="Customer Information", Name="CustomerInfo", ParameterType="query")]
        public virtual CustomerInfo CustomerInfo { get; set; }

        ///<summary>
        ///Additional Customer or Appointment info
        ///</summary>
        [DataMember]
        [ApiMember(DataType="array", Description="Additional Customer or Appointment info", Name="FormInputList", ParameterType="query")]
        public virtual List<FormInput> FormInputList { get; set; }

        ///<summary>
        ///Credit Card info of the customer for this appointment
        ///</summary>
        [DataMember]
        [ApiMember(DataType="object", Description="Credit Card info of the customer for this appointment", Name="CcInfo", ParameterType="query")]
        public virtual CcInfo CcInfo { get; set; }

        ///<summary>
        ///Notes on this appointment
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="Notes on this appointment", Name="Notes", ParameterType="query")]
        public virtual string Notes { get; set; }
    }

    [DataContract]
    public partial class PostSchedulingPrivateResponse
        : BaseResponse
    {
    }

}