/* Options:
Date: 2025-04-12 20:49:09
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.bokamera.se

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

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


@Route(Path="/codelock/siedle/settings", Verbs="POST")
@ValidateRequest(Validator="IsAuthenticated")
@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ApiResponse(Description="You have too low privileges to call this service", StatusCode=403)
open class AddSiedleCodeLockSetting : IReturn<CodeLockSiedleSettingResponse>, ICompany
{
    /**
    * The company id, if empty will use the company id for the user you are logged in with.
    */
    @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    var CompanyId:UUID? = null

    /**
    * The api endpoint of the code lock
    */
    @ApiMember(DataType="string", Description="The api endpoint of the code lock", IsRequired=true)
    var ApiEndpoint:String? = null

    /**
    * The api port for the code lock.
    */
    @ApiMember(DataType="string", Description="The api port for the code lock.", IsRequired=true)
    var ApiPort:String? = null

    /**
    * The device id to the code lock.
    */
    @ApiMember(DataType="string", Description="The device id to the code lock.")
    var DeviceId:String? = null

    /**
    * The integration type to the code lock. 1 = Local Api,  2 = Cloud Based Api
    */
    @ApiMember(DataType="string", Description="The integration type to the code lock. 1 = Local Api,  2 = Cloud Based Api")
    var IntegrationType:SiedleIntegrationType? = null

    /**
    * The username to logon to the code lock.
    */
    @ApiMember(DataType="string", Description="The username to logon to the code lock.", IsRequired=true)
    var Username:String? = null

    /**
    * The password to logon to the code lock.
    */
    @ApiMember(DataType="string", Description="The password to logon to the code lock.", IsRequired=true)
    var Password:String? = null
    companion object { private val responseType = CodeLockSiedleSettingResponse::class.java }
    override fun getResponseType(): Any? = AddSiedleCodeLockSetting.responseType
}

open class CodeLockSiedleSettingResponse
{
    var CompanyId:UUID? = null
    /**
    * The api endpoint of the code lock
    */
    @ApiMember(DataType="string", Description="The api endpoint of the code lock")
    var ApiEndpoint:String? = null

    /**
    * The api port for the code lock.
    */
    @ApiMember(DataType="string", Description="The api port for the code lock.")
    var ApiPort:Int? = null

    /**
    * The device id to the code lock.
    */
    @ApiMember(DataType="string", Description="The device id to the code lock.")
    var DeviceId:String? = null

    /**
    * The username to logon to the code lock.
    */
    @ApiMember(DataType="string", Description="The username to logon to the code lock.")
    var Username:String? = null

    /**
    * The password to logon to the code lock.
    */
    @ApiMember(DataType="string", Description="The password to logon to the code lock.")
    var Password:String? = null

    /**
    * The integration type to the code lock. 1 = Local Api,  2 = Cloud Based Api
    */
    @ApiMember(DataType="string", Description="The integration type to the code lock. 1 = Local Api,  2 = Cloud Based Api")
    var IntegrationType:SiedleIntegrationType? = null

    /**
    * When settings was created
    */
    @ApiMember(DataType="datetime", Description="When settings was created")
    var Created:Date? = null

    /**
    * When settings was updated
    */
    @ApiMember(DataType="datetime", Description="When settings was updated")
    var Updated:Date? = null
}

open interface ICompany
{
    var CompanyId:UUID?
}

enum class SiedleIntegrationType(val value:Int)
{
    LocalApi(1),
    CloudBasedApi(2),
}