/* Options:
Date: 2025-04-16 14:34:51
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://testapi.bokamera.se

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

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


@Route(Path="/schedules/recurring/intervals", Verbs="GET")
@ValidateRequest(Validator="IsAuthenticated")
open class RecurringScheduleIntervalsQuery : IReturn<ScheduleIntervalsQueryResponse>, ICompany, IInterval
{
    /**
    * Company to show services for
    */
    @ApiMember(Description="Company to show services for", ParameterType="query")
    var CompanyId:UUID? = null

    /**
    * From what datetime to show times
    */
    @ApiMember(DataType="dateTime", Description="From what datetime to show times", IsRequired=true, ParameterType="query")
    var From:Date? = null

    /**
    * To what datetime to show times
    */
    @ApiMember(DataType="dateTime", Description="To what datetime to show times", IsRequired=true, ParameterType="query")
    var To:Date? = null

    /**
    * Here you can select one of the resource, if none is selected it will show available times for all
    */
    @ApiMember(Description="Here you can select one of the resource, if none is selected it will show available times for all", ParameterType="query")
    var ResourceIds:ArrayList<Int>? = null

    var ResponseStatus:ResponseStatus? = null
    companion object { private val responseType = ScheduleIntervalsQueryResponse::class.java }
    override fun getResponseType(): Any? = RecurringScheduleIntervalsQuery.responseType
}

open class ScheduleIntervalsQueryResponse
{
    var From:Date? = null
    var To:Date? = null
    var Duration:TimeSpan? = null
}

open interface ICompany
{
    var CompanyId:UUID?
}

open interface IInterval
{
    var From:Date?
    var To:Date?
}