/* Options:
Date: 2025-05-30 02:09:34
Version: 8.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://active-ewebservice.biz/aeservices30/api

//Package: 
//GlobalNamespace: dtos
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddDescriptionAsComments: True
//AddImplicitVersion: 
IncludeTypes: ShortTermRentalInventoryRequest.*
//ExcludeTypes: 
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*
*/

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

public class dtos
{

    /**
    * ShortTermRentalInventoryRequires active-e Short Term Rental Service
    */
    @Route(Path="/ShortTermRentalInventory", Verbs="GET")
    @DataContract
    public static class ShortTermRentalInventoryRequest extends BaseSecureRequest implements IReturn<ShortTermRentalInventoryResponse>
    {
        /**
        * Item to lookup. Pass in either this *OR* ItemPk + PkType *OR* Category + SubCategory
        */
        @DataMember
        @ApiMember(Description="Item to lookup. Pass in either this *OR* ItemPk + PkType *OR* Category + SubCategory", Name="Item", ParameterType="query")
        public String Item = null;

        @DataMember
        public String LocationCode = null;

        /**
        * Key of the item to lookup. Pass in either this plus PkType *OR* Item *OR* Category + SubCategory
        */
        @DataMember
        @ApiMember(Description="Key of the item to lookup. Pass in either this plus PkType *OR* Item *OR* Category + SubCategory", Name="ItemPk", ParameterType="query")
        public Long ItemPk = null;

        /**
        * Type of the key passed in. S for SasPk, Q for SaqPk, P for PkhPk. Pass in either this plus ItemPk *OR* Item *OR* Category + SubCategory
        */
        @DataMember
        @ApiMember(Description="Type of the key passed in. S for SasPk, Q for SaqPk, P for PkhPk. Pass in either this plus ItemPk *OR* Item *OR* Category + SubCategory", Name="PkType", ParameterType="query")
        public String PkType = null;

        /**
        * Pass in either SubCategory + this *OR* Item *OR* ItemPk + PkType
        */
        @DataMember
        @ApiMember(Description="Pass in either SubCategory + this *OR* Item *OR* ItemPk + PkType", Name="Category", ParameterType="query")
        public Integer Category = null;

        /**
        * Pass in either Category + this *OR* Item *OR* ItemPk + PkType
        */
        @DataMember
        @ApiMember(Description="Pass in either Category + this *OR* Item *OR* ItemPk + PkType", Name="SubCategory", ParameterType="query")
        public Integer SubCategory = null;
        
        public String getItem() { return Item; }
        public ShortTermRentalInventoryRequest setItem(String value) { this.Item = value; return this; }
        public String getLocationCode() { return LocationCode; }
        public ShortTermRentalInventoryRequest setLocationCode(String value) { this.LocationCode = value; return this; }
        public Long getItemPk() { return ItemPk; }
        public ShortTermRentalInventoryRequest setItemPk(Long value) { this.ItemPk = value; return this; }
        public String getPkType() { return PkType; }
        public ShortTermRentalInventoryRequest setPkType(String value) { this.PkType = value; return this; }
        public Integer getCategory() { return Category; }
        public ShortTermRentalInventoryRequest setCategory(Integer value) { this.Category = value; return this; }
        public Integer getSubCategory() { return SubCategory; }
        public ShortTermRentalInventoryRequest setSubCategory(Integer value) { this.SubCategory = value; return this; }
        private static Object responseType = ShortTermRentalInventoryResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @DataContract
    public static class ShortTermRentalInventoryResponse extends BaseResponse
    {
        @DataMember
        public ArrayList<ShortTermRentalInventoryObj> Results = null;
        
        public ArrayList<ShortTermRentalInventoryObj> getResults() { return Results; }
        public ShortTermRentalInventoryResponse setResults(ArrayList<ShortTermRentalInventoryObj> value) { this.Results = value; return this; }
    }

    @DataContract
    public static 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")
        public String ApiKey = null;

        @DataMember
        @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")
        public String OAuthToken = null;
        
        public String getApiKey() { return ApiKey; }
        public BaseRequest setApiKey(String value) { this.ApiKey = value; return this; }
        public String getOAuthToken() { return OAuthToken; }
        public BaseRequest setOAuthToken(String value) { this.OAuthToken = value; return this; }
    }

    @DataContract
    public static class BaseSecureRequest extends BaseRequest
    {
        /**
        * 
        */
        @DataMember
        @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")
        public String Token = null;

        /**
        * 
        */
        @DataMember
        @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")
        public String DeviceId = null;

        /**
        * 
        */
        @DataMember
        @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")
        public String AppId = null;
        
