{
    "openapi": "3.0.0",
    "info": {
        "title": "DanaServer",
        "description": "DanaServer is the cloud backend for Danalocks.",
        "termsOfService": "https://partners.danalock.com/",
        "contact": {
            "name": "Danalock International ApS",
            "url": "https://partners.danalock.com/",
            "email": "danalockpartner@saltosystems.com"
        },
        "version": "0.0.0"
    },
    "servers": [
        {
            "url": "https://api.danalock.com",
            "description": "Danaserver"
        },
        {
            "url": "https://dev.api.danalock.com",
            "description": "Danaserver DEV"
        }
    ],
    "components": {
        "securitySchemes": {
            "oauth2": {
                "type": "oauth2",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "/oauth2/authorize",
                        "tokenUrl": "/oauth2/token",
                        "refreshUrl": "/oauth2/token",
                        "scopes": {
                            "basic": "Access basic account information.",
                            "keychain": "Access keys in your keychain.",
                            "remote_access": "Operate your Danalocks remotely.",
                            "links": "Setup connections between users and locks.",
                            "guest_users": "Manage guest accounts and invite new users.",
                            "create_key": "Create immediate keys with specific access time, permissions etc.",
                            "notifications": "Receive notifications when your Danalocks are operated."
                        }
                    }
                }
            }
        },
        "schemas": {
            "Advertisement": {
                "type": "object",
                "properties": {
                    "token": {
                        "type": "string",
                        "description": "Unique token used to fetch or respond the advertisement."
                    },
                    "template": {
                        "type": "string",
                        "description": "Type of advertisement."
                    },
                    "body": {
                        "type": "string",
                        "description": "Message body of the advertisement."
                    },
                    "timestamp": {
                        "type": "string",
                        "description": "Timestamp of the advertisement."
                    },
                    "controls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/AdvertisementControl"
                        }
                    },
                    "forms": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/AdvertisementForm"
                        }
                    }
                }
            },
            "AdvertisementControl": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "description": "Type of control."
                    },
                    "id": {
                        "type": "string",
                        "description": "Name of control."
                    },
                    "caption": {
                        "type": "string",
                        "description": "Text of control."
                    },
                    "posttext": {
                        "type": "string",
                        "description": "Message to user after pressing button, if type is submit."
                    }
                }
            },
            "AdvertisementForm": {
                "type": "object",
                "properties": {
                    "header": {
                        "type": "string",
                        "description": "Header text of the form."
                    },
                    "controls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/AdvertisementControl"
                        }
                    }
                }
            },
            "AfiPermission": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "afi_lock_operate"
                    }
                }
            },
            "AuthenticationRequiredError": {
                "type": "object",
                "required": [
                    "error",
                    "message"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "authentication_required"
                    },
                    "message": {
                        "type": "string",
                        "example": ""
                    }
                }
            },
            "BroadcastKeyTuple": {
                "type": "object",
                "properties": {
                    "device": {
                        "$ref": "#/components/schemas/Device"
                    },
                    "broadcast_key": {
                        "type": "string",
                        "format": "byte",
                        "description": "Key used to decrypt broadcasted information (Ble Advertising Data)",
                        "example": "AAECAwQFBgcICQoLDA0ODw=="
                    }
                }
            },
            "ClientAddress": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string",
                        "description": "Dmi serial number that the client should use."
                    }
                }
            },
            "Device": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "serial_number": {
                        "type": "string",
                        "format": "serial_number",
                        "readOnly": true
                    },
                    "device_type": {
                        "$ref": "#/components/schemas/DeviceType"
                    },
                    "timezone": {
                        "type": "string",
                        "example": "Europe/Copenhagen"
                    }
                }
            },
            "DeviceType": {
                "type": "string",
                "enum": [
                    "danalockv3",
                    "danabridgev3",
                    "universalmodulev3",
                    "danapadv3"
                ]
            },
            "DomainRight": {
                "type": "object",
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "devices:create"
                    }
                }
            },
            "DomainV1LinkProfile": {
                "type": "object",
                "required": [
                    "id",
                    "name"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "administrator"
                    },
                    "name": {
                        "type": "string",
                        "example": "Administrator"
                    }
                }
            },
            "DomainV1NameUpdate": {
                "type": "object",
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "New domain name"
                    }
                }
            },
            "DomainV1Role": {
                "type": "object",
                "required": [
                    "id",
                    "name"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "administrator"
                    },
                    "name": {
                        "type": "string",
                        "example": "Administrator"
                    }
                }
            },
            "EkeyError": {
                "type": "object",
                "required": [
                    "error",
                    "message"
                ],
                "properties": {
                    "error": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    }
                }
            },
            "EkeyV2Keys": {
                "type": "object",
                "properties": {
                    "refresh": {
                        "type": "string"
                    },
                    "PLCIRS": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV2PLCIR"
                        }
                    },
                    "keys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3Key"
                        }
                    }
                }
            },
            "EkeyV2LinkInvite": {
                "type": "object",
                "required": [
                    "short",
                    "combined",
                    "URL"
                ],
                "properties": {
                    "short": {
                        "type": "string",
                        "example": "You have been invited to Danalock by \u003Cname\u003E."
                    },
                    "combined": {
                        "type": "string",
                        "example": "You have been invited to Danalock by \u003Cname\u003E. Please follow this link: \u003CURL\u003E"
                    },
                    "URL": {
                        "type": "string",
                        "example": "https://my.danalock.com/i/\u003Ctoken\u003E"
                    }
                }
            },
            "EkeyV2Lock": {
                "type": "object",
                "properties": {
                    "mac": {
                        "type": "string"
                    },
                    "alias": {
                        "type": "string"
                    },
                    "created": {
                        "type": "string"
                    },
                    "mcu": {
                        "type": "string"
                    },
                    "rf": {
                        "type": "string"
                    },
                    "designid": {
                        "type": "string"
                    },
                    "adminpin": {
                        "type": "string"
                    },
                    "address": {
                        "type": "string"
                    },
                    "battery": {
                        "type": "string"
                    },
                    "connections": {
                        "type": "integer"
                    },
                    "groups": {
                        "type": "integer"
                    }
                }
            },
            "EkeyV2LockList": {
                "type": "object",
                "properties": {
                    "locks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV2Lock"
                        }
                    }
                }
            },
            "EkeyV2PLCIR": {
                "type": "object",
                "properties": {
                    "alias": {
                        "type": "string"
                    },
                    "designid": {
                        "type": "string"
                    },
                    "mcu": {
                        "type": "string"
                    },
                    "domain": {
                        "type": "string"
                    },
                    "mac": {
                        "type": "string"
                    },
                    "external_type": {
                        "type": "string"
                    },
                    "advertisingkey": {
                        "type": "string",
                        "format": "byte"
                    },
                    "payload": {
                        "type": "string",
                        "format": "byte"
                    },
                    "payload_size": {
                        "type": "string"
                    },
                    "PLEK": {
                        "type": "string",
                        "format": "byte"
                    },
                    "can_share": {
                        "type": "string"
                    },
                    "can_delete": {
                        "type": "string"
                    },
                    "can_remote": {
                        "type": "string"
                    },
                    "vstart": {
                        "type": "string"
                    },
                    "start": {
                        "type": "string"
                    },
                    "end": {
                        "type": "string"
                    },
                    "permissions": {
                        "type": "string"
                    },
                    "link": {
                        "$ref": "#/components/schemas/EkeyV2PLCIRLink"
                    }
                }
            },
            "EkeyV2PLCIRLink": {
                "type": "object",
                "properties": {
                    "start": {
                        "type": "string"
                    },
                    "end": {
                        "type": "string"
                    },
                    "interval": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "dailystart": {
                        "type": "string"
                    },
                    "dailyend": {
                        "type": "string"
                    },
                    "weeks": {
                        "type": "string"
                    },
                    "weekdays": {
                        "type": "string"
                    }
                }
            },
            "EkeyV2User": {
                "type": "object",
                "required": [
                    "firstname",
                    "lastname",
                    "address",
                    "phone",
                    "mail",
                    "language",
                    "created",
                    "user",
                    "readonly"
                ],
                "properties": {
                    "firstname": {
                        "type": "string",
                        "description": "First name",
                        "example": "John"
                    },
                    "lastname": {
                        "type": "string",
                        "description": "Last name",
                        "example": "Doe"
                    },
                    "address": {
                        "type": "string",
                        "description": "Address",
                        "example": "100 1st Street"
                    },
                    "phone": {
                        "type": "string",
                        "description": "Phone number",
                        "example": "+XX XXX-XXX-XXXX"
                    },
                    "mail": {
                        "type": "string",
                        "description": "E-mail address",
                        "example": "john.doe@example.com"
                    },
                    "language": {
                        "type": "string",
                        "description": "Language",
                        "example": "en_US"
                    },
                    "created": {
                        "type": "string",
                        "description": "Creation date",
                        "example": "1470227011",
                        "readOnly": true
                    },
                    "user": {
                        "type": "string"
                    },
                    "readonly": {
                        "type": "string",
                        "description": "If 1, the user cannot be edited by you.",
                        "readOnly": true,
                        "enum": [
                            "1",
                            "0"
                        ]
                    }
                }
            },
            "EkeyV2UserDictionary": {
                "type": "object",
                "additionalProperties": {
                    "$ref": "#/components/schemas/EkeyV2User"
                }
            },
            "EkeyV3ActivitiesResponse": {
                "type": "object",
                "properties": {
                    "activities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3Log"
                        }
                    }
                }
            },
            "EkeyV3AdvertisementResponse": {
                "type": "object",
                "properties": {
                    "response": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        }
                    }
                }
            },
            "EkeyV3AdvertisementsRequest": {
                "type": "object",
                "properties": {
                    "response": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "example": {
                            "ok || cancel": "ok || cancel"
                        }
                    }
                }
            },
            "EkeyV3Device": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string",
                        "description": "Device serial number."
                    },
                    "name": {
                        "type": "string",
                        "description": "Device name."
                    },
                    "address": {
                        "type": "string"
                    },
                    "firmware": {
                        "type": "string"
                    },
                    "battery": {
                        "type": "string"
                    },
                    "connections": {
                        "type": "integer"
                    },
                    "groups": {
                        "type": "integer"
                    },
                    "key": {
                        "$ref": "#/components/schemas/EkeyV3Key"
                    }
                }
            },
            "EkeyV3Devices": {
                "type": "object",
                "properties": {
                    "devices": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3Device"
                        }
                    }
                }
            },
            "EkeyV3DevicesType": {
                "type": "object",
                "properties": {
                    "devices": {
                        "$ref": "#/components/schemas/EkeyV3Discovery"
                    }
                }
            },
            "EkeyV3Discoveries": {
                "type": "object",
                "properties": {
                    "devices": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3Discovery"
                        }
                    }
                }
            },
            "EkeyV3Discovery": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string",
                        "description": "Device serial number."
                    },
                    "product": {
                        "$ref": "#/components/schemas/EkeyV3Product"
                    },
                    "enrolled": {
                        "type": "boolean"
                    }
                }
            },
            "EkeyV3DiscoveryRequest": {
                "type": "object",
                "properties": {
                    "devices": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3DiscoveryRequestDevice"
                        }
                    }
                }
            },
            "EkeyV3DiscoveryRequestDevice": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string"
                    }
                }
            },
            "EkeyV3EnrollmentConfirmationToken": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string"
                    },
                    "enrollment_confirmation_token": {
                        "type": "string",
                        "format": "byte"
                    }
                }
            },
            "EkeyV3EnrollmentResultToken": {
                "type": "object",
                "properties": {
                    "enrollment_result_token": {
                        "type": "string",
                        "format": "byte"
                    }
                }
            },
            "EkeyV3EnrollmentToken": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string"
                    },
                    "enrollment_token": {
                        "type": "string",
                        "format": "byte"
                    },
                    "server_public_key": {
                        "type": "string",
                        "format": "byte"
                    }
                }
            },
            "EkeyV3GroupLink": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "mac": {
                        "type": "string"
                    },
                    "created": {
                        "type": "string"
                    },
                    "start": {
                        "type": "string"
                    },
                    "end": {
                        "type": "string"
                    },
                    "interval": {
                        "type": "string"
                    },
                    "dailystart": {
                        "type": "string"
                    },
                    "dailyend": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "weeks": {
                        "type": "string"
                    },
                    "weekdays": {
                        "type": "string"
                    }
                }
            },
            "EkeyV3Key": {
                "type": "object",
                "properties": {
                    "serial_number": {
                        "type": "string",
                        "description": "Device serial number."
                    },
                    "name": {
                        "type": "string",
                        "description": "Device name."
                    },
                    "timezone": {
                        "type": "string",
                        "nullable": true
                    },
                    "product": {
                        "$ref": "#/components/schemas/EkeyV3Product"
                    },
                    "login_token": {
                        "type": "string",
                        "format": "byte"
                    },
                    "advertising_key": {
                        "type": "string",
                        "format": "byte"
                    },
                    "permissions": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "id": {
                                    "type": "string"
                                },
                                "description": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "valid_from": {
                        "type": "integer"
                    },
                    "valid_to": {
                        "type": "integer"
                    },
                    "user": {
                        "$ref": "#/components/schemas/EkeyV3KeyUser"
                    }
                }
            },
            "EkeyV3KeyRingRequest": {
                "type": "object",
                "properties": {
                    "from": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "to": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "EkeyV3KeyUser": {
                "type": "object",
                "properties": {
                    "user_id": {
                        "type": "string"
                    },
                    "token_id": {
                        "type": "string"
                    },
                    "can_remote": {
                        "type": "integer"
                    },
                    "can_share": {
                        "type": "integer"
                    },
                    "can_delete": {
                        "type": "integer"
                    },
                    "external": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "source": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "EkeyV3Keys": {
                "type": "object",
                "properties": {
                    "refresh": {
                        "type": "integer"
                    },
                    "keys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3Key"
                        }
                    }
                }
            },
            "EkeyV3LockGroups": {
                "type": "object",
                "properties": {
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3GroupLink"
                        }
                    }
                }
            },
            "EkeyV3LockUsers": {
                "type": "object",
                "properties": {
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EkeyV3UserLink"
                        }
                    }
                }
            },
            "EkeyV3Log": {
                "type": "object",
                "properties": {
                    "timestamp": {
                        "type": "string"
                    },
                    "lock": {
                        "type": "string"
                    },
                    "lockalias": {
                        "type": "string"
                    },
                    "lockaddress": {
                        "type": "string"
                    },
                    "user": {
                        "type": "string"
                    },
                    "userfirstname": {
                        "type": "string"
                    },
                    "userlastname": {
                        "type": "string"
                    },
                    "phone": {
                        "type": "string"
                    },
                    "phonealias": {
                        "type": "string"
                    },
                    "entry": {
                        "type": "object",
                        "properties": {
                            "mac": {
                                "type": "string"
                            },
                            "eventid": {
                                "type": "string"
                            },
                            "humanreadableevent": {
                                "type": "string"
                            },
                            "batterylevel": {
                                "type": "string"
                            },
                            "phonetime": {
                                "type": "string"
                            },
                            "extra": {
                                "type": "string"
                            },
                            "user": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "EkeyV3Product": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Product name."
                    },
                    "type": {
                        "type": "string",
                        "description": "Product type."
                    },
                    "firmware": {
                        "type": "object",
                        "properties": {
                            "firmware_version": {
                                "type": "string"
                            },
                            "variation": {
                                "type": "string"
                            },
                            "pcb_version": {
                                "type": "string"
                            },
                            "updates": {
                                "type": "boolean"
                            }
                        }
                    }
                }
            },
            "EkeyV3SubmitActivity": {
                "type": "object",
                "properties": {
                    "log": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "object",
                            "example": "{\u0022mac\u0022: \u0022ef:12:f5:2f:b0:a0\u0022, \u0022eventid\u0022: \u00222\u0022, \u0022humanreadableevent\u0022: \u0022OperationUnlocked\u0022, \u0022batterylevel\u0022: \u002258\u0022, \u0022phonetime\u0022: \u00221576666202\u0022, \u0022extra\u0022: \u0022\u0022}"
                        }
                    }
                }
            },
            "EkeyV3UpdateDevice": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "address": {
                        "type": "string"
                    },
                    "firmware": {
                        "type": "string"
                    },
                    "rf": {
                        "type": "string"
                    },
                    "admin_pin": {
                        "type": "string"
                    }
                }
            },
            "EkeyV3User": {
                "type": "object",
                "properties": {
                    "firstname": {
                        "type": "string",
                        "description": "First name",
                        "example": "John"
                    },
                    "lastname": {
                        "type": "string",
                        "description": "Last name",
                        "example": "Doe"
                    },
                    "address": {
                        "type": "string",
                        "description": "Address",
                        "example": "100 1st Street"
                    },
                    "phone": {
                        "type": "string",
                        "description": "Phone number",
                        "example": "+XX XXX-XXX-XXXX"
                    },
                    "mail": {
                        "type": "string",
                        "description": "E-mail address",
                        "example": "john.doe@example.com"
                    },
                    "language": {
                        "type": "string",
                        "description": "Language",
                        "example": "en_US"
                    },
                    "eula": {
                        "type": "string",
                        "description": "Accepted EULA version",
                        "example": "1"
                    },
                    "created": {
                        "type": "string",
                        "description": "Creation date"
                    },
                    "user": {
                        "type": "string"
                    },
                    "connections": {
                        "type": "integer",
                        "description": "Number of locks that this user has access to.",
                        "readOnly": true
                    },
                    "groups": {
                        "type": "integer",
                        "description": "Number of groups that this user is part of.",
                        "readOnly": true
                    },
                    "readonly": {
                        "type": "string",
                        "description": "If true, the user cannot be edited by the requesting user.",
                        "readOnly": true
                    }
                }
            },
            "EkeyV3UserInvite": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "shadow"
                        ]
                    },
                    "timezone": {
                        "type": "string",
                        "example": "Europe/Copenhagen"
                    },
                    "start": {
                        "type": "integer",
                        "description": "Start timestamp of user access"
                    },
                    "end": {
                        "type": "integer",
                        "description": "End timestamp of user access"
                    },
                    "restrictions": {
                        "type": "object",
                        "properties": {
                            "weeks": {
                                "type": "integer",
                                "description": "Number of weeks that the user will be granted access"
                            },
                            "weekdays": {
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "enum": [
                                        "mon",
                                        "tue",
                                        "wed",
                                        "thu",
                                        "fri",
                                        "sat",
                                        "sun"
                                    ]
                                }
                            },
                            "dailystart": {
                                "type": "string",
                                "format": "hh:mm"
                            },
                            "dailyend": {
                                "type": "string",
                                "format": "hh:mm"
                            }
                        }
                    },
                    "interval": {
                        "type": "integer",
                        "description": "Access lifetime in seconds"
                    },
                    "watch": {
                        "type": "integer",
                        "description": "Receive notifications about user interactions."
                    },
                    "remote": {
                        "type": "integer",
                        "description": "Grant remote access to the lock."
                    }
                }
            },
            "EkeyV3UserLink": {
                "type": "object",
                "properties": {
                    "user": {
                        "type": "string"
                    },
                    "firstname": {
                        "type": "string"
                    },
                    "lastname": {
                        "type": "string"
                    },
                    "address": {
                        "type": "string"
                    },
                    "phone": {
                        "type": "string"
                    },
                    "mail": {
                        "type": "string"
                    },
                    "role": {
                        "type": "string"
                    },
                    "eula": {
                        "type": "string"
                    },
                    "created": {
                        "type": "string"
                    },
                    "start": {
                        "type": "string"
                    },
                    "end": {
                        "type": "string"
                    },
                    "interval": {
                        "type": "string"
                    },
                    "dailystart": {
                        "type": "string"
                    },
                    "dailyend": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "weeks": {
                        "type": "string"
                    },
                    "weekdays": {
                        "type": "string"
                    },
                    "watched": {
                        "type": "string"
                    },
                    "remote": {
                        "type": "string"
                    },
                    "external_id": {
                        "type": "string"
                    },
                    "external_type": {
                        "type": "string"
                    },
                    "readonly": {
                        "type": "string"
                    }
                }
            },
            "EkeyV3UserRegister": {
                "type": "object",
                "properties": {
                    "password": {
                        "type": "string",
                        "format": "password"
                    },
                    "firstname": {
                        "type": "string"
                    },
                    "lastname": {
                        "type": "string"
                    },
                    "address": {
                        "type": "string"
                    },
                    "phone": {
                        "type": "string"
                    }
                }
            },
            "Empty": {
                "type": "object"
            },
            "EntityCreated": {
                "type": "object",
                "required": [
                    "id"
                ],
                "properties": {
                    "id": {
                        "type": "string"
                    }
                }
            },
            "EntityNotFoundError": {
                "type": "object",
                "required": [
                    "error",
                    "message"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "entity_not_found"
                    },
                    "message": {
                        "type": "string",
                        "example": "The requested \u003CEntityType\u003E (\u003CEntityIdentifier\u003E) was not found."
                    }
                }
            },
            "Group": {
                "type": "object",
                "required": [
                    "name",
                    "type",
                    "created",
                    "members",
                    "subgroups"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Group name",
                        "example": "Regulars"
                    },
                    "type": {
                        "type": "string",
                        "description": "Type of group",
                        "enum": [
                            "users",
                            "phones",
                            "locks"
                        ]
                    },
                    "created": {
                        "type": "string",
                        "description": "Creation date"
                    },
                    "members": {
                        "type": "integer",
                        "description": "Number of items in the group (nested groups excluded.)"
                    },
                    "subgroups": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "GroupWithItems": {
                "type": "object",
                "required": [
                    "name",
                    "type",
                    "created",
                    "members"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Group name",
                        "example": "Regulars"
                    },
                    "type": {
                        "type": "string",
                        "description": "Type of group",
                        "enum": [
                            "users",
                            "locks"
                        ]
                    },
                    "created": {
                        "type": "string",
                        "description": "Creation date"
                    },
                    "members": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/components/schemas/EkeyV2User"
                        }
                    }
                }
            },
            "GroupsV1CreateGroup": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "example": "users"
                    },
                    "name": {
                        "type": "string",
                        "example": "My group"
                    }
                },
                "required": [
                    "type",
                    "name"
                ]
            },
            "GroupsV1Group": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "group-c42c6c262"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "users",
                            "locks"
                        ]
                    },
                    "name": {
                        "type": "string",
                        "example": "my user\u0027s group"
                    }
                }
            },
            "GroupsV1GroupTypeUsers": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "group-1234"
                    },
                    "type": {
                        "type": "string",
                        "example": "users",
                        "enum": [
                            "users",
                            "locks"
                        ]
                    },
                    "name": {
                        "type": "string",
                        "example": "my user\u0027s group"
                    },
                    "users": {
                        "type": "array",
                        "example": [
                            "user-1234"
                        ]
                    }
                }
            },
            "GroupsV1GroupWithItems": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "group-c42c6c262"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "users",
                            "locks"
                        ],
                        "example": "locks"
                    },
                    "name": {
                        "type": "string",
                        "example": "danalocks group"
                    },
                    "users": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locks": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "example": "lock-615d0c0efea8"
                        }
                    }
                }
            },
            "GroupsV1Link": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "group_user-7dc8b21b6268"
                    },
                    "group_id": {
                        "type": "string",
                        "example": "group-78d5c069e798"
                    },
                    "calendar_id": {
                        "type": "string",
                        "example": "calendar-3310a3560f18"
                    }
                }
            },
            "Invitation": {
                "type": "object",
                "required": [
                    "sender",
                    "created_at",
                    "expires_at"
                ],
                "properties": {
                    "sender": {
                        "$ref": "#/components/schemas/InvitationSender"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "When the invitation was created"
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "When the invitation will expire"
                    }
                }
            },
            "InvitationSender": {
                "type": "object",
                "properties": {
                    "display_name": {
                        "type": "string",
                        "description": "The name of the sender which should be displayed"
                    }
                }
            },
            "InvitationsV1BulkInviteItem": {
                "type": "object",
                "properties": {
                    "user": {
                        "type": "string",
                        "example": "user1@example.com"
                    },
                    "status": {
                        "type": "string",
                        "example": "Invited via email"
                    }
                }
            },
            "InvitationsV1BulkInviteUsers": {
                "type": "object",
                "required": [
                    "users"
                ],
                "properties": {
                    "users": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "example": "user1@example.com"
                        }
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InvitationsV1InviteUserLink"
                        }
                    },
                    "aliases": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "example": "test alias"
                        }
                    }
                }
            },
            "InvitationsV1CreateInviteToken": {
                "type": "object",
                "properties": {
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InvitationsV1InviteUserLink"
                        }
                    },
                    "alias": {
                        "type": "string",
                        "example": "test alias"
                    }
                }
            },
            "InvitationsV1Invitation": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "method": {
                        "type": "string",
                        "enum": [
                            "invitation_link"
                        ]
                    },
                    "post_action": {
                        "type": "string",
                        "enum": [
                            "add_link"
                        ]
                    },
                    "add_link_data": {
                        "$ref": "#/components/schemas/InvitationsV1InvitationAddLinkData"
                    }
                }
            },
            "InvitationsV1InvitationAddLinkData": {
                "type": "object",
                "properties": {
                    "lock_id": {
                        "type": "string"
                    },
                    "rules": {
                        "$ref": "#/components/schemas/LinksV1Calendar"
                    }
                }
            },
            "InvitationsV1InvitationToken": {
                "type": "object",
                "required": [
                    "invite_url"
                ],
                "properties": {
                    "invite_url": {
                        "type": "string"
                    }
                }
            },
            "InvitationsV1InviteMail": {
                "type": "object",
                "required": [
                    "email_address"
                ],
                "properties": {
                    "email_address": {
                        "type": "string"
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InvitationsV1InviteUserLink"
                        }
                    },
                    "alias": {
                        "type": "string",
                        "example": "test alias"
                    }
                }
            },
            "InvitationsV1InviteUser": {
                "type": "object",
                "required": [
                    "username"
                ],
                "properties": {
                    "username": {
                        "type": "string",
                        "example": "user@email.com"
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InvitationsV1InviteUserLink"
                        }
                    },
                    "alias": {
                        "type": "string",
                        "example": "test alias"
                    }
                }
            },
            "InvitationsV1InviteUserLink": {
                "type": "object",
                "required": [
                    "lock_id",
                    "calendar_id"
                ],
                "properties": {
                    "lock_id": {
                        "type": "string"
                    },
                    "calendar_id": {
                        "type": "string"
                    }
                }
            },
            "InvitationsV1ReceivedInvitation": {
                "type": "object",
                "properties": {
                    "sent_by": {
                        "type": "string",
                        "example": "ownerAdmin"
                    },
                    "domain": {
                        "type": "string",
                        "example": "ownerAdmin\u0027s domain"
                    },
                    "locks": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "example": "lockName"
                        }
                    },
                    "token": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "InvitationsV1SentInvitation": {
                "type": "object",
                "properties": {
                    "sent_by": {
                        "type": "string"
                    },
                    "sent_to": {
                        "type": "string"
                    },
                    "alias": {
                        "type": "string"
                    },
                    "token": {
                        "type": "string"
                    },
                    "link_data": {
                        "type": "object",
                        "properties": {
                            "locks": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/Lock"
                                }
                            },
                            "calendar": {
                                "$ref": "#/components/schemas/LinksV1Calendar"
                            }
                        }
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "expires_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "method": {
                        "type": "string",
                        "enum": [
                            "invitation_link"
                        ]
                    }
                }
            },
            "LinksV1Calendar": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "calendar-0eef5f2482cb"
                    },
                    "start_time": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "refresh_interval": {
                        "type": "integer",
                        "example": 172800
                    },
                    "rule_sets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LinksV1CalendarRuleSet"
                        }
                    }
                }
            },
            "LinksV1CalendarCreate": {
                "type": "object",
                "properties": {
                    "start_time": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "refresh_interval": {
                        "type": "integer",
                        "example": 172800
                    },
                    "rule_sets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LinksV1CalendarRuleSet"
                        }
                    }
                }
            },
            "LinksV1CalendarRuleSet": {
                "type": "object",
                "properties": {
                    "end_time": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "number_of_weeks": {
                        "type": "integer",
                        "nullable": true
                    },
                    "week_days": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "nullable": true
                    },
                    "daily_start": {
                        "type": "integer",
                        "nullable": true
                    },
                    "daily_end": {
                        "type": "integer",
                        "nullable": true
                    }
                }
            },
            "LinksV1Create": {
                "type": "object",
                "properties": {
                    "lock_id": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": "string"
                    },
                    "group_id": {
                        "type": "string"
                    },
                    "other_group_id": {
                        "type": "string"
                    },
                    "calendar_id": {
                        "type": "string"
                    },
                    "link_profile": {
                        "type": "string"
                    }
                }
            },
            "LinksV1CreateResponse": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "calendar-0eef5f2482cb"
                    }
                }
            },
            "LinksV1GroupGroup": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "group_id": {
                        "type": "string"
                    },
                    "other_group_id": {
                        "type": "string"
                    },
                    "calendar_id": {
                        "type": "string"
                    },
                    "link_profile": {
                        "type": "string"
                    }
                }
            },
            "LinksV1GroupLock": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "lock_id": {
                        "type": "string"
                    },
                    "group_id": {
                        "type": "string"
                    },
                    "calendar_id": {
                        "type": "string"
                    },
                    "link_profile": {
                        "type": "string"
                    }
                }
            },
            "LinksV1GroupUser": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": "string"
                    },
                    "group_id": {
                        "type": "string"
                    },
                    "calendar_id": {
                        "type": "string"
                    },
                    "link_profile": {
                        "type": "string"
                    }
                }
            },
            "LinksV1LockUser": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "lock_id": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": "string"
                    },
                    "calendar_id": {
                        "type": "string"
                    },
                    "link_profile": {
                        "type": "string"
                    }
                }
            },
            "LinksV1Update": {
                "type": "object",
                "properties": {
                    "calendar_id": {
                        "type": "string"
                    },
                    "link_profile": {
                        "type": "string"
                    }
                }
            },
            "Lock": {
                "type": "object",
                "required": [
                    "name",
                    "type"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "lock-615d0c0efea8"
                    },
                    "name": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "afi",
                            "mwm"
                        ]
                    },
                    "address": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string",
                        "example": "Europe/Copenhagen"
                    },
                    "afi": {
                        "$ref": "#/components/schemas/Device"
                    },
                    "mwm": {
                        "$ref": "#/components/schemas/LockMwm"
                    }
                }
            },
            "LockDetails": {
                "type": "object",
                "required": [
                    "name",
                    "type"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "lock-615d0c0efea8"
                    },
                    "name": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "afi",
                            "mwm"
                        ]
                    },
                    "address": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string",
                        "example": "Europe/Copenhagen"
                    },
                    "afi": {
                        "type": "object",
                        "properties": {
                            "serial_number": {
                                "type": "string"
                            },
                            "device_type": {
                                "type": "string",
                                "example": "danalockv3"
                            }
                        }
                    }
                }
            },
            "LockMwm": {
                "type": "object",
                "properties": {
                    "mac_address": {
                        "type": "string"
                    },
                    "mcu_firmware": {
                        "type": "string"
                    },
                    "rf_firmware": {
                        "type": "string"
                    },
                    "design_id": {
                        "type": "integer"
                    }
                }
            },
            "LocksV1Link": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "lock_user-352342782c1d"
                    },
                    "lock_id": {
                        "type": "string",
                        "example": "lock-7b38253aec3b"
                    },
                    "calendar_id": {
                        "type": "string",
                        "example": "calendar-aa9343c07039"
                    }
                }
            },
            "LocksV1OperationStarted": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    }
                }
            },
            "LocksV1OperationStatus": {
                "type": "object",
                "properties": {
                    "is_completed": {
                        "type": "boolean"
                    },
                    "is_successful": {
                        "type": "boolean"
                    }
                }
            },
            "LogV1": {
                "type": "object",
                "properties": {
                    "timestamp": {
                        "type": "string",
                        "example": "1987-12-10T13:35:45+00:00"
                    },
                    "lock": {
                        "type": "string",
                        "example": "lock-cf492ac58eb1"
                    },
                    "lockname": {
                        "type": "string",
                        "example": "example lock"
                    },
                    "user": {
                        "type": "string",
                        "example": "user-55e4779e6726"
                    },
                    "username": {
                        "type": "string",
                        "example": "example@testuser.com"
                    },
                    "operation": {
                        "type": "string",
                        "example": "unlocked"
                    }
                }
            },
            "LogV1Bulk": {
                "type": "string",
                "format": "binary"
            },
            "LoginToken": {
                "type": "object",
                "properties": {
                    "device": {
                        "$ref": "#/components/schemas/Device"
                    },
                    "blob": {
                        "type": "string",
                        "format": "byte",
                        "description": "The low-level login token that must be transmitted to the Afi device.",
                        "example": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="
                    },
                    "broadcast_key": {
                        "type": "string",
                        "format": "byte",
                        "description": "Key used to decrypt broadcasted information (Ble Advertising Data)",
                        "example": "AAECAwQFBgcICQoLDA0ODw=="
                    },
                    "metadata": {
                        "type": "object",
                        "properties": {
                            "valid_from": {
                                "type": "string",
                                "format": "datetime",
                                "example": "2018-01-01T10:20:30+00.00"
                            },
                            "valid_to": {
                                "type": "string",
                                "format": "datetime",
                                "example": "2018-01-01T10:20:30+00.00"
                            },
                            "permissions": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "id": {
                                            "type": "string",
                                            "example": "3"
                                        },
                                        "name": {
                                            "type": "string",
                                            "example": "afi_lock_operate"
                                        },
                                        "description": {
                                            "type": "string",
                                            "example": "Operate Lock Permission"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "LoginTokenOptions": {
                "type": "object",
                "required": [
                    "permissions"
                ],
                "properties": {
                    "valid_from": {
                        "type": "string",
                        "format": "datetime",
                        "example": "2018-01-01T10:20:30+00:00",
                        "description": "Mutually exclusive with \u0027relative_start_time\u0027"
                    },
                    "valid_to": {
                        "type": "string",
                        "format": "datetime",
                        "example": "2018-01-01T10:20:30+00:00",
                        "description": "Mutually exclusive with \u0027duration\u0027"
                    },
                    "relative_start_time": {
                        "type": "integer",
                        "example": 300,
                        "description": "Mutually exclusive with \u0027valid_from\u0027"
                    },
                    "duration": {
                        "type": "integer",
                        "example": 3600,
                        "description": "Mutually exclusive with \u0027valid_to\u0027"
                    },
                    "permissions": {
                        "type": "string",
                        "example": "afi_lock_operate afi_outputs_operate",
                        "description": "See /.meta/v1/afi/permissions for available permissions."
                    }
                }
            },
            "MissingScopeError": {
                "type": "object",
                "required": [
                    "error",
                    "message"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "authentication_required"
                    },
                    "message": {
                        "type": "string",
                        "example": ""
                    }
                }
            },
            "OAuth2AuthorizationLink": {
                "type": "object",
                "properties": {
                    "authorization_link": {
                        "type": "string"
                    }
                }
            },
            "OAuth2LinkedProvider": {
                "type": "object",
                "properties": {
                    "provider": {
                        "type": "string",
                        "example": "airbnb"
                    }
                }
            },
            "OAuthAccessToken": {
                "type": "object",
                "properties": {
                    "access_token": {
                        "type": "string",
                        "description": "JWT access token."
                    },
                    "refresh_token": {
                        "type": "string",
                        "description": "JWT refresh token."
                    },
                    "token_type": {
                        "type": "string",
                        "description": "Access token type.",
                        "example": "Bearer"
                    },
                    "expires_in": {
                        "type": "integer",
                        "description": "Lifetime in seconds.",
                        "example": "2592000"
                    }
                }
            },
            "OAuthError": {
                "type": "object",
                "required": [
                    "error",
                    "message"
                ],
                "properties": {
                    "error": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    },
                    "hint": {
                        "type": "string"
                    }
                }
            },
            "OAuthV2Tokens": {
                "type": "object",
                "properties": {
                    "tokens": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "client_name": {
                                    "type": "string",
                                    "description": "Name of the client"
                                },
                                "access_token": {
                                    "type": "string",
                                    "description": "Access token"
                                },
                                "created_at": {
                                    "type": "string",
                                    "description": "Created at",
                                    "format": "date-time"
                                },
                                "expires_at": {
                                    "type": "string",
                                    "description": "Expires at",
                                    "format": "date-time"
                                }
                            }
                        }
                    }
                }
            },
            "OAuthV2UserInfo": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "String that describes the current user."
                            },
                            "id": {
                                "type": "integer",
                                "description": "User Id."
                            },
                            "role": {
                                "type": "string",
                                "description": "The user\u0027 role in the domain."
                            },
                            "url": {
                                "type": "string",
                                "description": "URL to a management portal for the user."
                            }
                        }
                    }
                }
            },
            "PairedDevice": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "integer"
                    },
                    "device": {
                        "$ref": "#/components/schemas/Device"
                    }
                }
            },
            "PermissionDeniedError": {
                "type": "object",
                "required": [
                    "error",
                    "message"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "permission_denied"
                    },
                    "message": {
                        "type": "string",
                        "example": "Missing scope \u003Cscope\u003E."
                    }
                }
            },
            "Scope": {
                "type": "object",
                "properties": {
                    "scope": {
                        "type": "string",
                        "example": "basic"
                    },
                    "name": {
                        "type": "string",
                        "example": "Basic Access"
                    },
                    "description": {
                        "type": "string",
                        "example": "Access basic account information."
                    }
                }
            },
            "Timezone": {
                "type": "object",
                "required": [
                    "name",
                    "display_name",
                    "location",
                    "current_offset"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "example": "Europe/Copenhagen"
                    },
                    "display_name": {
                        "type": "string",
                        "example": "Copenhagen (Europe) [+02:00]"
                    },
                    "location": {
                        "type": "object",
                        "required": [
                            "country_code",
                            "latitude",
                            "longitude",
                            "comments"
                        ],
                        "properties": {
                            "country_code": {
                                "type": "string",
                                "example": "DK"
                            },
                            "latitude": {
                                "type": "number",
                                "format": "float",
                                "example": 55.66666000000001
                            },
                            "longitude": {
                                "type": "number",
                                "format": "float",
                                "example": 12.58332999999999
                            },
                            "comments": {
                                "type": "string",
                                "example": ""
                            }
                        }
                    },
                    "current_offset": {
                        "type": "integer",
                        "example": 7200
                    }
                }
            },
            "TimezoneInformation": {
                "type": "object",
                "required": [
                    "transitions",
                    "offset"
                ],
                "properties": {
                    "offset": {
                        "type": "integer",
                        "example": "3600"
                    },
                    "transitions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/TimezoneInformationTransition"
                        }
                    }
                }
            },
            "TimezoneInformationTransition": {
                "type": "object",
                "required": [
                    "unix_timestamp",
                    "offset"
                ],
                "properties": {
                    "unix_timestamp": {
                        "type": "integer",
                        "example": "1711846800"
                    },
                    "offset": {
                        "type": "integer",
                        "example": "7200"
                    }
                }
            },
            "TwoFactorAuthV1QrResponse": {
                "type": "object",
                "properties": {
                    "activity": {
                        "type": "string",
                        "example": "Generate two factor authentication key"
                    },
                    "status": {
                        "type": "string",
                        "example": "Success"
                    },
                    "responseQR": {
                        "type": "string"
                    }
                }
            },
            "TwoFactorAuthV1Request": {
                "type": "object",
                "properties": {
                    "totp": {
                        "type": "string",
                        "example": "123123"
                    }
                }
            },
            "TwoFactorAuthV1Response": {
                "type": "object",
                "properties": {
                    "activity": {
                        "type": "string",
                        "example": "Generate two factor authentication key"
                    },
                    "status": {
                        "type": "string",
                        "example": "Success"
                    }
                }
            },
            "UserV1ClientDevice": {
                "type": "object",
                "properties": {
                    "device_identification": {
                        "type": "string",
                        "readOnly": true,
                        "format": "uuid"
                    },
                    "platform_name": {
                        "type": "string",
                        "enum": [
                            "android",
                            "iphone"
                        ]
                    },
                    "platform_version": {
                        "type": "string"
                    },
                    "platform_model": {
                        "type": "string"
                    },
                    "application_identifier": {
                        "type": "string"
                    },
                    "application_version": {
                        "type": "string"
                    },
                    "application_release_state": {
                        "type": "string",
                        "enum": [
                            "production",
                            "sandbox"
                        ]
                    },
                    "application_settings": {
                        "type": "string"
                    },
                    "receive_push_notifications": {
                        "type": "boolean"
                    },
                    "push_notification_registration": {
                        "type": "string"
                    },
                    "expires_at": {
                        "type": "string",
                        "readOnly": true
                    }
                }
            },
            "UserV1CurrentUser": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "user-7646c328e9d8"
                    },
                    "username": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "display_name": {
                        "type": "string",
                        "example": "John Doe"
                    },
                    "email_address": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "domain": {
                        "type": "string",
                        "example": "user@example.com\u0027s domain"
                    },
                    "alias": {
                        "type": "string",
                        "example": "John"
                    },
                    "2fa": {
                        "type": "boolean",
                        "example": false
                    }
                }
            },
            "UserV1PasswordRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string"
                    }
                }
            },
            "UserV1PasswordReset": {
                "type": "object",
                "properties": {
                    "token": {
                        "type": "string"
                    },
                    "password": {
                        "type": "string"
                    }
                }
            },
            "UserV1Update": {
                "type": "object",
                "properties": {
                    "firstname": {
                        "type": "string",
                        "example": "John"
                    },
                    "lastname": {
                        "type": "string",
                        "example": "Woo"
                    },
                    "address": {
                        "type": "string",
                        "example": ""
                    },
                    "phone": {
                        "type": "string",
                        "example": ""
                    },
                    "display_name": {
                        "type": "string",
                        "example": "John Woo"
                    },
                    "password": {
                        "type": "string",
                        "example": ""
                    }
                }
            },
            "UserV1UpdateResponse": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "user-1234"
                    },
                    "username": {
                        "type": "string",
                        "example": "JohnWoo"
                    },
                    "display_name": {
                        "type": "string",
                        "example": "John Woo"
                    },
                    "email_address": {
                        "type": "string",
                        "example": "john@gmail.com"
                    },
                    "domain": {
                        "type": "string",
                        "example": "JohnWoo\u0027s domain"
                    },
                    "alias": {
                        "type": "string",
                        "example": "JohnWoo\u0027s alias"
                    }
                }
            },
            "UserV1UserIdentity": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "user-1234"
                    },
                    "domain": {
                        "type": "string",
                        "example": "user\u0027s domain"
                    },
                    "primary": {
                        "type": "boolean"
                    },
                    "role": {
                        "type": "string",
                        "example": "administrator"
                    },
                    "domain_rights": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "example": "*"
                        }
                    }
                }
            },
            "UsersV1User": {
                "type": "object",
                "required": [
                    "id",
                    "username",
                    "display_name",
                    "role",
                    "email_address",
                    "alias",
                    "is_shadow_user"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "user-7646c328e9d8"
                    },
                    "username": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "display_name": {
                        "type": "string",
                        "example": "John Doe"
                    },
                    "role": {
                        "type": "string",
                        "example": "User"
                    },
                    "email_address": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "alias": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "is_shadow_user": {
                        "type": "boolean"
                    },
                    "links": {
                        "$ref": "#/components/schemas/UsersV1UserLinksDictionary"
                    }
                }
            },
            "UsersV1UserLinksDictionary": {
                "type": "object",
                "properties": {
                    "locks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LocksV1Link"
                        }
                    },
                    "groups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/GroupsV1Link"
                        }
                    }
                }
            },
            "UsersV1UserUpdate": {
                "type": "object",
                "properties": {
                    "role": {
                        "type": "string",
                        "example": "User"
                    },
                    "alias": {
                        "type": "string",
                        "example": "aliasname"
                    },
                    "password": {
                        "type": "string",
                        "example": "password"
                    }
                }
            },
            "UsersV1Users": {
                "type": "object",
                "required": [
                    "id",
                    "username",
                    "display_name",
                    "role",
                    "email_address",
                    "alias",
                    "is_shadow_user"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "example": "user-7646c328e9d8"
                    },
                    "username": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "display_name": {
                        "type": "string",
                        "example": "John Doe"
                    },
                    "role": {
                        "type": "string",
                        "example": "User"
                    },
                    "email_address": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "alias": {
                        "type": "string",
                        "example": "user@example.com"
                    },
                    "is_shadow_user": {
                        "type": "boolean"
                    }
                }
            },
            "ValidationRuleError": {
                "type": "object",
                "required": [
                    "error_code",
                    "error_message"
                ],
                "properties": {
                    "error_code": {
                        "type": "string"
                    },
                    "error_message": {
                        "type": "string"
                    }
                }
            },
            "ValidationSummary": {
                "type": "object",
                "required": [
                    "error",
                    "message",
                    "errors"
                ],
                "properties": {
                    "error": {
                        "type": "string",
                        "example": "validation_failed"
                    },
                    "message": {
                        "type": "string",
                        "example": "Some of the provided data did not pass validation. See the \u0022errors\u0022 array."
                    },
                    "errors": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "array",
                            "items": {
                                "$ref": "#/components/schemas/ValidationRuleError"
                            }
                        }
                    }
                }
            }
        }
    },
    "paths": {
        "/.meta/v1/timezones": {
            "get": {
                "summary": "Get supported timezones",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Timezone"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "MetaV1"
                ],
                "operationId": "GetSupportedTimezones"
            }
        },
        "/.meta/v1/scopes": {
            "get": {
                "summary": "Get supported scopes",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Scope"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "MetaV1"
                ],
                "operationId": "GetScopes"
            }
        },
        "/.meta/v1/afi/permissions": {
            "get": {
                "summary": "Get supported Afi permissions",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/AfiPermission"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "MetaV1"
                ],
                "operationId": "GetAfiPermissions"
            }
        },
        "/.meta/v1/domain/rights": {
            "get": {
                "summary": "Get supported domain rights",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "rights.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/DomainRight"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "MetaV1"
                ],
                "operationId": "GetDomainRights"
            }
        },
        "/domain/v1/roles": {
            "get": {
                "summary": "List user roles",
                "description": "User role ids: administrator, user, installer.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/DomainV1Role"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DomainV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetRoles"
            }
        },
        "/domain/v1/link_profiles": {
            "get": {
                "summary": "List link profiles",
                "description": "Link profile ids: administrator, user, installer, user_allow_remote.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/DomainV1LinkProfile"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DomainV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLinkProfiles"
            }
        },
        "/devices/v1": {
            "get": {
                "summary": "Get a list of all afi devices owned by the current user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of devices",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Device"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetDevices"
            }
        },
        "/devices/v1/linked": {
            "get": {
                "summary": "Get a list all afi lock devices linked to the current user",
                "description": "Returns only danalockv3 devices that user has access to.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of devices",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Device"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLinkedDevices"
            }
        },
        "/devices/v1/broadcast_keys": {
            "get": {
                "summary": "Get afi broadcast keys for all devices",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "keys with brief device info",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/BroadcastKeyTuple"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetBroadcastKeys"
            }
        },
        "/devices/v1/login_tokens": {
            "post": {
                "summary": "Create an afi login tokens for all devices owned by the current user",
                "description": "You can provide either valid_from and valid_to information to the request body or relative_start_time. See /.meta/v1/afi/permissions for available permissions.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Login tokens with metadata",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LoginToken"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateLoginTokens",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LoginTokenOptions"
                            }
                        }
                    }
                }
            }
        },
        "/devices/v1/{serial_number}": {
            "get": {
                "summary": "Get a single afi device owned by the current user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Device",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Device"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetDeviceBySerialNumber"
            },
            "patch": {
                "summary": "Update an afi device owned by the current user",
                "description": "Update device name ane timezone",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The device was successfully updated."
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateDeviceBySerialNumber",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "If included, the name of the device will be updated."
                                    },
                                    "timezone": {
                                        "type": "string",
                                        "description": "If included, the timezone of the device will be updated."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/devices/v1/{serial_number}/timezone_information": {
            "get": {
                "summary": "Get a list of timezone transitions",
                "description": "Unix timestamp is a time in UTC and offset is in seconds.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Timezone information",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TimezoneInformation"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetDeviceTimezoneInformationBySerialNumber"
            }
        },
        "/devices/v1/{serial_number}/login_token": {
            "get": {
                "description": " Get an Afi login token for a device.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Login token with metadata",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LoginToken"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLoginTokenBySerialNumber",
                "deprecated": true
            },
            "post": {
                "summary": "Create an afi login token for a device",
                "description": "You can provide either valid_from and valid_to information to the request body or relative_start_time. See /.meta/v1/afi/permissions for available permissions.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Login token with metadata",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LoginToken"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateLoginTokenBySerialNumber",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LoginTokenOptions"
                            }
                        }
                    }
                }
            }
        },
        "/devices/v1/{serial_number}/paired_devices": {
            "get": {
                "summary": "List of afi devices that have a pairing with the requested device",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of the requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/PairedDevice"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetPairedDevicesBySerialNumber"
            },
            "post": {
                "summary": "Pair lock device with a bridge",
                "description": "This is a server side pairing, you can only pair a danalock device with a danabridge device.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of the requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The pairing was successfully added."
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "AddPairedDeviceBySerialNumber",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "paired_device_serial_number": {
                                        "type": "string",
                                        "description": "Dmi serial number of the device to be paired."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/devices/v1/{serial_number}/paired_devices/{paired_device_serial_number}": {
            "delete": {
                "summary": "Remove a pairing between two afi devices.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Dmi serial number of the requested device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "paired_device_serial_number",
                        "in": "path",
                        "description": "Dmi serial number of the paired device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The pairing was successfully removed."
                    }
                },
                "tags": [
                    "DevicesV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "RemovePairingBetweenSerialNumbers"
            }
        },
        "/locks/v1": {
            "get": {
                "summary": "List of locks in current user\u0027s domain",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LockDetails"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LocksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLocks"
            }
        },
        "/locks/v1/details/{serial_number}": {
            "get": {
                "summary": "Returns specified lock device",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number or MAC address of lock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LockDetails"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LocksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLockDetails"
            }
        },
        "/oauth2/authorize": {
            "get": {
                "summary": "Request to redirect to code grant login page",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "client_id",
                        "in": "query",
                        "description": "Your OAuth2 client identifier issued by Danalock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "response_type",
                        "in": "query",
                        "description": "The response type you are requesting.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "redirect_uri",
                        "in": "query",
                        "description": "Redirect URL, where your user is sent after granting access to you. Note that",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "302": {
                        "description": "Redirected to login page.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuth2"
                ],
                "operationId": "RedirectToAuthorize"
            }
        },
        "/oauth2/token": {
            "post": {
                "summary": "Generate an access token given an authorization code, resource owner password credentials or etc...",
                "description": "Creates an access token for a client application",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Access token",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OAuthAccessToken"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "The user credentials were incorrect.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OAuthError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuth2"
                ],
                "operationId": "CreateAccessToken",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "grant_type": {
                                        "type": "string",
                                        "description": "The grant you are requesting."
                                    },
                                    "code": {
                                        "type": "string",
                                        "description": "Required for the authorization_code grant."
                                    },
                                    "client_id": {
                                        "type": "string",
                                        "description": "Your OAuth2 client identifier issued by Danalock."
                                    },
                                    "client_secret": {
                                        "type": "string",
                                        "description": "Your OAuth2 client secret issued by Danalock."
                                    },
                                    "redirect_uri": {
                                        "type": "string",
                                        "description": "Redirect URL, where your user is sent after granting access to you. If"
                                    },
                                    "username": {
                                        "type": "string",
                                        "description": "Username for the password grant."
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "Password for the password grant."
                                    },
                                    "totp": {
                                        "type": "string",
                                        "description": "Time-based one-time password if two factor authentication is required for login."
                                    },
                                    "refresh_token": {
                                        "type": "string",
                                        "description": "Refresh token for the refresh_token grant."
                                    },
                                    "scope": {
                                        "type": "string",
                                        "description": "Requested scopes."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/oauth2/cookie": {
            "post": {
                "summary": "Generate an access token and return it as a cookie, given an authorization code, resource owner",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The used token was successfully revoked.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "The user credentials were incorrect.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OAuthError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuth2"
                ],
                "operationId": "CreateAccessTokenCookie",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "grant_type": {
                                        "type": "string",
                                        "description": "The grant you are requesting."
                                    },
                                    "code": {
                                        "type": "string",
                                        "description": "Required for the authorization_code grant."
                                    },
                                    "client_id": {
                                        "type": "string",
                                        "description": "Your OAuth2 client identifier issued by Danalock."
                                    },
                                    "client_secret": {
                                        "type": "string",
                                        "description": "Your OAuth2 client secret issued by Danalock."
                                    },
                                    "redirect_uri": {
                                        "type": "string",
                                        "description": "Redirect URL, where your user is sent after granting access to you. If"
                                    },
                                    "username": {
                                        "type": "string",
                                        "description": "Username for the password grant."
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "Password for the password grant."
                                    },
                                    "totp": {
                                        "type": "string",
                                        "description": "Time-based one-time password if two factor authentication is required for login."
                                    },
                                    "refresh_token": {
                                        "type": "string",
                                        "description": "Refresh token for the refresh_token grant."
                                    },
                                    "scope": {
                                        "type": "string",
                                        "description": "Requested scopes."
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Revoke current cookie access token and expire cookie in browser",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The used token was successfully revoked.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuth2"
                ],
                "operationId": "DeleteCurrentAccessTokenCookie"
            }
        },
        "/oauth2/providers": {
            "get": {
                "description": " Get a list of providers that the user has linked.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/OAuth2LinkedProvider"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No authentication information was provided or it was invalid.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthenticationRequiredError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuth2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetProviders",
                "deprecated": true
            }
        },
        "/oauth2/providers/{provider}/link": {
            "get": {
                "description": " Link a third party provider to the user\u0027s account.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "provider",
                        "in": "path",
                        "description": "Name of the provider to get an authorization link for.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OAuth2AuthorizationLink"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No authentication information was provided or it was invalid.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthenticationRequiredError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuth2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetAuthorizationLinkForProvider",
                "deprecated": true
            }
        },
        "/users/v1": {
            "get": {
                "summary": "Get users",
                "description": "Returns list of users that belongs to the same domain.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "any",
                        "in": "query",
                        "description": "Filter by username OR display_name OR email_address OR alias.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "query",
                        "description": "Filter by username.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "display_name",
                        "in": "query",
                        "description": "Filter by display_name.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "email_address",
                        "in": "query",
                        "description": "Filter by email_address.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "alias",
                        "in": "query",
                        "description": "Filter by alias.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "users",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UsersV1Users"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UsersV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetUsers"
            }
        },
        "/users/v1/{email_address}": {
            "put": {
                "summary": "Create user in domain",
                "description": "Creates user in a domain and sends password via e-mail. The user role can be set to User, Administrator or Installer.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "email_address",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EntityCreated"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UsersV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateUser",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UsersV1UserUpdate"
                            }
                        }
                    }
                }
            }
        },
        "/users/v1/{user_id}": {
            "get": {
                "summary": "Get user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "user",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UsersV1User"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UsersV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetUserById"
            },
            "patch": {
                "summary": "Update user",
                "description": "See available roles in ./domain/v1/roles endpoint.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "User updated"
                    }
                },
                "tags": [
                    "UsersV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UsersV1UpdateUser",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UsersV1UserUpdate"
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Delete user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The user was deleted"
                    }
                },
                "tags": [
                    "UsersV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteUser"
            }
        },
        "/users/v1/{user_id}/effective_links": {
            "get": {
                "summary": "Get a user\u0027s list of linked lock ids and calendar ids",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "links",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LocksV1Link"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UsersV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetUserEffectiveLinks"
            }
        },
        "/invitations/v1/received": {
            "get": {
                "summary": "Get list of invitations",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Invitations",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/InvitationsV1ReceivedInvitation"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetReceivedInvitations"
            }
        },
        "/invitations/v1/received/{token}/accept": {
            "post": {
                "summary": "Accept invitation request",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "token",
                        "in": "path",
                        "description": "Invitation token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The invitation was successfully accepted."
                    },
                    "404": {
                        "description": "The requested entity was not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EntityNotFoundError"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No authentication information was provided or it was invalid.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthenticationRequiredError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "AcceptReceivedInvitation",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            }
        },
        "/invitations/v1/received/{token}/decline": {
            "post": {
                "summary": "Decline invitation request",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "token",
                        "in": "path",
                        "description": "Invitation token",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The invitation was successfully declined."
                    },
                    "404": {
                        "description": "The requested entity was not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EntityNotFoundError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeclineReceivedInvitation",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            }
        },
        "/invitations/v1/sent": {
            "get": {
                "summary": "Get a list of sent invitations",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Invitations",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/InvitationsV1SentInvitation"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetSentInvitations"
            }
        },
        "/invitations/v1/sent/{token}": {
            "delete": {
                "summary": "Delete created invitation",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "token",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Deleted "
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteSentInvitation"
            }
        },
        "/invitations/v1/invite_user": {
            "post": {
                "summary": "Create invitation",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Invited "
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateInvitationForUser",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvitationsV1InviteUser"
                            }
                        }
                    }
                }
            }
        },
        "/invitations/v1/bulk_invite_users": {
            "post": {
                "summary": "Create invitation for multiple users",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/InvitationsV1BulkInviteItem"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "BulkCreateInvitationsForUsers",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvitationsV1BulkInviteUsers"
                            }
                        }
                    }
                }
            }
        },
        "/invitations/v1/invite_by_token": {
            "post": {
                "summary": "Create invitation by link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvitationsV1InvitationToken"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateInvitationToken",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvitationsV1CreateInviteToken"
                            }
                        }
                    }
                }
            }
        },
        "/invitations/v1/invite_by_mail": {
            "post": {
                "summary": "Create invitation by email",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Mail sent"
                    }
                },
                "tags": [
                    "InvitationsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "SendInvitationMail",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvitationsV1InviteMail"
                            }
                        }
                    }
                }
            }
        },
        "/groups/v1": {
            "get": {
                "summary": "Get list of groups",
                "description": "The group type can be users or locks. When the type is user, list of users will be provided in the request body. In case of the type lock, list of the lock ids will be provided in the body.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/GroupsV1GroupTypeUsers"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetGroups"
            },
            "post": {
                "summary": "Create group",
                "description": "Group type can be users or locks.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/GroupsV1Group"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateGroup",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/GroupsV1CreateGroup"
                            }
                        }
                    }
                }
            }
        },
        "/groups/v1/{group_id}": {
            "get": {
                "summary": "Get group data by group id",
                "description": "The group type can be users or locks. When the type is user, list of users will be provided in the request body. In case of the type lock, list of the lock ids will be provided in the body.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/GroupsV1GroupTypeUsers"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetGroup"
            },
            "patch": {
                "summary": "Update group name",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The group was updated"
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateGroup",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "If included, the name of the group will be updated."
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Delete group by id",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The group was deleted"
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteGroup"
            }
        },
        "/groups/v1/{group_id}/users/{user_id}": {
            "post": {
                "summary": "Add user to group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "User was added"
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "AddUserToGroup",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Remove user from group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "User was removed"
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "RemoveUserFromGroup"
            }
        },
        "/groups/v1/{group_id}/locks/{lock_id}": {
            "post": {
                "summary": "Add lock to group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Lock was added"
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "AddLockToGroup",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Remove lock from group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Lock was removed"
                    }
                },
                "tags": [
                    "GroupsV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "RemoveLockFromGroup"
            }
        },
        "/links/v1/calendars": {
            "get": {
                "summary": "List calendars in domain",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LinksV1Calendar"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetCalendars"
            },
            "post": {
                "summary": "Create calendar",
                "description": "Rule set is optional.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LinksV1CreateResponse"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateCalendar",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1CalendarCreate"
                            }
                        }
                    }
                }
            }
        },
        "/links/v1/calendars/{calendar_id}": {
            "delete": {
                "summary": "Delete calendar",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "calendar_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The calendar was deleted"
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteCalendar"
            },
            "put": {
                "summary": "Update calendar",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "calendar_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The calendar was updated"
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateCalendar",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1Calendar"
                            }
                        }
                    }
                }
            }
        },
        "/links/v1/lock_user_links": {
            "get": {
                "summary": "Get links",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LinksV1LockUser"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLockUserLinks"
            }
        },
        "/links/v1/group_user_links": {
            "get": {
                "summary": "Get links",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LinksV1GroupUser"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetGroupUserLinks"
            }
        },
        "/links/v1/group_lock_links": {
            "get": {
                "summary": "Get links",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LinksV1GroupLock"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetGroupLockLinks"
            }
        },
        "/links/v1/group_group_links": {
            "get": {
                "summary": "Get links",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Requested page number",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LinksV1GroupGroup"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetGroupGroupLinks"
            }
        },
        "/links/v1": {
            "post": {
                "summary": "Create link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LinksV1CreateResponse"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateLink",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1Create"
                            }
                        }
                    }
                }
            }
        },
        "/links/v1/{lock_user_id}": {
            "delete": {
                "summary": "Delete link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Deleted "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteLinkByLockUserId"
            },
            "patch": {
                "summary": "Update link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Updated "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateLinkByLockUserId",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1Update"
                            }
                        }
                    }
                }
            }
        },
        "/links/v1/{group_user_id}": {
            "delete": {
                "summary": "Delete link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Deleted "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteLinkByGroupUserId"
            },
            "patch": {
                "summary": "Update link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Updated "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateLinkByGroupUserId",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1Update"
                            }
                        }
                    }
                }
            }
        },
        "/links/v1/{group_lock_id}": {
            "delete": {
                "summary": "Delete link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Deleted "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteLinkByGroupLockId"
            },
            "patch": {
                "summary": "Update link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Updated "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateLinkByGroupLockId",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1Update"
                            }
                        }
                    }
                }
            }
        },
        "/links/v1/{group_group_id}": {
            "delete": {
                "summary": "Delete link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Deleted "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteLinkByGroupGroupId"
            },
            "patch": {
                "summary": "Update link",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group_group_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Updated "
                    }
                },
                "tags": [
                    "LinksV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateLinkByGroupGroupId",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LinksV1Update"
                            }
                        }
                    }
                }
            }
        },
        "/user/v1": {
            "get": {
                "summary": "Get current user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Current user name.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserV1CurrentUser"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetCurrentUser"
            }
        },
        "/user/v1/update": {
            "patch": {
                "summary": "Update a user\u0027s details.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserV1UpdateResponse"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "operationId": "UserV1UpdateUser",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserV1Update"
                            }
                        }
                    }
                }
            }
        },
        "/user/v1/identities": {
            "get": {
                "summary": "Get user\u0027s identities",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Assumable identities.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UserV1UserIdentity"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetUserIdentities"
            }
        },
        "/user/v1/reset_password/email": {
            "post": {
                "summary": "Request a password reset e-mail to the given e-mail address.",
                "description": "No indication is given to the requester regarding whether a user account exists with the given e-mail address.\nThis is done from a security point of view.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The request was processed successfully."
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "operationId": "CreatePasswordReset",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserV1PasswordRequest"
                            }
                        }
                    }
                }
            }
        },
        "/user/v1/reset_password/token": {
            "post": {
                "summary": "Update a user\u0027s password with a reset token.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The password was successfully updated."
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "operationId": "UpdatePasswordByToken",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserV1PasswordReset"
                            }
                        }
                    }
                }
            }
        },
        "/user/v1/devices": {
            "get": {
                "description": "List all Client devices registered by the user.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of devices",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UserV1ClientDevice"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetAllClientDevices",
                "deprecated": true
            }
        },
        "/user/v1/devices/{device_identification}": {
            "get": {
                "description": " Get client device by identification.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "device_identification",
                        "in": "path",
                        "description": "Random unique identifier for the client device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Single device",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserV1ClientDevice"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetDeviceByIdentification",
                "deprecated": true
            },
            "post": {
                "description": " Create or update a client device.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "device_identification",
                        "in": "path",
                        "description": "Random unique identifier (UUID v4 required) for the client device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The device was successfully updated."
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UpdateDeviceByIdentification",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserV1ClientDevice"
                            }
                        }
                    }
                }
            },
            "delete": {
                "description": " Delete a client device",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "device_identification",
                        "in": "path",
                        "description": "Random unique identifier for the client device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The device was successfully deleted."
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteDeviceByIdentification",
                "deprecated": true
            }
        },
        "/user/v1/devices/{device_identification}/notify": {
            "post": {
                "description": " Send a test notification to the device.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "device_identification",
                        "in": "path",
                        "description": "Random unique identifier for the client device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The device was successfully notified."
                    }
                },
                "tags": [
                    "UserV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "NotifyDevice",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            }
        },
        "/oauth/v2/user/tokens": {
            "get": {
                "description": "Get access token list",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Access tokens",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OAuthV2Tokens"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuthV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetAccessTokens"
            },
            "delete": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "All access tokens were successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuthV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteAllAccessTokens"
            }
        },
        "/oauth/v2/user/tokens/{access_token}": {
            "delete": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "access_token",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The access token was successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "The requested entity was not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EntityNotFoundError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "OAuthV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteAccessTokenByToken"
            }
        },
        "/twofactorauth/v1/generate": {
            "post": {
                "summary": "Generate a two factor authentication key for the account",
                "description": "Generate a two factor authentication key for the account. This will generate the key, but not require two factor authentication for the account. The two factor authentication process will have to be enrolled first for it to be required.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TwoFactorAuthV1QrResponse"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "TwoFactorAuthV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GenerateTwoFactorKey",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            }
        },
        "/twofactorauth/v1/enroll": {
            "post": {
                "summary": "Activate currently generated two factor key",
                "description": "Activate currently generated two factor key. A one time password based on the two factor key must be provided in order to enroll two factor authentication for the account.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TwoFactorAuthV1Response"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "TwoFactorAuthV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EnrollTwoFactorAuth",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "totp": {
                                        "type": "string",
                                        "description": "Time-based one-time password to prove that the two factor key has been enrolled in an external 2FA application"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/twofactorauth/v1/remove": {
            "delete": {
                "summary": "Disenrolls two factor authentication and deletes the two factor key",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TwoFactorAuthV1Response"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "TwoFactorAuthV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "RemoveTwoFactorAuth"
            }
        },
        "/log/v1/user/{user_id}": {
            "get": {
                "summary": "Retrieve activity log for provided user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUser"
            }
        },
        "/log/v1/user/{user_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided user in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUserBulk"
            }
        },
        "/log/v1/lock/{lock_id}": {
            "get": {
                "summary": "Retrieve activity log for provided lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogLock"
            }
        },
        "/log/v1/lock/{lock_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided lock in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogLockBulk"
            }
        },
        "/log/v1/userlock/{user_id}/{lock_id}": {
            "get": {
                "summary": "Retrieve activity log for provided user on provided lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUserLock"
            }
        },
        "/log/v1/userlock/{user_id}/{lock_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided user on provided lock in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUserLockBulk"
            }
        },
        "/log/v1/usergrouplock/{usergroup_id}/{lock_id}": {
            "get": {
                "summary": "Retrieve activity log for provided usergroup on provided lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "usergroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUsergroupLock"
            }
        },
        "/log/v1/usergrouplock/{usergroup_id}/{lock_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided usergroup on provided lock in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "usergroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lock_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUsergroupLockBulk"
            }
        },
        "/log/v1/userlockgroup/{user_id}/{lockgroup_id}": {
            "get": {
                "summary": "Retrieve activity log for provided user on provided lock group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lockgroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUserLockgroup"
            }
        },
        "/log/v1/userlockgroup/{user_id}/{lockgroup_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided user on provided lock group in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lockgroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUserLockgroupBulk"
            }
        },
        "/log/v1/usergrouplockgroup/{usergroup_id}/{lockgroup_id}": {
            "get": {
                "summary": "Retrieve activity log for provided user group on provided lock group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "usergroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lockgroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUsergroupLockgroup"
            }
        },
        "/log/v1/usergrouplockgroup/{usergroup_id}/{lockgroup_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided user group on provided lock group in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "usergroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "lockgroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUsergroupLockgroupBulk"
            }
        },
        "/log/v1/usergroup/{usergroup_id}": {
            "get": {
                "summary": "Retrieve activity log for provided user group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "usergroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Retrieve this page based on the given page size.",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "perpage",
                        "in": "query",
                        "description": "Number of entries to retrieve per page(default 1000)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/LogV1"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUsergroup"
            }
        },
        "/log/v1/usergroup/{usergroup_id}/bulk": {
            "get": {
                "summary": "Retrieve activity log for provided user group in a CSV file",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "usergroup_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "start",
                        "in": "query",
                        "description": "start datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "description": "end datetime to filter on",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of logs in a CSV file",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogV1Bulk"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "LogV1"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLogUsergroupBulk"
            }
        },
        "/ekey/v3/locks/{serial_number}/groups": {
            "get": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of groups\n     Authorization: bearer [Access-token]\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3LockGroups"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetGroupsLinkedToLockBySerialNumber"
            }
        },
        "/ekey/v3/locks/{serial_number}/logs": {
            "get": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "serialnumber",
                            "example": "ab:cd:ef:12:34:56"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "From this point in time and backwards in time (UNIXTIME)",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "entries",
                        "in": "query",
                        "description": "Number of entries to retrieve (default 50)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of events\n     Authorization: bearer [Access-token]\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/EkeyV3Log"
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetLockLogBySerialNumber",
                "deprecated": true
            }
        },
        "/ekey/v3/users/{mail}/keys": {
            "get": {
                "description": "Get V3 keys only for a specific user. E-mail must be URL encoded.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mail",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Get keys",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3Keys"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetKeys",
                "deprecated": true
            },
            "post": {
                "description": "Get V3 keys only for a specific user. E-mail must be URL encoded.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mail",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Get keys",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3Keys"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "PostKeys",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/users/keys": {
            "post": {
                "summary": "Get keyring with keys for all the locks the user has access to",
                "description": " Get lock devices with keys, product information, firmware information, user information, permissions and refresh time",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Get keys",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3Keys"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV3UsersKeys",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EkeyV3KeyRingRequest"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/users/{mail}/register": {
            "post": {
                "summary": "Register a new user",
                "description": "Register a new user. E-mail must be URL encoded.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mail",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully registered\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json"
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "operationId": "EkeyV3RegisterUserByMail",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EkeyV3UserRegister"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/users/{username}": {
            "post": {
                "description": "Create a new user related to the caller",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "path",
                        "description": "E-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The user was successfully added."
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateUserByUsername",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "Password"
                                    },
                                    "firstname": {
                                        "type": "string",
                                        "description": "Firstname"
                                    },
                                    "lastname": {
                                        "type": "string",
                                        "description": "Lastname"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Address"
                                    },
                                    "mail": {
                                        "type": "string",
                                        "description": "E-mail address"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "description": "Phone"
                                    },
                                    "language": {
                                        "type": "string",
                                        "description": "Language"
                                    },
                                    "role": {
                                        "type": "string",
                                        "description": "Role"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/discoveries": {
            "post": {
                "summary": "Discoveries lookup, get devices enrolled state",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Discoveries",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3Discoveries"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetDeviceTypesByListOfSerialNumbers",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EkeyV3DiscoveryRequest"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/nodes": {
            "get": {
                "summary": "Get a network address",
                "description": "Receive a Dmi network address that the client can use",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClientAddress"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetNetworkAddress"
            }
        },
        "/ekey/v3/devices/{serial_number}/activities": {
            "get": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "serialnumber",
                            "example": "ab:cd:ef:12:34:56"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "From this point in time and backwards in time (UNIXTIME)",
                        "schema": {
                            "type": "number"
                        }
                    },
                    {
                        "name": "entries",
                        "in": "query",
                        "description": "Number of entries to retrieve (default 50)",
                        "schema": {
                            "type": "number"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of events\n     Authorization: bearer [Access-token]\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3ActivitiesResponse"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "GetDeviceLogBySerialNumber",
                "deprecated": true
            },
            "post": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The submitted activities were saved.\n     Authorization: bearer [Access-token]\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json"
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "UploadLogForLockBySerialNumber",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EkeyV3SubmitActivity"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/devices/{serial_number}/enrollment_token": {
            "post": {
                "summary": "Create an enrollment token",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Enrollment token.\n     Authorization: bearer [Access-token]\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3EnrollmentToken"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateEnrollmentTokenBySerialNumber",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/devices/{serial_number}/enrollment_confirmation_token": {
            "post": {
                "summary": "Confirm enrollemnt",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Enrollment confirmation token.\n     Authorization: bearer [Access-token]\n     Content-Type: application/json\n     Cache-Control: no-cache\n     Accept-Charset: utf-8\n     Accept-Encoding: gzip, deflate\n     Accept: application/json",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3EnrollmentConfirmationToken"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "CreateEnrollmentConfirmationTokenBySerialNumber",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EkeyV3EnrollmentResultToken"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v3/devices/{serial_number}": {
            "delete": {
                "summary": "Delete device",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeleteDeviceBySerialNumber"
            },
            "put": {
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of device.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully updated.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV3"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "DeviceBySerialNumber",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EkeyV3UpdateDevice"
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v2/groups/{name}": {
            "get": {
                "summary": "Retrieve a group",
                "description": "Show one group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/GroupWithItems"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetGroupByName",
                "deprecated": true
            },
            "post": {
                "summary": "Create a new group",
                "description": "Create a group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "description": "Name of group (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The group was successfully created.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2CreateGroupByName",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "type": {
                                        "type": "string",
                                        "description": "Group type"
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Delete a group",
                "description": "Delete a group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "description": "Name of group (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The group was successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2DeleteGroupByName",
                "deprecated": true
            }
        },
        "/ekey/v2/groups/{name}/members": {
            "put": {
                "summary": "Add a member to a group",
                "description": "Add a member to the group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "description": "Name of group (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The members were successfully added.\n\u0022List of\u0022 means comma separated values... And names...",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2AddMemberToGroupByName",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "users": {
                                        "type": "string",
                                        "description": "List of users that should be added to the group. The group type must be \u0027users\u0027."
                                    },
                                    "locks": {
                                        "type": "string",
                                        "description": "List of locks that should be added to the group. The group type must be \u0027locks\u0027."
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Remove a member from a group",
                "description": "Remove member from group",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "name",
                        "in": "path",
                        "description": "Name of group (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The members were successfully removed.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2RemoveMemberFromGroupByName",
                "deprecated": true
            }
        },
        "/ekey/v2/users": {
            "get": {
                "summary": "Retrieve all users",
                "description": "List accessible users",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV2UserDictionary"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetUsers",
                "deprecated": true
            }
        },
        "/ekey/v2/users/{username}": {
            "get": {
                "summary": "Retrieve a user",
                "description": "Get specific user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetUserByUsername",
                "deprecated": true
            },
            "post": {
                "summary": "Create a new user in your domain",
                "description": "Add a new user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "path",
                        "description": "E-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully added.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2CreateUserByUsername",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "Password"
                                    },
                                    "firstname": {
                                        "type": "string",
                                        "description": "Firstname"
                                    },
                                    "lastname": {
                                        "type": "string",
                                        "description": "Lastname"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Address"
                                    },
                                    "mail": {
                                        "type": "string",
                                        "description": "E-mail address"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "description": "Phone"
                                    },
                                    "language": {
                                        "type": "string",
                                        "description": "Language"
                                    },
                                    "role": {
                                        "type": "string",
                                        "description": "Role"
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "summary": "Edit a user",
                "description": "Edit specific user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully updated.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2UpdateUserByUsername",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "password": {
                                        "type": "string",
                                        "description": "Password"
                                    },
                                    "firstname": {
                                        "type": "string",
                                        "description": "Firstname"
                                    },
                                    "lastname": {
                                        "type": "string",
                                        "description": "Lastname"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Address"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "description": "Phone"
                                    },
                                    "mail": {
                                        "type": "string",
                                        "description": "E-mail address"
                                    },
                                    "language": {
                                        "type": "string",
                                        "description": "Language"
                                    },
                                    "role": {
                                        "type": "string",
                                        "description": "Role"
                                    },
                                    "eula": {
                                        "type": "number",
                                        "description": "Eula version accepted. Default: Zero as none."
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Delete a user",
                "description": "Delete specific user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2DeleteUserByUsername",
                "deprecated": true
            }
        },
        "/ekey/v2/users/{mail}/register": {
            "post": {
                "summary": "Register a new account",
                "description": "Register a new user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mail",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully registered.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "operationId": "EkeyV2RegisterUserByMail",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "user": {
                                        "type": "string",
                                        "description": "Username. Default is e-mail address."
                                    },
                                    "password": {
                                        "type": "string",
                                        "description": "Password"
                                    },
                                    "firstname": {
                                        "type": "string",
                                        "description": "Firstname"
                                    },
                                    "lastname": {
                                        "type": "string",
                                        "description": "Lastname"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Address"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "description": "Phone"
                                    },
                                    "eula": {
                                        "type": "number",
                                        "description": "Eula version accepted. Default: Zero as none."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v2/users/{username}/keys": {
            "post": {
                "summary": "Get all keys available to the user",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "username",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV2Keys"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetKeys",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "time": {
                                        "type": "number",
                                        "description": "Time since mobile boot (system uptime)"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/ekey/v2/locks": {
            "get": {
                "summary": "List all my locks on the server",
                "description": "Get list of accessible V1, V2 and V3 locks",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV2LockList"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetLocks",
                "deprecated": true
            }
        },
        "/ekey/v2/locks/{serial_number}/users/{idstr}": {
            "post": {
                "summary": "Add a user who can access a lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "serialnumber",
                            "example": "ab:cd:ef:12:34:56"
                        }
                    },
                    {
                        "name": "idstr",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully invited.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No authentication information was provided or it was invalid.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AuthenticationRequiredError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The request did not pass the validation rules.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ValidationSummary"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Error ERR_RESTRICTED (20) encountered.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Error ERR_LOCK_NOT_FOUND (62) encountered.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyError"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2LinkUserWithLockBySerialNumberAndMail",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "type": {
                                        "type": "string",
                                        "description": "Invitation type. It is recommended to always use the default value."
                                    },
                                    "timezone": {
                                        "type": "string",
                                        "description": "The time zone, where the link is used. Please see  \u003Ca href=\u0022https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\u0022 target=\u0022_blank\u0022\u003Eonline references\u003C/a\u003E."
                                    },
                                    "start": {
                                        "type": "number",
                                        "description": "Start time of link validity in UNIX UTC time."
                                    },
                                    "end=0": {
                                        "type": "number",
                                        "description": "End time of link validity in UNIX UTC time (Default: No end)."
                                    },
                                    "weeks": {
                                        "type": "number",
                                        "description": "How many weeks does this cover? weeks takes precedence over end. (Default: repeat until end (above) or The end of time, which ever comes first)."
                                    },
                                    "weekdays": {
                                        "type": "string",
                                        "description": "Space separated weekdays from the set [mon tue wed thu fri sat sun]. (Default: all weekdays)."
                                    },
                                    "dailystart": {
                                        "type": "string",
                                        "description": "Start time of the day. format HH:MM (default:00:00)."
                                    },
                                    "dailyend": {
                                        "type": "string",
                                        "description": "End time of the day. format HH:MM (default:23:59)."
                                    },
                                    "interval": {
                                        "type": "number",
                                        "description": "Mobile lifetime of the key (in seconds)."
                                    },
                                    "mobilelife": {
                                        "type": "number",
                                        "description": "Mobile lifetime of the key (in minutes)."
                                    },
                                    "watch": {
                                        "type": "number",
                                        "description": "Owner wants to watch this link (1 = yes, 0 = no; default = 1)."
                                    },
                                    "remote": {
                                        "type": "number",
                                        "description": "Owner wants to allow remote access (1 = yes, 0 = no; default = 0)."
                                    },
                                    "externalid": {
                                        "type": "number",
                                        "description": "Reference identifier to external systems (default: 0 if none)."
                                    },
                                    "externaltype": {
                                        "type": "number",
                                        "description": "Reference type identifier to external systems in binary format (default: 0 if none)."
                                    },
                                    "tokenonly": {
                                        "type": "number",
                                        "description": "Return token only (1 = yes, 0 = no; default = 0)."
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Remove a user from accessing a lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "serialnumber",
                            "example": "ab:cd:ef:12:34:56"
                        }
                    },
                    {
                        "name": "idstr",
                        "in": "path",
                        "description": "Username or e-mail address (URL Encoded).",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The link was successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2RemoveLinkedUserFromLockBySerialNumberAndMail",
                "deprecated": true
            }
        },
        "/ekey/v2/locks/{serial_number}/users": {
            "get": {
                "summary": "List all users with access to a lock.",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number or MAC address of lock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "group",
                        "in": "query",
                        "description": "Group ident used to list users that associated with that particular group.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "phone",
                        "in": "query",
                        "description": "Phone ident used to list users that associated with that particular phone.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV3LockUsers"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetUsersLinkedToLockBySerialNumber",
                "deprecated": true
            }
        },
        "/ekey/v2/locks/{serial_number}": {
            "post": {
                "summary": "Add a lock to the server",
                "description": "Add a specific V1, V2 or V3 lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of MAC address of lock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The lock was successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2CreateLockBySerialNumber",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "slek": {
                                        "type": "string",
                                        "description": "Server-Lock Encryption Key (base64encoded)."
                                    },
                                    "mcu": {
                                        "type": "string",
                                        "description": "Firmware version."
                                    },
                                    "battery": {
                                        "type": "number",
                                        "description": "Battery level."
                                    },
                                    "alias": {
                                        "type": "string",
                                        "description": "Name of the lock."
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Physical address of the lock."
                                    },
                                    "rf": {
                                        "type": "string",
                                        "description": "RF unit - hardware information."
                                    },
                                    "designid": {
                                        "type": "number",
                                        "description": "Design ID."
                                    },
                                    "adminpin": {
                                        "type": "string",
                                        "description": "Admin PIN code on the lock."
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "summary": "Remove a lock from the server",
                "description": "Delete Danalock V1, V2 or V3 respectively",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of MAC address of lock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The lock was successfully deleted.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2DeleteLockBySerialNumber",
                "deprecated": true
            },
            "put": {
                "summary": "Update data about a lock on the server",
                "description": "Edit a specific V1, V2 or V3 lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of MAC address of lock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The lock was successfully updated.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Empty"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2EditLock",
                "deprecated": true,
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "description": "Friendly name"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Physical address or location"
                                    },
                                    "firmware": {
                                        "type": "string",
                                        "description": "Firmware version"
                                    },
                                    "rf": {
                                        "type": "string",
                                        "description": "RF unit - hardware information."
                                    },
                                    "timezone": {
                                        "type": "string",
                                        "description": "Timezone the lock is in"
                                    }
                                }
                            }
                        }
                    }
                }
            },
            "get": {
                "summary": "Retrieve information about a lock on the server",
                "description": "Get a specific V1, V2 or V3 lock",
                "parameters": [
                    {
                        "name": "X-Assume-User",
                        "in": "header",
                        "description": "Assume the identity of the user in another domain",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "serial_number",
                        "in": "path",
                        "description": "Serial number of MAC address of lock.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EkeyV2Lock"
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "EkeyV2"
                ],
                "security": [
                    {
                        "oauth2": []
                    }
                ],
                "operationId": "EkeyV2GetLockBySerialNumber",
                "deprecated": true
            }
        }
    }
}