/* Options:
Date: 2025-04-17 00:27:54
SwiftVersion: 5.0
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://testapi.bokamera.se

//BaseClass: 
//AddModelExtensions: True
//AddServiceStackTypes: True
IncludeTypes: CodeLockSiedleSettingQuery.*
//ExcludeTypes: 
//ExcludeGenericBaseTypes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: Foundation,ServiceStack
*/

import Foundation
import ServiceStack

// @Route("/codelock/siedle/settings", "GET")
// @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)
public class CodeLockSiedleSettingQuery : IReturn, ICompany, Codable
{
    public typealias Return = CodeLockSiedleSettingResponse

    /**
    * 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.")
    public var companyId:String?

    required public init(){}
}

public class CodeLockSiedleSettingResponse : Codable
{
    public var companyId:String
    /**
    * The api endpoint of the code lock
    */
    // @ApiMember(DataType="string", Description="The api endpoint of the code lock")
    public var apiEndpoint:String

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

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

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

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

    /**
    * 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")
    public var integrationType:SiedleIntegrationType

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

    /**
    * When settings was updated
    */
    // @ApiMember(DataType="datetime", Description="When settings was updated")
    public var updated:Date

    required public init(){}
}

public protocol ICompany
{
    var companyId:String? { get set }

}

public enum SiedleIntegrationType : Int, Codable
{
    case LocalApi = 1
    case CloudBasedApi = 2
}