        public String getToken() { return Token; }
        public BaseSecureRequest setToken(String value) { this.Token = value; return this; }
        public String getDeviceId() { return DeviceId; }
        public BaseSecureRequest setDeviceId(String value) { this.DeviceId = value; return this; }
        public String getAppId() { return AppId; }
        public BaseSecureRequest setAppId(String value) { this.AppId = value; return this; }
    }

    @DataContract
    public static class ShortTermRentalInventoryObj
    {
        @DataMember
        public ArrayList<ShortTermRentalInventoryRate> Rates = null;

        @DataMember
        public ArrayList<Long> AvailableSerialPks = null;

        @DataMember
        public Long SaqPk = null;

        @DataMember
        public Long SkuPk = null;

        @DataMember
        public Long PkhPk = null;

        @DataMember
        public String Sku = null;

        @DataMember
        public String Package = null;

        @DataMember
        public String InvType = null;

        @DataMember
        public BigDecimal AvailableQty = null;
        
        public ArrayList<ShortTermRentalInventoryRate> getRates() { return Rates; }
        public ShortTermRentalInventoryObj setRates(ArrayList<ShortTermRentalInventoryRate> value) { this.Rates = value; return this; }
        public ArrayList<Long> getAvailableSerialPks() { return AvailableSerialPks; }
        public ShortTermRentalInventoryObj setAvailableSerialPks(ArrayList<Long> value) { this.AvailableSerialPks = value; return this; }
        public Long getSaqPk() { return SaqPk; }
        public ShortTermRentalInventoryObj setSaqPk(Long value) { this.SaqPk = value; return this; }
        public Long getSkuPk() { return SkuPk; }
        public ShortTermRentalInventoryObj setSkuPk(Long value) { this.SkuPk = value; return this; }
        public Long getPkhPk() { return PkhPk; }
        public ShortTermRentalInventoryObj setPkhPk(Long value) { this.PkhPk = value; return this; }
        public String getSku() { return Sku; }
        public ShortTermRentalInventoryObj setSku(String value) { this.Sku = value; return this; }
        public String getPackage() { return Package; }
        public ShortTermRentalInventoryObj setPackage(String value) { this.Package = value; return this; }
        public String getInvType() { return InvType; }
        public ShortTermRentalInventoryObj setInvType(String value) { this.InvType = value; return this; }
        public BigDecimal getAvailableQty() { return AvailableQty; }
        public ShortTermRentalInventoryObj setAvailableQty(BigDecimal value) { this.AvailableQty = value; return this; }
    }

    @DataContract
    public static class ShortTermRentalInventoryRate
    {
        @DataMember
        public String HeaderDesc = null;

        @DataMember
        public String HeaderNotes = null;

        @DataMember
        public String Desc = null;

        @DataMember
        public String IntervalType = null;

        @DataMember
        public String Group = null;

        @DataMember
        public String Notes = null;

        @DataMember
        public BigDecimal Amt = null;

        @DataMember
        public Integer TimeInterval = null;
        
        public String getHeaderDesc() { return HeaderDesc; }
        public ShortTermRentalInventoryRate setHeaderDesc(String value) { this.HeaderDesc = value; return this; }
        public String getHeaderNotes() { return HeaderNotes; }
        public ShortTermRentalInventoryRate setHeaderNotes(String value) { this.HeaderNotes = value; return this; }
        public String getDesc() { return Desc; }
        public ShortTermRentalInventoryRate setDesc(String value) { this.Desc = value; return this; }
        public String getIntervalType() { return IntervalType; }
        public ShortTermRentalInventoryRate setIntervalType(String value) { this.IntervalType = value; return this; }
        public String getGroup() { return Group; }
        public ShortTermRentalInventoryRate setGroup(String value) { this.Group = value; return this; }
        public String getNotes() { return Notes; }
        public ShortTermRentalInventoryRate setNotes(String value) { this.Notes = value; return this; }
        public BigDecimal getAmt() { return Amt; }
        public ShortTermRentalInventoryRate setAmt(BigDecimal value) { this.Amt = value; return this; }
        public Integer getTimeInterval() { return TimeInterval; }
        public ShortTermRentalInventoryRate setTimeInterval(Integer value) { this.TimeInterval = value; return this; }
    }

    @DataContract
    public static class BaseResponse
    {
        /**
        * 
        */
        @DataMember
        @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
        public BaseResponseResult Status = null;
        
        public BaseResponseResult getStatus() { return Status; }
        public BaseResponse setStatus(BaseResponseResult value) { this.Status = value; return this; }
    }

}