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

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: C2BGetSchoolInfoRequest.*
//ExcludeTypes: 
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*
*/

import java.math.*
import java.util.*
import net.servicestack.client.*


/**
* C2BGetSchoolInfoRequires active-e Contracts Service.
*/
@Route(Path="/C2BGetSchoolInfo", Verbs="POST, GET")
@DataContract
open class C2BGetSchoolInfoRequest : BaseRequest(), IReturn<C2BGetSchoolInfoResponse>
{
    /**
    * If sent, only schools associated with the sent plan code will be returned.
    */
    @DataMember
    @ApiMember(DataType="string", Description="If sent, only schools associated with the sent plan code will be returned.", Name="PlanCode", ParameterType="query")
    var PlanCode:String? = null

    /**
    * If sent, only schools associated with the sent district will be returned.
    */
    @DataMember
    @ApiMember(DataType="integer", Description="If sent, only schools associated with the sent district will be returned.", Format="int64", Name="DistrictId", ParameterType="query")
    var DistrictId:Long? = null

    /**
    * ID of the Instrument record. Optional.
    */
    @DataMember
    @ApiMember(DataType="integer", Description="ID of the Instrument record. Optional.", Format="int64", Name="RinPk", ParameterType="query")
    var RinPk:Long? = null

    /**
    * Optional Request Type. Valid values are Contract and Shipping.
    */
    @DataMember
    @ApiMember(DataType="string", Description="Optional Request Type. Valid values are Contract and Shipping.", Name="RequestType", ParameterType="query")
    var RequestType:String? = null
    companion object { private val responseType = C2BGetSchoolInfoResponse::class.java }
    override fun getResponseType(): Any? = C2BGetSchoolInfoRequest.responseType
}

@DataContract
open class C2BGetSchoolInfoResponse : BaseResponse()
{
    @DataMember
    var Schools:ArrayList<C2BSchoolGeneric> = ArrayList<C2BSchoolGeneric>()
}

@DataContract
open class BaseRequest
{
    /**
    * This is your AIM API Key provided by Tri-Tech
    */
    @DataMember
    @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")
    var ApiKey:String? = null

    @DataMember
    @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")
    var OAuthToken:String? = null
}

@DataContract
open class C2BSchoolGeneric
{
    @DataMember
    var SchoolName:String? = null

    @DataMember
    var DistrictName:String? = null

    @DataMember
    var TeacherCount:Int? = null

    @DataMember
    var Topic:String? = null

    @DataMember
    var Id:Long? = null

    @DataMember
    var DeliveryInfo:C2BDeliveryInfo? = null

    @DataMember
    var AIMSchoolId:Long? = null
}

@DataContract
open class C2BDeliveryInfo
{
    @DataMember
    var FirstDelivery:Date? = null

    @DataMember
    var DeliveryTime:Date? = null

    @DataMember
    var DeliveryThreshold:Int? = null

    @DataMember
    var SundayDelivery:Boolean? = null

    @DataMember
    var MondayDelivery:Boolean? = null

    @DataMember
    var TuesdayDelivery:Boolean? = null

    @DataMember
    var WednesdayDelivery:Boolean? = null

    @DataMember
    var ThursdayDelivery:Boolean? = null

    @DataMember
    var FridayDelivery:Boolean? = null

    @DataMember
    var SaturdayDelivery:Boolean? = null
}

@DataContract
open class BaseResponse
{
    /**
    * 
    */
    @DataMember
    @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
    var Status:BaseResponseResult? = null
}