/* Options:
Date: 2025-05-23 12:34:17
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: GetSchedulingTypesRequest.*
//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; }
    }

    ///<summary>
    ///GetSchedulingTypesRequires active-e Lesson Scheduling Service
    ///</summary>
    [Route("/GetSchedulingTypes", "GET")]
    [DataContract]
    public partial class GetSchedulingTypesRequest
        : BaseRequest, IReturn<GetSchedulingTypesResponse>
    {
        ///<summary>
        ///Type ID to look up. If sent, all other parameters will be ignored.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="Type ID to look up. If sent, all other parameters will be ignored.", Format="int64", Name="TypeId", ParameterType="query")]
        public virtual long? TypeId { get; set; }

        ///<summary>
        ///If sent, only types in the sent grouping will be returned.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="If sent, only types in the sent grouping will be returned.", Format="int64", Name="GroupingId", ParameterType="query")]
        public virtual long? GroupingId { get; set; }

        ///<summary>
        ///If sent, only types taught by the sent instructor will be returned.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="If sent, only types taught by the sent instructor will be returned.", Format="int32", Name="InstructorId", ParameterType="query")]
        public virtual int? InstructorId { get; set; }

        ///<summary>
        ///If sent, only types taught at the sent location will be returned.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="If sent, only types taught at the sent location will be returned.", Format="int64", Name="LocationId", ParameterType="query")]
        public virtual long? LocationId { get; set; }

        ///<summary>
        ///If sent, should be Private or Group. If Private, only Private Lesson Types will be returned. If Group, only Group Lesson Types will be returned.
        ///</summary>
        [DataMember]
        [ApiMember(DataType="integer", Description="If sent, should be Private or Group. If Private, only Private Lesson Types will be returned. If Group, only Group Lesson Types will be returned.", Format="int64", Name="MembershipType", ParameterType="query")]
        public virtual string MembershipType { get; set; }
    }

    [DataContract]
    public partial class GetSchedulingTypesResponse
        : BaseResponse
    {
        public GetSchedulingTypesResponse()
        {
            Types = new List<TypeInfo>{};
        }

        [DataMember]
        public virtual List<TypeInfo> Types { get; set; }
        [DataContract]
        public partial class TypeInfo
        {
            [DataMember]
            public virtual long Id { get; set; }

            [DataMember]
            public virtual string Desc { get; set; }

            [DataMember]
            public virtual int Length { get; set; }

            [DataMember]
            public virtual string Topic { get; set; }

            [DataMember]
            public virtual string RecurranceType { get; set; }

            [DataMember]
            public virtual string MembershipType { get; set; }

            [DataMember]
            public virtual decimal Rate { get; set; }

            [DataMember]
            public virtual long? GroupingId { get; set; }

            [DataMember]
            public virtual string GroupingDesc { get; set; }
        }

    }

}