{
  "openapi": "3.0.3",
  "info": {
    "title": "Device API",
    "version": "1.0.1781710043814"
  },
  "tags": [
    {
      "name": "capability",
      "description": "Методы capability. Требуют авторизацию"
    },
    {
      "name": "code",
      "description": "Методы code. Требуют авторизацию"
    },
    {
      "name": "concierge",
      "description": "Методы concierge. Требуют авторизацию"
    },
    {
      "name": "door",
      "description": "Методы door. Требуют авторизацию"
    },
    {
      "name": "dtmf",
      "description": "Методы dtmf. Требуют авторизацию"
    },
    {
      "name": "encryption_profile",
      "description": "Методы encryption_profile. Требуют авторизацию"
    },
    {
      "name": "facerec",
      "description": "Методы facerec. Требуют авторизацию"
    },
    {
      "name": "ftp",
      "description": "Методы ftp. Требуют авторизацию"
    },
    {
      "name": "gate",
      "description": "Методы gate. Требуют авторизацию"
    },
    {
      "name": "ntp",
      "description": "Методы ntp. Требуют авторизацию"
    },
    {
      "name": "reader",
      "description": "Методы reader. Требуют авторизацию"
    },
    {
      "name": "relay",
      "description": "Методы relay. Требуют авторизацию"
    },
    {
      "name": "rfid",
      "description": "Методы rfid. Требуют авторизацию"
    },
    {
      "name": "room",
      "description": "Методы room. Требуют авторизацию"
    },
    {
      "name": "rtsp",
      "description": "Методы rtsp. Требуют авторизацию"
    },
    {
      "name": "sac",
      "description": "Методы sac. Требуют авторизацию"
    },
    {
      "name": "safe_city",
      "description": "Методы safe_city. Требуют авторизацию"
    },
    {
      "name": "sip",
      "description": "Методы sip. Требуют авторизацию"
    },
    {
      "name": "sos",
      "description": "Методы sos. Требуют авторизацию"
    },
    {
      "name": "syslog",
      "description": "Методы syslog. Требуют авторизацию"
    },
    {
      "name": "ticker",
      "description": "Методы ticker. Требуют авторизацию"
    },
    {
      "name": "update",
      "description": "Методы update. Требуют авторизацию"
    },
    {
      "name": "user",
      "description": "Методы user. Требуют авторизацию"
    },
    {
      "name": "video_channel",
      "description": "Методы video_channel. Требуют авторизацию"
    },
    {
      "name": "system(auth)",
      "description": "Методы system. Требуют авторизацию"
    }
  ],
  "paths": {
    "/device/api/v1/capability/list": {
      "get": {
        "summary": "Метод получения возможностей устройства",
        "operationId": "CapabilityService_GetCapabilityList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCapabilityListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "capability"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/code": {
      "post": {
        "summary": "Метод создания кода доступа",
        "operationId": "CodeService_SaveCode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveCodeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveCodeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveCodeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveCodeRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/code/count": {
      "get": {
        "summary": "Метод получения количества кодов доступа",
        "operationId": "CodeService_GetCodeCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCodeCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/code/list": {
      "get": {
        "summary": "Метод получения списка кодов доступа",
        "operationId": "CodeService_GetCodeList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCodeListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\n# Диапазон: 0..2147483647",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления списка кодов доступа",
        "operationId": "CodeService_DeleteCodeList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCodeListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "post": {
        "summary": "Метод создания списка кодов доступа",
        "operationId": "CodeService_SaveCodeList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveCodeListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveCodeListRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/code/{code}": {
      "get": {
        "summary": "Метод получения кода доступа",
        "operationId": "CodeService_GetCode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCodeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "description": "Код доступа",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления одного кода доступа",
        "operationId": "CodeService_DeleteCode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCodeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCodeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCodeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "code",
            "description": "Код доступа",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "code"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/concierge/settings": {
      "get": {
        "summary": "Метод получения настроек Concierge",
        "operationId": "ConciergeSettingsService_GetConciergeSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetConciergeSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "concierge"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек Concierge",
        "operationId": "ConciergeSettingsService_EditConciergeSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditConciergeSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditConciergeSettingsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditConciergeSettingsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1ConciergeSettings"
              }
            }
          },
          "description": "Настройки Concierge",
          "required": true
        },
        "tags": [
          "concierge"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/door/schema": {
      "get": {
        "summary": "Метод получения режима работы контроллера",
        "operationId": "DoorSchemaService_GetDoorSchema",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDoorSchemaResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "door"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования режима работы контроллера",
        "operationId": "DoorSchemaService_EditDoorSchema",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditDoorSchemaResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditDoorSchemaResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditDoorSchemaResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1DoorSchema"
              }
            }
          },
          "description": "Режим работы контроллера",
          "required": true
        },
        "tags": [
          "door"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/dtmf/settings": {
      "get": {
        "summary": "Метод получения настроек DTMF",
        "operationId": "DtmfSettingsService_GetDtmfSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDtmfSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "dtmf"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек DTMF",
        "operationId": "DtmfSettingsService_EditDtmfSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditDtmfSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditDtmfSettingsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditDtmfSettingsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1DtmfSettings"
              }
            }
          },
          "description": "Настройки DTMF",
          "required": true
        },
        "tags": [
          "dtmf"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/encryption_profile": {
      "post": {
        "summary": "Метод создания сущности EncryptionProfile",
        "operationId": "EncryptionProfileService_SaveEncryptionProfile",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveEncryptionProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveEncryptionProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveEncryptionProfileResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveEncryptionProfileRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "encryption_profile"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/encryption_profile/list": {
      "get": {
        "summary": "Метод получения списка сущностей EncryptionProfile по фильтру",
        "operationId": "EncryptionProfileService_GetEncryptionProfileList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetEncryptionProfileListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.text",
            "description": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\nПоиск производится по полям:\n# - Наименование",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "encryption_profile"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления списка сущностей EncryptionProfile по фильтру",
        "operationId": "EncryptionProfileService_DeleteEncryptionProfileList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEncryptionProfileListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEncryptionProfileListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEncryptionProfileListResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "encryption_profile"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/encryption_profile/{id}": {
      "get": {
        "summary": "Метод получения единичной сущности EncryptionProfile по ключу",
        "operationId": "EncryptionProfileService_GetEncryptionProfile",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetEncryptionProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\nТип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "encryption_profile"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления единичной сущности EncryptionProfile по ключу",
        "operationId": "EncryptionProfileService_DeleteEncryptionProfile",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEncryptionProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEncryptionProfileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEncryptionProfileResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\nТип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "encryption_profile"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/facerec": {
      "get": {
        "summary": "Метод получения настроек Face Recognition",
        "operationId": "FacerecService_GetFacerec",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFacerecResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "facerec"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек Face Recognition",
        "operationId": "FacerecService_EditFacerec",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditFacerecResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditFacerecResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditFacerecResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Facerec"
              }
            }
          },
          "description": "Настройки Face Recognition",
          "required": true
        },
        "tags": [
          "facerec"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/ftp": {
      "get": {
        "summary": "Метод получения настроек FTP",
        "operationId": "FtpService_GetFtp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFtpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "ftp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек FTP",
        "operationId": "FtpService_EditFtp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditFtpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditFtpResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditFtpResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Ftp"
              }
            }
          },
          "description": "Настройки FTP",
          "required": true
        },
        "tags": [
          "ftp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/ftp/backup": {
      "post": {
        "summary": "Создать бэкап и положить на FTP папку",
        "operationId": "FtpService_PostFtpBackup",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostFtpBackupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostFtpBackupResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostFtpBackupResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostFtpBackupRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "ftp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/ftp/backup/apply": {
      "post": {
        "summary": "Скачать бэкап из FTP папки и применить",
        "operationId": "FtpService_PostFtpBackupApply",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostFtpBackupApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostFtpBackupApplyResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostFtpBackupApplyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostFtpBackupApplyRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "ftp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/gate/mode": {
      "get": {
        "summary": "Метод получения Gate режима",
        "operationId": "GateModeService_GetGateMode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetGateModeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "gate"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "post": {
        "summary": "Метод редактирования Gate режима",
        "operationId": "GateModeService_SaveGateMode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveGateModeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveGateModeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveGateModeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveGateModeRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "gate"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/ntp": {
      "get": {
        "summary": "Метод получения настроек NTP",
        "operationId": "NtpService_GetNtp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetNtpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "ntp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек NTP",
        "operationId": "NtpService_EditNtp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditNtpResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditNtpResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditNtpResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Ntp"
              }
            }
          },
          "description": "Настройки Ntp-сервера",
          "required": true
        },
        "tags": [
          "ntp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/reader/{data.id}": {
      "patch": {
        "summary": "Метод редактирования считывателя",
        "operationId": "ReaderService_EditReader",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditReaderResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditReaderResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditReaderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "data.id",
            "description": "Идентификатор.\nid=100 - Считыватель внутренний.\nid=1 - Считыватель внешний №1.\nid=2 - Считыватель внешний №2 и тд",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "encryptionProfileIds": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "title": "Список идентификаторов профилей шифрования"
                  },
                  "relayIndexes": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "title": "Список идентификаторов реле.\nДиапазон: 1..64"
                  },
                  "isNoneSecureMode": {
                    "type": "boolean",
                    "title": "Считыватель работает не в безопасном режиме (по UID)"
                  },
                  "directionType": {
                    "title": "Направление",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/ReaderDirectionType"
                      }
                    ]
                  }
                },
                "title": "Считыватель",
                "required": [
                  "encryptionProfileIds",
                  "relayIndexes",
                  "isNoneSecureMode"
                ]
              }
            }
          },
          "description": "Считыватель",
          "required": true
        },
        "tags": [
          "reader"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/reader/{id}": {
      "get": {
        "summary": "Метод получения считывателя",
        "operationId": "ReaderService_GetReader",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetReaderResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\nid=100 - Считыватель внутренний.\nid=1 - Считыватель внешний №1.\nid=2 - Считыватель внешний №2 и тд",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "tags": [
          "reader"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/relay/dtmf/list": {
      "get": {
        "summary": "Метод получения настроек DTMF реле",
        "operationId": "RelayService_GetRelayDtmfList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRelayDtmfListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/relay/open/list": {
      "get": {
        "summary": "Метод получения настроек открытия реле",
        "operationId": "RelayService_GetRelayOpenList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRelayOpenListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/relay/status/list": {
      "get": {
        "summary": "Метод получения статусов реле устройства",
        "operationId": "RelayService_GetRelayStatusList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRelayStatusListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/relay/{data.relayIndex}/props/dtmf": {
      "patch": {
        "summary": "Метод редактирования настроек DTMF реле",
        "operationId": "RelayService_EditRelayPropsDtmf",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditRelayPropsDtmfResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditRelayPropsDtmfResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditRelayPropsDtmfResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "data.relayIndex",
            "description": "Индекс реле.\nДиапазон: 1..32767",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dtmfCode": {
                    "type": "string",
                    "example": 5,
                    "title": "DTMF код.\nДля разных реле допускается одинаковый DTMF код.\nОдин символ из 0,1,2,3,4,5,6,7,8,9,*,#",
                    "maxLength": 1,
                    "minLength": 1,
                    "pattern": "^[0-9*#]{1,1}$"
                  }
                },
                "title": "Настройки DTMF реле"
              }
            }
          },
          "description": "Настройки DTMF реле",
          "required": true
        },
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/relay/{data.relayIndex}/props/open": {
      "patch": {
        "summary": "Метод редактирования настроек открытия реле",
        "operationId": "RelayService_EditRelayPropsOpen",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditRelayPropsOpenResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditRelayPropsOpenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditRelayPropsOpenResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "data.relayIndex",
            "description": "Индекс реле.\nДиапазон: 1..32767",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "lockType": {
                    "title": "Тип замка",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/RelayOpenLockType"
                      }
                    ]
                  },
                  "openTimeGeneral": {
                    "type": "integer",
                    "format": "int32",
                    "example": 10,
                    "title": "Общее время открытия.\nДиапазон: 1..200",
                    "maximum": 200,
                    "minimum": 1
                  },
                  "openTimeEmergency": {
                    "type": "integer",
                    "format": "int32",
                    "example": 10,
                    "title": "Время открытия в секундах при экстренном оповещении.\nПри 0 - до конца экстренного оповещения.\nДиапазон: 0..3600",
                    "maximum": 3600
                  }
                },
                "title": "Настройки реле"
              }
            }
          },
          "description": "Настройки реле",
          "required": true
        },
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/relay/{relayIndex}/close": {
      "post": {
        "summary": "Метод закрытия реле.\nЗакрытие реле принудительно без учета времени открытия.\nОтмена режима постоянного открытия",
        "operationId": "RelayService_PostRelayClose",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayCloseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayCloseResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayCloseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "relayIndex",
            "description": "Индекс реле.\nДиапазон: 1..32767",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/relay/{relayIndex}/open": {
      "post": {
        "summary": "Метод открытия реле",
        "operationId": "RelayService_PostRelayOpen",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayOpenResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayOpenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayOpenResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "relayIndex",
            "description": "Индекс реле.\nДиапазон: 1..32767",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "currentOpenTime": {
                    "type": "integer",
                    "format": "int32",
                    "example": 10,
                    "title": "Задержка в секундах.\nЕсли не передано, используется установленное значение времени открытия из настроек.\nДиапазон: 1..200",
                    "maximum": 200,
                    "minimum": 1
                  }
                },
                "title": "Запрос открытия реле"
              }
            }
          },
          "required": true
        },
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/relay/{relayIndex}/open_permanently": {
      "post": {
        "summary": "Метод открытия реле без дальнейшего закрытия",
        "operationId": "RelayService_PostRelayOpenPermanently",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayOpenPermanentlyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayOpenPermanentlyResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRelayOpenPermanentlyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "relayIndex",
            "description": "Индекс реле.\nДиапазон: 1..32767",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "tags": [
          "relay"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/rfid": {
      "post": {
        "summary": "Метод создания и редактирования сущности Rfid",
        "operationId": "RfidService_SaveRfid",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRfidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRfidResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRfidResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveRfidRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/rfid/count": {
      "get": {
        "summary": "Метод получения количества сущностей Rfid по фильтру",
        "operationId": "RfidService_GetRfidCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.relayIndexes",
            "description": "По идентификаторам реле.\nДиапазон: 1..64",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/rfid/list": {
      "get": {
        "summary": "Метод получения списка сущностей Rfid по фильтру",
        "operationId": "RfidService_GetRfidList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\n# Диапазон: 0..2147483647",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter.relayIndexes",
            "description": "По идентификаторам реле.\nДиапазон: 1..64",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления списка сущностей Rfid по фильтру",
        "operationId": "RfidService_DeleteRfidList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "post": {
        "summary": "Метод создания и редактирования списка сущностей Rfid",
        "operationId": "RfidService_SaveRfidList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRfidListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveRfidListRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/rfid/{id}": {
      "get": {
        "summary": "Метод получения единичной сущности Rfid по ключу",
        "operationId": "RfidService_GetRfid",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор UID [hex 14]",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления единичной сущности Rfid по ключу",
        "operationId": "RfidService_DeleteRfid",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор UID [hex 14]",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "rfid"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/room": {
      "post": {
        "summary": "Метод сохранения настроек квартиры.\nПоддерживает создание и обновление",
        "operationId": "RoomService_SaveRoom",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRoomResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRoomResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRoomResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveRoomRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/room/count": {
      "get": {
        "summary": "Метод получения количества квартир",
        "operationId": "RoomService_GetRoomCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/room/list": {
      "get": {
        "summary": "Метод получения списка настроек квартир",
        "operationId": "RoomService_GetRoomList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\n# Диапазон: 0..2147483647",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления списка настроек квартиры.\nПри отсутствующем или пустом фильтре удаляются все квартиры",
        "operationId": "RoomService_DeleteRoomList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRoomListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRoomListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRoomListResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.roomNumbers",
            "description": "По номерам квартир.\nПри пустом массиве удалятся все квартиры",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "post": {
        "summary": "Метод сохранения списка настроек квартиры",
        "operationId": "RoomService_SaveRoomList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRoomListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveRoomListRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/room/{roomNumber}": {
      "get": {
        "summary": "Метод получения настроек квартиры",
        "operationId": "RoomService_GetRoom",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "roomNumber",
            "description": "Номер квартиры",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления настроек квартиры",
        "operationId": "RoomService_DeleteRoom",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRoomResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRoomResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRoomResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "roomNumber",
            "description": "Номер квартиры",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "room"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/rtsp": {
      "get": {
        "summary": "Метод получения настроек RTSP",
        "operationId": "RtspService_GetRtsp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRtspResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "rtsp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "post": {
        "summary": "Метод редактирования настроек RTSP",
        "operationId": "RtspService_SaveRtsp",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRtspResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRtspResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveRtspResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveRtspRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "rtsp"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/sac": {
      "get": {
        "summary": "Метод получения настроек Smart Auto Collect",
        "operationId": "SacService_GetSac",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSacResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "sac"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек Smart Auto Collect",
        "operationId": "SacService_EditSac",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSacResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSacResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSacResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Sac"
              }
            }
          },
          "description": "Настройки Smart Auto Collect",
          "required": true
        },
        "tags": [
          "sac"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/safe_city/emergency/start": {
      "post": {
        "summary": "Старт оповещения.\nГде Tick - один цикл оповещения на одном или двух направлениях (трубка, динамик или трубка и динамик).\nplaybacks_per_tick - Количество воспроизведений файла в каждом цикле оповещения на одном направлении (трубка или динамик).\ntick_count - Количество воспроизведений циклов оповещения.\nДлительность оповещения = tick_count * (Х * playbacks_per_tick (трубка) + Х * playbacks_per_tick (динамик)).\ntotal_duration - Максимальная общая длительность оповещения. По истечении total_duration секунд оповещение прекращается независимо от количества циклов",
        "operationId": "SafeCityEmergencyService_PostSafeCityEmergencyStart",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSafeCityEmergencyStartResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSafeCityEmergencyStartResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSafeCityEmergencyStartResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostSafeCityEmergencyStartRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/safe_city/emergency/status": {
      "get": {
        "summary": "Получение статуса оповещения",
        "operationId": "SafeCityEmergencyService_GetSafeCityEmergencyStatus",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSafeCityEmergencyStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/safe_city/emergency/stop": {
      "post": {
        "summary": "Прекращение оповещения",
        "operationId": "SafeCityEmergencyService_PostSafeCityEmergencyStop",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSafeCityEmergencyStopResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostSafeCityEmergencyStopRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/safe_city/emergency_file": {
      "post": {
        "summary": "Метод загрузки файла на устройство.\nSyslog: EVENT:000: Upload Emergency File: File size nnn byte: File Duration nnn sec",
        "operationId": "SafeCityEmergencyFileService_SaveSafeCityEmergencyFile",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveSafeCityEmergencyFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveSafeCityEmergencyFileRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/safe_city/emergency_file/list": {
      "get": {
        "summary": "Метод получения списка файлов оповещения.\nВ ответе только массив file_name, необязательный параметр content не присутствует",
        "operationId": "SafeCityEmergencyFileService_GetSafeCityEmergencyFileList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSafeCityEmergencyFileListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/safe_city/emergency_file/{fileName}": {
      "delete": {
        "summary": "Метод удаления единичной сущности SafeCityEmergencyFile по ключу",
        "operationId": "SafeCityEmergencyFileService_DeleteSafeCityEmergencyFile",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteSafeCityEmergencyFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteSafeCityEmergencyFileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteSafeCityEmergencyFileResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "fileName",
            "description": "Имя файла",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/safe_city/osd": {
      "get": {
        "summary": "Метод получения настроек OSD",
        "operationId": "SafeCityOsdService_GetSafeCityOsd",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSafeCityOsdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек OSD",
        "operationId": "SafeCityOsdService_EditSafeCityOsd",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSafeCityOsdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSafeCityOsdResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSafeCityOsdResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SafeCityOsd"
              }
            }
          },
          "description": "Настройки OSD",
          "required": true
        },
        "tags": [
          "safe_city"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/sip/account/list": {
      "get": {
        "summary": "Метод получения списка Sip-аккаунтов",
        "operationId": "SipService_GetSipAccountList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipAccountListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "sip"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/sip/account/status/list": {
      "get": {
        "summary": "Метод получения статусов регистрации Sip-аккаунтов",
        "operationId": "SipService_GetSipAccountStatusList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipAccountStatusListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "sip"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/sip/account/{data.accountId}": {
      "patch": {
        "summary": "Метод редактирования Sip-аккаунта",
        "operationId": "SipService_EditSipAccount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSipAccountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSipAccountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSipAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "data.accountId",
            "description": "ID Sip-аккаунта",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "example": "0018155318002",
                    "title": "Имя"
                  },
                  "number": {
                    "type": "string",
                    "example": "45464738",
                    "title": "Номер"
                  },
                  "user": {
                    "type": "string",
                    "example": "admin",
                    "title": "Имя пользователя"
                  },
                  "password": {
                    "type": "string",
                    "example": "pwd_admin",
                    "title": "Пароль.\nНе возвращается с сервера.\nTODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах"
                  },
                  "regServerAddress": {
                    "type": "string",
                    "example": "reg.acme.io:5060",
                    "title": "Адрес REG-сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:5060, reg.acme.io:5060",
                    "minLength": 5
                  },
                  "sipServerAddress": {
                    "type": "string",
                    "example": "sip.acme.io:5060",
                    "title": "Адрес SIP-сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:5060, sip.acme.io:5060",
                    "minLength": 5
                  },
                  "sipProxyAddress": {
                    "type": "string",
                    "example": "proxy.acme.io:5060",
                    "title": "Адрес SIP-прокси.\nСетевой адрес и порт.\nПример: 192.168.0.1:5060, proxy.acme.io:5060",
                    "minLength": 5
                  }
                },
                "title": "Sip-аккаунт"
              }
            }
          },
          "description": "Sip-аккаунт",
          "required": true
        },
        "tags": [
          "sip"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/sip/timeout/settings": {
      "get": {
        "summary": "Метод получения настроек максимального времени общения и дозвона",
        "operationId": "SipService_GetSipTimeoutSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipTimeoutSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "sip"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек максимального времени общения и дозвона",
        "operationId": "SipService_EditSipTimeoutSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSipTimeoutSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSipTimeoutSettingsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSipTimeoutSettingsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SipTimeoutSettings"
              }
            }
          },
          "description": "Настройки максимального времени общения и дозвона",
          "required": true
        },
        "tags": [
          "sip"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/sos": {
      "get": {
        "summary": "Метод получения настроек SOS",
        "operationId": "SosService_GetSos",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSosResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "sos"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек SOS",
        "operationId": "SosService_EditSos",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSosResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSosResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSosResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Sos"
              }
            }
          },
          "description": "Настройки SOS",
          "required": true
        },
        "tags": [
          "sos"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/syslog/settings": {
      "get": {
        "summary": "Метод получения настроек Syslog-сервера",
        "operationId": "SyslogSettingsService_GetSyslogSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSyslogSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "syslog"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек Syslog-сервера",
        "operationId": "SyslogSettingsService_EditSyslogSettings",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSyslogSettingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSyslogSettingsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditSyslogSettingsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SyslogSettings"
              }
            }
          },
          "description": "Настройки Syslog-сервера",
          "required": true
        },
        "tags": [
          "syslog"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/system/info": {
      "get": {
        "summary": "Метод получения общей информации об устройстве",
        "operationId": "SystemService_GetSystemInfo",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSystemInfoResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "system(auth)"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/system/reboot": {
      "post": {
        "summary": "Метод удаленной перезагрузки",
        "operationId": "SystemService_PostSystemReboot",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSystemRebootResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostSystemRebootRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "system(auth)"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/ticker": {
      "get": {
        "summary": "Метод получения настроек Ticker",
        "operationId": "TickerService_GetTicker",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTickerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "ticker"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      },
      "patch": {
        "summary": "Метод редактирования настроек Ticker",
        "operationId": "TickerService_EditTicker",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditTickerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditTickerResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditTickerResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1Ticker"
              }
            }
          },
          "description": "Настройки Ticker",
          "required": true
        },
        "tags": [
          "ticker"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/update/apply": {
      "post": {
        "summary": "Запустить обновление домофона",
        "operationId": "UpdateService_PostUpdateApply",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUpdateApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostUpdateApplyRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "update"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/update/download": {
      "post": {
        "summary": "Скачать прошивку для обновления",
        "operationId": "UpdateService_PostUpdateDownload",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUpdateDownloadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUpdateDownloadResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUpdateDownloadResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostUpdateDownloadRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "update"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/user": {
      "post": {
        "summary": "Метод создания/редактирования сущности User",
        "operationId": "UserService_SaveUser",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1SaveUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1SaveUserRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "user"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/user/list": {
      "get": {
        "summary": "Метод получения списка сущностей User по фильтру",
        "operationId": "UserService_GetUserList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetUserListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "user"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/user/{username}": {
      "delete": {
        "summary": "Метод удаления единичной сущности User по ключу",
        "operationId": "UserService_DeleteUser",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "username",
            "description": "Имя пользователя",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "user"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/user/{username}/name/replace": {
      "post": {
        "summary": "Метод замены имени пользователя",
        "operationId": "UserService_PostUserNameReplace",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUserNameReplaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "username",
            "description": "Имя пользователя",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "title": "Поле на замену",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/v1PostUserNameReplaceRequestReplaceTo"
                      }
                    ]
                  }
                },
                "title": "Запрос замены имени пользователя",
                "required": [
                  "data"
                ]
              }
            }
          },
          "required": true
        },
        "tags": [
          "user"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/user/{username}/password/replace": {
      "post": {
        "summary": "Метод замены пароля пользователя",
        "operationId": "UserService_PostUserPasswordReplace",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUserPasswordReplaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "username",
            "description": "Имя пользователя",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "title": "Поле на замену",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/v1PostUserPasswordReplaceRequestReplaceTo"
                      }
                    ]
                  }
                },
                "title": "Запрос замены пароля пользователя",
                "required": [
                  "data"
                ]
              }
            }
          },
          "required": true
        },
        "tags": [
          "user"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/user/{username}/permission/replace": {
      "post": {
        "summary": "Метод замены пароля пользователя.\nБудут изменены только явно переданные в data.permission разрешения",
        "operationId": "UserService_PostUserPermissionReplace",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostUserPermissionReplaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "username",
            "description": "Имя пользователя",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "title": "Поле на замену",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/v1PostUserPermissionReplaceRequestReplaceTo"
                      }
                    ]
                  }
                },
                "title": "Запрос замены разрешений пользователя",
                "required": [
                  "data"
                ]
              }
            }
          },
          "required": true
        },
        "tags": [
          "user"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/device/api/v1/video_channel/list": {
      "get": {
        "summary": "Метод получения списка сущностей VideoChannel по фильтру",
        "operationId": "VideoChannelService_GetVideoChannelList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetVideoChannelListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "video_channel"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": []
      }
    },
    "/device/api/v1/video_channel/{data.chanelNumber}": {
      "patch": {
        "summary": "Метод редактирования единичной сущности VideoChannel по ключу",
        "operationId": "VideoChannelService_EditVideoChannel",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditVideoChannelResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditVideoChannelResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1EditVideoChannelResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "data.chanelNumber",
            "description": "Порядковый номер видеоконфига",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "isEnabled": {
                    "type": "boolean",
                    "example": true,
                    "title": "Флаг активности"
                  },
                  "resolutionType": {
                    "title": "Тип разрешения видео",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/VideoChannelResolutionType"
                      }
                    ]
                  },
                  "formatType": {
                    "title": "Формат видео",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/VideoChannelFormatType"
                      }
                    ]
                  },
                  "profileType": {
                    "title": "Профиль",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/VideoChannelProfileType"
                      }
                    ]
                  },
                  "fps": {
                    "type": "integer",
                    "format": "int32",
                    "example": 25,
                    "title": "Частота кадров",
                    "maximum": 30,
                    "minimum": 1
                  },
                  "gop": {
                    "type": "integer",
                    "format": "int32",
                    "example": 25,
                    "title": "Периодичность опорного кадра",
                    "maximum": 200,
                    "minimum": 1
                  },
                  "flowControlModeType": {
                    "title": "Режим FlowControlModeType",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/VideoChannelFlowControlModeType"
                      }
                    ]
                  },
                  "biterate": {
                    "type": "integer",
                    "format": "int32",
                    "example": 100,
                    "title": "Целевая скорость потока, килобит",
                    "maximum": 16000,
                    "minimum": 100
                  },
                  "isRtspAudio": {
                    "type": "boolean",
                    "example": true,
                    "title": "Флаг rtsp_audio"
                  },
                  "isUsedForSip": {
                    "type": "boolean",
                    "example": true,
                    "title": "Флаг use for sip"
                  }
                },
                "title": "Настройки видеоконфига",
                "required": [
                  "isEnabled"
                ]
              }
            }
          },
          "description": "Настройки видеоконфига",
          "required": true
        },
        "tags": [
          "video_channel"
        ],
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "DeletingErrorEncryptionProfileInUse": {
        "type": "object",
        "title": "Профиль шифрования используется на устройстве"
      },
      "EmergencyScenarioPlayOrderType": {
        "type": "string",
        "enum": [
          "HANDSET_ONLY",
          "SPEAKER_ONLY",
          "HANDSET_FIRST",
          "SPEAKER_FIRST",
          "HANDSET_AND_SPEAKER"
        ],
        "description": "- PLAY_ORDER_TYPE_UNKNOWN: Значение не указано\n - HANDSET_ONLY: Только на аналоговые трубки\n - SPEAKER_ONLY: Tолько на динамик домофона\n - HANDSET_FIRST: Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона\n - SPEAKER_FIRST: Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки\n - HANDSET_AND_SPEAKER: Одновременно на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона",
        "title": "Тип проигрывания.\n# Тип: byte"
      },
      "EncryptionProfileDeletingError": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор профиля шифрования, к которому относится ошибка.\nТип: Guid"
          },
          "encryptionProfileInUse": {
            "title": "Профиль используется на устройстве",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeletingErrorEncryptionProfileInUse"
              }
            ]
          }
        },
        "title": "Ошибка удаления",
        "required": [
          "id"
        ]
      },
      "ErrorSoundFileNotFound": {
        "type": "object",
        "title": "Звуковой файл не найден"
      },
      "GetSafeCityEmergencyStatusResponseCurrentStatus": {
        "type": "object",
        "properties": {
          "isRunning": {
            "type": "boolean",
            "title": "Признак работающего оповещения в текущий момент"
          },
          "emergencyScenarioPlayOrderType": {
            "title": "Тип проигрывания",
            "allOf": [
              {
                "$ref": "#/components/schemas/EmergencyScenarioPlayOrderType"
              }
            ]
          },
          "fileName": {
            "type": "string",
            "example": "Happy_new_year.wav",
            "title": "Имя файла"
          }
        },
        "title": "Статус оповещения",
        "required": [
          "isRunning"
        ]
      },
      "GetSipAccountStatusListResponseSipStatus": {
        "type": "object",
        "properties": {
          "sipAccountId": {
            "type": "string",
            "example": "1454647",
            "title": "ID Sip-аккаунта"
          },
          "stateType": {
            "title": "Статус регистрации Sip",
            "allOf": [
              {
                "$ref": "#/components/schemas/GetSipAccountStatusListResponseSipStatusStateType"
              }
            ]
          },
          "lastAttemptRegisterAt": {
            "type": "integer",
            "format": "UnixTime",
            "example": 1742560844,
            "title": "Дата последней попытки регистрации UnixTime"
          }
        },
        "title": "Статус аккаунтов Sip",
        "required": [
          "sipAccountId"
        ]
      },
      "GetSipAccountStatusListResponseSipStatusStateType": {
        "type": "string",
        "enum": [
          "REGISTERING",
          "REGISTERED",
          "UNREGISTERED",
          "REGISTRATION_FAILED",
          "TIMEOUT",
          "DISABLED"
        ],
        "description": "- STATE_TYPE_UNKNOWN: Значение не указано\n - REGISTERING: Клиент отправил REGISTER запрос, но ответ от сервера ещё не получен.\nИдёт попытка регистрации\n - REGISTERED: Успешная регистрация.\nSIP-сервер подтвердил регистрацию, клиент готов принимать звонки\n - UNREGISTERED: Клиент отключился или не регистрировался.\nВозможные причины: Клиент отправил UNREGISTER; Истек срок регистрации (expires)\n - REGISTRATION_FAILED: Ошибка при попытке регистрации.\nВозможные причины: Неверный логин/пароль; SIP-сервер недоступен; Ошибка в конфигурации (порт, протокол, IP)\n - TIMEOUT: Нет ответа от сервера в течение времени ожидания.\nВозможные причины: Проблемы с сетью; SIP-сервер не отвечает; Нет ответа от сервера в течение времени ожидания\n - DISABLED: SIP клиент остановлен вручную или отключён по конфигурации.\nНе выполняется даже попытка регистрации",
        "title": "Тип состояния Sip-аккаунта"
      },
      "HouseInviteTemplateType": {
        "type": "string",
        "enum": [
          "H4LZ_F4LZ",
          "H4LZ_F4",
          "H4_F4LZ"
        ],
        "description": "- INVITE_TEMPLATE_TYPE_UNKNOWN: Значение не указано\n - H4LZ_F4LZ: 4 символа для номера дома с лидирующими нулями, 4 символа для номера квартиры с лидирующими нулями.\nНомера дома и квартиры при звонке подставляются в виде: 00120123@sip.acme.io\n - H4LZ_F4: 4 символа для номера дома с лидирующими нулями, 4 или меньше символа для номера квартиры.\nНомера дома и квартиры при звонке подставляются в виде: 0012123@sip.acme.io\n - H4_F4LZ: 4 или меньше символа для номера дома, 4 символа для номера квартиры с лидирующими нулями.\nНомера дома и квартиры при звонке подставляются в виде: 120123@sip.acme.io",
        "title": "Варианты подстановки номера дома и квартиры в SIP Invite"
      },
      "HouseRoomRange": {
        "type": "object",
        "properties": {
          "firstRoomNumber": {
            "type": "string",
            "example": "234",
            "title": "Начало диапазона включительно"
          },
          "lastRoomNumber": {
            "type": "string",
            "example": "1234",
            "title": "Конец диапазона включительно"
          }
        },
        "title": "Диапазон квартир",
        "required": [
          "firstRoomNumber",
          "lastRoomNumber"
        ]
      },
      "NtpTimeZoneType": {
        "type": "string",
        "enum": [
          "GMTM1100_MIDWAY",
          "GMTM1100_NIUE",
          "GMTM1000_ADAK",
          "GMTM1000_HONOLULU",
          "GMTM1000_JOHNSTON",
          "GMTM1000_RAROTONGA",
          "GMTM1000_TAHITI",
          "GMTM930_MARQUESAS",
          "GMTM900_ANCHORAGE",
          "GMTM900_JUNEAU",
          "GMTM900_METLAKATLA",
          "GMTM900_NOME",
          "GMTM900_SITKA",
          "GMTM900_YAKUTAT",
          "GMTM900_GAMBIER",
          "GMTM800_LOS_ANGELES",
          "GMTM800_SANTA_ISABEL",
          "GMTM800_TIJUANA",
          "GMTM800_VANCOUVER",
          "GMTM800_PITCAIRN",
          "GMTM700_BOISE",
          "GMTM700_CAMBRIDGE_BAY",
          "GMTM700_CHIHUAHUA",
          "GMTM700_CRESTON",
          "GMTM700_DAWSON",
          "GMTM700_DAWSON_CREEK",
          "GMTM700_DENVER",
          "GMTM700_EDMONTON",
          "GMTM700_FORT_NELSON",
          "GMTM700_HERMOSILLO",
          "GMTM700_INUVIK",
          "GMTM700_MAZATLAN",
          "GMTM700_OJINAGA",
          "GMTM700_PHOENIX",
          "GMTM700_SHIPROCK",
          "GMTM700_WHITEHORSE",
          "GMTM700_YELLOWKNIFE",
          "GMTM600_BAHIA_BANDERAS",
          "GMTM600_BELIZE",
          "GMTM600_CHICAGO",
          "GMTM600_COSTA_RICA",
          "GMTM600_EL_SALVADOR",
          "GMTM600_GUATEMALA",
          "GMTM600_KNOX",
          "GMTM600_TELL_CITY",
          "GMTM600_MANAGUA",
          "GMTM600_MATAMOROS",
          "GMTM600_MENOMINEE",
          "GMTM600_MERIDA",
          "GMTM600_MEXICO_CITY",
          "GMTM600_MONTERREY",
          "GMTM600_NORTH_DAKOTA",
          "GMTM600_NORTH_DAKOTA_CENTER",
          "GMTM600_NORTH_DAKOTA_NEW_SALEM",
          "GMTM600_RAINY_RIVER",
          "GMTM600_RANKIN_INLET",
          "GMTM600_REGINA",
          "GMTM600_RESOLUTE",
          "GMTM600_SWIFT_CURRENT",
          "GMTM600_TEGUCIGALPA",
          "GMTM600_WINNIPEG",
          "GMTM600_EASTER",
          "GMTM600_GALAPAGOS",
          "GMTM500_ATIKOKAN",
          "GMTM500_BOGOTA",
          "GMTM500_CANCUN",
          "GMTM500_CAYMAN",
          "GMTM500_DETROIT",
          "GMTM500_EIRUNEPE",
          "GMTM500_GRAND_TURK",
          "GMTM500_GUAYAQUIL",
          "GMTM500_HAVANA",
          "GMTM500_INDIANAPOLIS",
          "GMTM500_MARENGO",
          "GMTM500_PETERSBURG",
          "GMTM500_VEVAY",
          "GMTM500_VINCENNES",
          "GMTM500_WINAMAC",
          "GMTM500_IQALUIT",
          "GMTM500_JAMAICA",
          "GMTM500_LOUISVILLE",
          "GMTM500_MONTICELLO",
          "GMTM500_LIMA",
          "GMTM500_MONTREAL",
          "GMTM500_NASSAU",
          "GMTM500_NEW_YORK",
          "GMTM500_NIPIGON",
          "GMTM500_PANAMA",
          "GMTM500_PANGNIRTUNG",
          "GMTM500_POR_AU_PRINCE",
          "GMTM500_RIO_BRANCO",
          "GMTM500_THUNDER_BAY",
          "GMTM500_TORONTO",
          "GMTM400_ANGUILLA",
          "GMTM400_ANTIGUA",
          "GMTM400_ARUBA",
          "GMTM400_ASUNCION",
          "GMTM400_BARBADO",
          "GMTM400_BLANC_SABLON",
          "GMTM400_BOA_VISTA",
          "GMTM400_CAMPO_GRANDE",
          "GMTM400_CARACA",
          "GMTM400_CUIABA",
          "GMTM400_CURACAO",
          "GMTM400_DOMINICA",
          "GMTM400_GLACE_BAY",
          "GMTM400_GOOSE_BAY",
          "GMTM400_GRENADA",
          "GMTM400_GUADELOUPE",
          "GMTM400_GUYANA",
          "GMTM400_HALIFAX",
          "GMTM400_KRALENDIJK",
          "GMTM400_LA_PAZ",
          "GMTM400_LOWER_PRINCE",
          "GMTM400_MANAU",
          "GMTM400_MARIGOT",
          "GMTM400_MARTINIQUE",
          "GMTM400_MONCTON",
          "GMTM400_MONTSERRAT",
          "GMTM400_PORT_OF_SPAIN",
          "GMTM400_PORTO_VELHO",
          "GMTM400_PUERTO_RICO",
          "GMTM400_SANTIAGO",
          "GMTM400_SANTO_DOMINGO",
          "GMTM400_ST_BARTHELEMY",
          "GMTM400_ST_KITT",
          "GMTM400_ST_LUCIA",
          "GMTM400_ST_THOMA",
          "GMTM400_ST_VINCENT",
          "GMTM400_THULE",
          "GMTM400_TORTOLA",
          "GMTM400_BERMUDA",
          "GMTM330_ST_JOHN",
          "GMTM300_ARAGUAINA",
          "GMTM300_BUENOS_AIRE",
          "GMTM300_CATAMARCA",
          "GMTM300_CORDOBA",
          "GMTM300_JUJUY",
          "GMTM300_LA_RIOJA",
          "GMTM300_MENDOZA",
          "GMTM300_RIO_GALLEGO",
          "GMTM300_SALTA",
          "GMTM300_SAN_JUAN",
          "GMTM300_SAN_LUI",
          "GMTM300_TUCUMAN",
          "GMTM300_USHUAIA",
          "GMTM300_BAHIA",
          "GMTM300_BELEM",
          "GMTM300_CAYENNE",
          "GMTM300_FORTALEZA",
          "GMTM300_GODTHAB",
          "GMTM300_MACEIO",
          "GMTM300_MIQUELON",
          "GMTM300_MONTEVIDEO",
          "GMTM300_NUUK",
          "GMTM300_PARAMARIBO",
          "GMTM300_PUNTA_ARENA",
          "GMTM300_RECIFE",
          "GMTM300_SANTAREM",
          "GMTM300_SAO_PAULO",
          "GMTM300_PALMER",
          "GMTM300_ROTHERA",
          "GMTM300_STANLEY",
          "GMTM200_NORONHA",
          "GMTM200_SOUTH_GEORGIA",
          "GMTM100_SCORESBYSUND",
          "GMTM100_AZORE",
          "GMTM100_CAPE_VERDE",
          "GMTP000_ABIDJAN",
          "GMTP000_ACCRA",
          "GMTP000_BAMAKO",
          "GMTP000_BANJUL",
          "GMTP000_BISSAU",
          "GMTP000_CONAKRY",
          "GMTP000_DAKAR",
          "GMTP000_FREETOWN",
          "GMTP000_LOME",
          "GMTP000_MONROVIA",
          "GMTP000_NOUAKCHOTT",
          "GMTP000_OUAGADOUGOU",
          "GMTP000_SAO_TOME",
          "GMTP000_DANMARKSHAVN",
          "GMTP000_TROLL",
          "GMTP000_CANARY",
          "GMTP000_FAROE",
          "GMTP000_MADEIRA",
          "GMTP000_REYKJAVIK",
          "GMTP000_ST_HELENA",
          "GMTP000_GUERNSEY",
          "GMTP000_ISLE_OF_MAN",
          "GMTP000_JERSEY",
          "GMTP000_LISBON",
          "GMTP000_LONDON",
          "GMTP000_GMT",
          "GMTP100_ALGIER",
          "GMTP100_BANGUI",
          "GMTP100_BRAZZAVILLE",
          "GMTP100_CASABLANCA",
          "GMTP100_CEUTA",
          "GMTP100_DOUALA",
          "GMTP100_EL_AAIUN",
          "GMTP100_KINSHASA",
          "GMTP100_LAGO",
          "GMTP100_LIBREVILLE",
          "GMTP100_LUANDA",
          "GMTP100_MALABO",
          "GMTP100_NDJAMENA",
          "GMTP100_NIAMEY",
          "GMTP100_PORTO_NOVO",
          "GMTP100_TUNI",
          "GMTP100_LONGYEARBYEN",
          "GMTP100_AMSTERDAM",
          "GMTP100_ANDORRA",
          "GMTP100_BELGRADE",
          "GMTP100_BERLIN",
          "GMTP100_BRATISLAVA",
          "GMTP100_BRUSSEL",
          "GMTP100_BUDAPEST",
          "GMTP100_BUSINGEN",
          "GMTP100_COPENHAGEN",
          "GMTP100_DUBLIN",
          "GMTP100_GIBRALTAR",
          "GMTP100_LJUBLJANA",
          "GMTP100_LUXEMBOURG",
          "GMTP100_MADRID",
          "GMTP100_MALTA",
          "GMTP100_MONACO",
          "GMTP100_OSLO",
          "GMTP100_PARI",
          "GMTP100_PODGORICA",
          "GMTP100_PRAGUE",
          "GMTP100_ROME",
          "GMTP100_SAN_MARINO",
          "GMTP100_SARAJEVO",
          "GMTP100_SKOPJE",
          "GMTP100_STOCKHOLM",
          "GMTP100_TIRANE",
          "GMTP100_VADUZ",
          "GMTP100_VATICAN",
          "GMTP100_VIENNA",
          "GMTP100_WARSAW",
          "GMTP100_ZAGREB",
          "GMTP100_ZURICH",
          "GMTP200_BLANTYRE",
          "GMTP200_BUJUMBURA",
          "GMTP200_CAIRO",
          "GMTP200_GABORONE",
          "GMTP200_HARARE",
          "GMTP200_JOHANNESBURG",
          "GMTP200_KHARTOUM",
          "GMTP200_KIGALI",
          "GMTP200_LUBUMBASHI",
          "GMTP200_LUSAKA",
          "GMTP200_MAPUTO",
          "GMTP200_MASERU",
          "GMTP200_MBABANE",
          "GMTP200_TRIPOLI",
          "GMTP200_WINDHOEK",
          "GMTP200_AMMAN",
          "GMTP200_BEIRUT",
          "GMTP200_DAMASCU",
          "GMTP200_FAMAGUSTA",
          "GMTP200_GAZA",
          "GMTP200_HEBRON",
          "GMTP200_JERUSALEM",
          "GMTP200_ATHEN",
          "GMTP200_BUCHAREST",
          "GMTP200_CHISINAU",
          "GMTP200_HELSINKI",
          "GMTP200_KALININGRAD",
          "GMTP200_KIEV",
          "GMTP200_MARIEHAMN",
          "GMTP200_NICOSIA",
          "GMTP200_RIGA",
          "GMTP200_SOFIA",
          "GMTP200_TALLINN",
          "GMTP200_UZHGOROD",
          "GMTP200_VILNIU",
          "GMTP200_ZAPOROZHYE",
          "GMTP300_ADDIS_ABABA",
          "GMTP300_ASMARA",
          "GMTP300_DAR_ES_SALAAM",
          "GMTP300_DJIBOUTI",
          "GMTP300_JUBA",
          "GMTP300_KAMPALA",
          "GMTP300_MOGADISHU",
          "GMTP300_NAIROBI",
          "GMTP300_SYOWA",
          "GMTP300_ADEN",
          "GMTP300_BAGHDAD",
          "GMTP300_BAHRAIN",
          "GMTP300_KUWAIT",
          "GMTP300_QATAR",
          "GMTP300_RIYADH",
          "GMTP300_ISTANBUL",
          "GMTP300_KIROV",
          "GMTP300_MINSK",
          "GMTP300_MOSCOW",
          "GMTP300_SIMFEROPOL",
          "GMTP300_ANTANANARIVO",
          "GMTP300_COMORO",
          "GMTP300_MAYOTTE",
          "GMTP330_TEHRAN",
          "GMTP400_BAKU",
          "GMTP400_DUBAI",
          "GMTP400_MUSCAT",
          "GMTP400_TBILISI",
          "GMTP400_YEREVAN",
          "GMTP400_ASTRAKHAN",
          "GMTP400_SAMARA",
          "GMTP400_SARATOV",
          "GMTP400_ULYANOVSK",
          "GMTP400_VOLGOGRAD",
          "GMTP400_MAHE",
          "GMTP400_MAURITIU",
          "GMTP400_REUNION",
          "GMTP430_KABUL",
          "GMTP500_MAWSON",
          "GMTP500_AQTAU",
          "GMTP500_AQTOBE",
          "GMTP500_ASHGABAT",
          "GMTP500_ATYRAU",
          "GMTP500_DUSHANBE",
          "GMTP500_KARACHI",
          "GMTP500_ORAL",
          "GMTP500_QYZYLORDA",
          "GMTP500_SAMARKAND",
          "GMTP500_TASHKENT",
          "GMTP500_YEKATERINBURG",
          "GMTP500_KERGUELEN",
          "GMTP500_MALDIVE",
          "GMTP530_CALCUTTA",
          "GMTP530_COLOMBO",
          "GMTP530_KOLKATA",
          "GMTP545_KATHMANDU",
          "GMTP545_KATMANDU",
          "GMTP600_VOSTOK",
          "GMTP600_ALMATY",
          "GMTP600_BISHKEK",
          "GMTP600_DHAKA",
          "GMTP600_KASHGAR",
          "GMTP600_OMSK",
          "GMTP600_QOSTANAY",
          "GMTP600_THIMPHU",
          "GMTP600_URUMQI",
          "GMTP600_CHAGO",
          "GMTP630_RANGOON",
          "GMTP630_YANGON",
          "GMTP630_COCO",
          "GMTP700_DAVI",
          "GMTP700_BANGKOK",
          "GMTP700_BARNAUL",
          "GMTP700_HO_CHI_MINH",
          "GMTP700_HOVD",
          "GMTP700_JAKARTA",
          "GMTP700_KRASNOYARSK",
          "GMTP700_NOVOKUZNETSK",
          "GMTP700_NOVOSIBIRSK",
          "GMTP700_PHNOM_PENH",
          "GMTP700_PONTIANAK",
          "GMTP700_TOMSK",
          "GMTP700_VIENTIANE",
          "GMTP700_CHRISTMA",
          "GMTP800_CASEY",
          "GMTP800_BRUNEI",
          "GMTP800_CHOIBALSAN",
          "GMTP800_CHONGQING",
          "GMTP800_HARBIN",
          "GMTP800_HONG_KONG",
          "GMTP800_IRKUTSK",
          "GMTP800_KUALA_LUMPUR",
          "GMTP800_KUCHING",
          "GMTP800_MACAU",
          "GMTP800_MAKASSAR",
          "GMTP800_MANILA",
          "GMTP800_SHANGHAI",
          "GMTP800_SINGAPORE",
          "GMTP800_TAIPEI",
          "GMTP800_ULAANBAATAR",
          "GMTP800_PERTH",
          "GMTP845_EUCLA",
          "GMTP900_CHITA",
          "GMTP900_DILI",
          "GMTP900_JAYAPURA",
          "GMTP900_KHANDYGA",
          "GMTP900_PYONGYANG",
          "GMTP900_SEOUL",
          "GMTP900_TOKYO",
          "GMTP900_YAKUTSK",
          "GMTP900_PALAU",
          "GMTP930_ADELAIDE",
          "GMTP930_BROKEN_HILL",
          "GMTP930_DARWIN",
          "GMTP1000_DUMONTDURVILLE",
          "GMTP1000_UST_NERA",
          "GMTP1000_VLADIVOSTOK",
          "GMTP1000_BRISBANE",
          "GMTP1000_CURRIE",
          "GMTP1000_HOBART",
          "GMTP1000_LINDEMAN",
          "GMTP1000_MELBOURNE",
          "GMTP1000_SYDNEY",
          "GMTP1000_CHUUK",
          "GMTP1000_GUAM",
          "GMTP1000_PORT_MORESBY",
          "GMTP1000_SAIPAN",
          "GMTP1000_TRUK",
          "GMTP1030_LORD_HOWE",
          "GMTP1100_MACQUARIE",
          "GMTP1100_MAGADAN",
          "GMTP1100_SAKHALIN",
          "GMTP1100_SREDNEKOLYMSK",
          "GMTP1100_BOUGAINVILLE",
          "GMTP1100_EFATE",
          "GMTP1100_GUADALCANAL",
          "GMTP1100_KOSRAE",
          "GMTP1100_NORFOLK",
          "GMTP1100_NOUMEA",
          "GMTP1100_POHNPEI",
          "GMTP1100_PONAPE",
          "GMTP1200_MCMURDO",
          "GMTP1200_ANADYR",
          "GMTP1200_KAMCHATKA",
          "GMTP1200_AUCKLAND",
          "GMTP1200_FIJI",
          "GMTP1200_FUNAFUTI",
          "GMTP1200_KWAJALEIN",
          "GMTP1200_MAJURO",
          "GMTP1200_NAURU",
          "GMTP1200_TARAWA",
          "GMTP1200_WAKE",
          "GMTP1200_WALLI",
          "GMTP1245_CHATHAM",
          "GMTP1300_APIA",
          "GMTP1300_ENDERBURY",
          "GMTP1300_FAKAOFO",
          "GMTP1300_TONGATAPU"
        ],
        "description": "- TIME_ZONE_TYPE_UNKNOWN: Значение не указано\n - GMTM1100_MIDWAY: (GMT-11:00) Midway\n - GMTM1100_NIUE: (GMT-11:00) Niue\n - GMTM1000_ADAK: (GMT-10:00) Adak\n - GMTM1000_HONOLULU: (GMT-10:00) Honolulu\n - GMTM1000_JOHNSTON: (GMT-10:00) Johnston\n - GMTM1000_RAROTONGA: (GMT-10:00) Rarotonga\n - GMTM1000_TAHITI: (GMT-10:00) Tahiti\n - GMTM930_MARQUESAS: (GMT-9:30) Marquesas\n - GMTM900_ANCHORAGE: (GMT-9:00) Anchorage\n - GMTM900_JUNEAU: (GMT-9:00) Juneau\n - GMTM900_METLAKATLA: (GMT-9:00) Metlakatla\n - GMTM900_NOME: (GMT-9:00) Nome\n - GMTM900_SITKA: (GMT-9:00) Sitka\n - GMTM900_YAKUTAT: (GMT-9:00) Yakutat\n - GMTM900_GAMBIER: (GMT-9:00) Gambier\n - GMTM800_LOS_ANGELES: (GMT-8:00) Los_Angeles\n - GMTM800_SANTA_ISABEL: (GMT-8:00) Santa_Isabel\n - GMTM800_TIJUANA: (GMT-8:00) Tijuana\n - GMTM800_VANCOUVER: (GMT-8:00) Vancouver\n - GMTM800_PITCAIRN: (GMT-8:00) Pitcairn\n - GMTM700_BOISE: (GMT-7:00) Boise\n - GMTM700_CAMBRIDGE_BAY: (GMT-7:00) Cambridge_Bay\n - GMTM700_CHIHUAHUA: (GMT-7:00) Chihuahua\n - GMTM700_CRESTON: (GMT-7:00) Creston\n - GMTM700_DAWSON: (GMT-7:00) Dawson\n - GMTM700_DAWSON_CREEK: (GMT-7:00) Dawson_Creek\n - GMTM700_DENVER: (GMT-7:00) Denver\n - GMTM700_EDMONTON: (GMT-7:00) Edmonton\n - GMTM700_FORT_NELSON: (GMT-7:00) Fort_Nelson\n - GMTM700_HERMOSILLO: (GMT-7:00) Hermosillo\n - GMTM700_INUVIK: (GMT-7:00) Inuvik\n - GMTM700_MAZATLAN: (GMT-7:00) Mazatlan\n - GMTM700_OJINAGA: (GMT-7:00) Ojinaga\n - GMTM700_PHOENIX: (GMT-7:00) Phoenix\n - GMTM700_SHIPROCK: (GMT-7:00) Shiprock\n - GMTM700_WHITEHORSE: (GMT-7:00) Whitehorse\n - GMTM700_YELLOWKNIFE: (GMT-7:00) Yellowknife<\n - GMTM600_BAHIA_BANDERAS: (GMT-6:00) Bahia_Banderas\n - GMTM600_BELIZE: (GMT-6:00) Belize\n - GMTM600_CHICAGO: (GMT-6:00) Chicago\n - GMTM600_COSTA_RICA: (GMT-6:00) Costa_Rica\n - GMTM600_EL_SALVADOR: (GMT-6:00) El_Salvador\n - GMTM600_GUATEMALA: (GMT-6:00) Guatemala\n - GMTM600_KNOX: (GMT-6:00) Knox\n - GMTM600_TELL_CITY: (GMT-6:00) Tell_City\n - GMTM600_MANAGUA: (GMT-6:00) Managua\n - GMTM600_MATAMOROS: (GMT-6:00) Matamoros\n - GMTM600_MENOMINEE: (GMT-6:00) Menominee\n - GMTM600_MERIDA: (GMT-6:00) Merida\n - GMTM600_MEXICO_CITY: (GMT-6:00) Mexico_City\n - GMTM600_MONTERREY: (GMT-6:00) Monterrey\n - GMTM600_NORTH_DAKOTA: (GMT-6:00) North_Dakota\n - GMTM600_NORTH_DAKOTA_CENTER: (GMT-6:00) North_Dakota/Center\n - GMTM600_NORTH_DAKOTA_NEW_SALEM: (GMT-6:00) North_Dakota/New_Salem\n - GMTM600_RAINY_RIVER: (GMT-6:00) Rainy_River\n - GMTM600_RANKIN_INLET: (GMT-6:00) Rankin_Inlet\n - GMTM600_REGINA: (GMT-6:00) Regina\n - GMTM600_RESOLUTE: (GMT-6:00) Resolute\n - GMTM600_SWIFT_CURRENT: (GMT-6:00) Swift_Current\n - GMTM600_TEGUCIGALPA: (GMT-6:00) Tegucigalpa\n - GMTM600_WINNIPEG: (GMT-6:00) Winnipeg\n - GMTM600_EASTER: (GMT-6:00) Easter\n - GMTM600_GALAPAGOS: (GMT-6:00) Galapagos\n - GMTM500_ATIKOKAN: (GMT-5:00) Atikokan\n - GMTM500_BOGOTA: (GMT-5:00) Bogota\n - GMTM500_CANCUN: (GMT-5:00) Cancun\n - GMTM500_CAYMAN: (GMT-5:00) Cayman\n - GMTM500_DETROIT: (GMT-5:00) Detroit\n - GMTM500_EIRUNEPE: (GMT-5:00) Eirunepe\n - GMTM500_GRAND_TURK: (GMT-5:00) Grand_Turk\n - GMTM500_GUAYAQUIL: (GMT-5:00) Guayaquil\n - GMTM500_HAVANA: (GMT-5:00) Havana\n - GMTM500_INDIANAPOLIS: (GMT-5:00) Indianapolis\n - GMTM500_MARENGO: (GMT-5:00) Marengo\n - GMTM500_PETERSBURG: (GMT-5:00) Petersburg\n - GMTM500_VEVAY: (GMT-5:00) Vevay\n - GMTM500_VINCENNES: (GMT-5:00) Vincennes\n - GMTM500_WINAMAC: (GMT-5:00) Winamac\n - GMTM500_IQALUIT: (GMT-5:00) Iqaluit\n - GMTM500_JAMAICA: (GMT-5:00) Jamaica\n - GMTM500_LOUISVILLE: (GMT-5:00) Louisville\n - GMTM500_MONTICELLO: (GMT-5:00) Monticello\n - GMTM500_LIMA: (GMT-5:00) Lima\n - GMTM500_MONTREAL: (GMT-5:00) Montreal\n - GMTM500_NASSAU: (GMT-5:00) Nassau\n - GMTM500_NEW_YORK: (GMT-5:00) New_York\n - GMTM500_NIPIGON: (GMT-5:00) Nipigon\n - GMTM500_PANAMA: (GMT-5:00) Panama\n - GMTM500_PANGNIRTUNG: (GMT-5:00) Pangnirtung\n - GMTM500_POR_AU_PRINCE: (GMT-5:00) Port-au-Prince\n - GMTM500_RIO_BRANCO: (GMT-5:00) Rio_Branco\n - GMTM500_THUNDER_BAY: (GMT-5:00) Thunder_Bay\n - GMTM500_TORONTO: (GMT-5:00) Toronto\n - GMTM400_ANGUILLA: (GMT-4:00) Anguilla\n - GMTM400_ANTIGUA: (GMT-4:00) Antigua\n - GMTM400_ARUBA: (GMT-4:00) Aruba\n - GMTM400_ASUNCION: (GMT-4:00) Asuncion\n - GMTM400_BARBADO: (GMT-4:00) Barbado\n - GMTM400_BLANC_SABLON: (GMT-4:00) Blanc-Sablon\n - GMTM400_BOA_VISTA: (GMT-4:00) Boa_Vista\n - GMTM400_CAMPO_GRANDE: (GMT-4:00) Campo_Grande\n - GMTM400_CARACA: (GMT-4:00) Caraca\n - GMTM400_CUIABA: (GMT-4:00) Cuiaba\n - GMTM400_CURACAO: (GMT-4:00) Curacao\n - GMTM400_DOMINICA: (GMT-4:00) Dominica\n - GMTM400_GLACE_BAY: (GMT-4:00) Glace_Bay\n - GMTM400_GOOSE_BAY: (GMT-4:00) Goose_Bay\n - GMTM400_GRENADA: (GMT-4:00) Grenada\n - GMTM400_GUADELOUPE: (GMT-4:00) Guadeloupe\n - GMTM400_GUYANA: (GMT-4:00) Guyana\n - GMTM400_HALIFAX: (GMT-4:00) Halifax\n - GMTM400_KRALENDIJK: (GMT-4:00) Kralendijk\n - GMTM400_LA_PAZ: (GMT-4:00) La_Paz\n - GMTM400_LOWER_PRINCE: (GMT-4:00) Lower_Prince\n - GMTM400_MANAU: (GMT-4:00) Manau\n - GMTM400_MARIGOT: (GMT-4:00) Marigot\n - GMTM400_MARTINIQUE: (GMT-4:00) Martinique\n - GMTM400_MONCTON: (GMT-4:00) Moncton\n - GMTM400_MONTSERRAT: (GMT-4:00) Montserrat\n - GMTM400_PORT_OF_SPAIN: (GMT-4:00) Port_of_Spain\n - GMTM400_PORTO_VELHO: (GMT-4:00) Porto_Velho\n - GMTM400_PUERTO_RICO: (GMT-4:00) Puerto_Rico\n - GMTM400_SANTIAGO: (GMT-4:00) Santiago\n - GMTM400_SANTO_DOMINGO: (GMT-4:00) Santo_Domingo\n - GMTM400_ST_BARTHELEMY: (GMT-4:00) St_Barthelemy\n - GMTM400_ST_KITT: (GMT-4:00) St_Kitt\n - GMTM400_ST_LUCIA: (GMT-4:00) St_Lucia\n - GMTM400_ST_THOMA: (GMT-4:00) St_Thoma\n - GMTM400_ST_VINCENT: (GMT-4:00) St_Vincent\n - GMTM400_THULE: (GMT-4:00) Thule\n - GMTM400_TORTOLA: (GMT-4:00) Tortola\n - GMTM400_BERMUDA: (GMT-4:00) Bermuda\n - GMTM330_ST_JOHN: (GMT-3:30) St_John\n - GMTM300_ARAGUAINA: (GMT-3:00) Araguaina\n - GMTM300_BUENOS_AIRE: (GMT-3:00) Buenos_Aire\n - GMTM300_CATAMARCA: (GMT-3:00) Catamarca\n - GMTM300_CORDOBA: (GMT-3:00) Cordoba\n - GMTM300_JUJUY: (GMT-3:00) Jujuy\n - GMTM300_LA_RIOJA: (GMT-3:00) La_Rioja\n - GMTM300_MENDOZA: (GMT-3:00) Mendoza\n - GMTM300_RIO_GALLEGO: (GMT-3:00) Rio_Gallego\n - GMTM300_SALTA: (GMT-3:00) Salta\n - GMTM300_SAN_JUAN: (GMT-3:00) San_Juan\n - GMTM300_SAN_LUI: (GMT-3:00) San_Lui\n - GMTM300_TUCUMAN: (GMT-3:00) Tucuman\n - GMTM300_USHUAIA: (GMT-3:00) Ushuaia\n - GMTM300_BAHIA: (GMT-3:00) Bahia\n - GMTM300_BELEM: (GMT-3:00) Belem\n - GMTM300_CAYENNE: (GMT-3:00) Cayenne\n - GMTM300_FORTALEZA: (GMT-3:00) Fortaleza\n - GMTM300_GODTHAB: (GMT-3:00) Godthab\n - GMTM300_MACEIO: (GMT-3:00) Maceio\n - GMTM300_MIQUELON: (GMT-3:00) Miquelon\n - GMTM300_MONTEVIDEO: (GMT-3:00) Montevideo\n - GMTM300_NUUK: (GMT-3:00) Nuuk\n - GMTM300_PARAMARIBO: (GMT-3:00) Paramaribo\n - GMTM300_PUNTA_ARENA: (GMT-3:00) Punta_Arena\n - GMTM300_RECIFE: (GMT-3:00) Recife\n - GMTM300_SANTAREM: (GMT-3:00) Santarem\n - GMTM300_SAO_PAULO: (GMT-3:00) Sao_Paulo\n - GMTM300_PALMER: (GMT-3:00) Palmer\n - GMTM300_ROTHERA: (GMT-3:00) Rothera\n - GMTM300_STANLEY: (GMT-3:00) Stanley\n - GMTM200_NORONHA: (GMT-2:00) Noronha\n - GMTM200_SOUTH_GEORGIA: (GMT-2:00) South_Georgia\n - GMTM100_SCORESBYSUND: (GMT-1:00) Scoresbysund\n - GMTM100_AZORE: (GMT-1:00) Azore\n - GMTM100_CAPE_VERDE: (GMT-1:00) Cape_Verde\n - GMTP000_ABIDJAN: (GMT+0:00) Abidjan\n - GMTP000_ACCRA: (GMT+0:00) Accra\n - GMTP000_BAMAKO: (GMT+0:00) Bamako\n - GMTP000_BANJUL: (GMT+0:00) Banjul\n - GMTP000_BISSAU: (GMT+0:00) Bissau\n - GMTP000_CONAKRY: (GMT+0:00) Conakry\n - GMTP000_DAKAR: (GMT+0:00) Dakar\n - GMTP000_FREETOWN: (GMT+0:00) Freetown\n - GMTP000_LOME: (GMT+0:00) Lome\n - GMTP000_MONROVIA: (GMT+0:00) Monrovia\n - GMTP000_NOUAKCHOTT: (GMT+0:00) Nouakchott\n - GMTP000_OUAGADOUGOU: (GMT+0:00) Ouagadougou\n - GMTP000_SAO_TOME: (GMT+0:00) Sao_Tome\n - GMTP000_DANMARKSHAVN: (GMT+0:00) Danmarkshavn\n - GMTP000_TROLL: (GMT+0:00) Troll\n - GMTP000_CANARY: (GMT+0:00) Canary\n - GMTP000_FAROE: (GMT+0:00) Faroe\n - GMTP000_MADEIRA: (GMT+0:00) Madeira\n - GMTP000_REYKJAVIK: (GMT+0:00) Reykjavik\n - GMTP000_ST_HELENA: (GMT+0:00) St_Helena\n - GMTP000_GUERNSEY: (GMT+0:00) Guernsey\n - GMTP000_ISLE_OF_MAN: (GMT+0:00) Isle_of_Man\n - GMTP000_JERSEY: (GMT+0:00) Jersey\n - GMTP000_LISBON: (GMT+0:00) Lisbon\n - GMTP000_LONDON: (GMT+0:00) London\n - GMTP000_GMT: (GMT+0:00) GMT\n - GMTP100_ALGIER: (GMT+1:00) Algier\n - GMTP100_BANGUI: (GMT+1:00) Bangui\n - GMTP100_BRAZZAVILLE: (GMT+1:00) Brazzaville\n - GMTP100_CASABLANCA: (GMT+1:00) Casablanca\n - GMTP100_CEUTA: (GMT+1:00) Ceuta\n - GMTP100_DOUALA: (GMT+1:00) Douala\n - GMTP100_EL_AAIUN: (GMT+1:00) El_Aaiun\n - GMTP100_KINSHASA: (GMT+1:00) Kinshasa\n - GMTP100_LAGO: (GMT+1:00) Lago\n - GMTP100_LIBREVILLE: (GMT+1:00) Libreville\n - GMTP100_LUANDA: (GMT+1:00) Luanda\n - GMTP100_MALABO: (GMT+1:00) Malabo\n - GMTP100_NDJAMENA: (GMT+1:00) Ndjamena\n - GMTP100_NIAMEY: (GMT+1:00) Niamey\n - GMTP100_PORTO_NOVO: (GMT+1:00) Porto-Novo\n - GMTP100_TUNI: (GMT+1:00) Tuni\n - GMTP100_LONGYEARBYEN: (GMT+1:00) Longyearbyen\n - GMTP100_AMSTERDAM: (GMT+1:00) Amsterdam\n - GMTP100_ANDORRA: (GMT+1:00) Andorra\n - GMTP100_BELGRADE: (GMT+1:00) Belgrade\n - GMTP100_BERLIN: (GMT+1:00) Berlin\n - GMTP100_BRATISLAVA: (GMT+1:00) Bratislava\n - GMTP100_BRUSSEL: (GMT+1:00) Brussel\n - GMTP100_BUDAPEST: (GMT+1:00) Budapest\n - GMTP100_BUSINGEN: (GMT+1:00) Busingen\n - GMTP100_COPENHAGEN: (GMT+1:00) Copenhagen\n - GMTP100_DUBLIN: (GMT+1:00) Dublin\n - GMTP100_GIBRALTAR: (GMT+1:00) Gibraltar\n - GMTP100_LJUBLJANA: (GMT+1:00) Ljubljana\n - GMTP100_LUXEMBOURG: (GMT+1:00) Luxembourg\n - GMTP100_MADRID: (GMT+1:00) Madrid\n - GMTP100_MALTA: (GMT+1:00) Malta\n - GMTP100_MONACO: (GMT+1:00) Monaco\n - GMTP100_OSLO: (GMT+1:00) Oslo\n - GMTP100_PARI: (GMT+1:00) Pari\n - GMTP100_PODGORICA: (GMT+1:00) Podgorica\n - GMTP100_PRAGUE: (GMT+1:00) Prague\n - GMTP100_ROME: (GMT+1:00) Rome\n - GMTP100_SAN_MARINO: (GMT+1:00) San_Marino\n - GMTP100_SARAJEVO: (GMT+1:00) Sarajevo\n - GMTP100_SKOPJE: (GMT+1:00) Skopje\n - GMTP100_STOCKHOLM: (GMT+1:00) Stockholm\n - GMTP100_TIRANE: (GMT+1:00) Tirane\n - GMTP100_VADUZ: (GMT+1:00) Vaduz\n - GMTP100_VATICAN: (GMT+1:00) Vatican\n - GMTP100_VIENNA: (GMT+1:00) Vienna\n - GMTP100_WARSAW: (GMT+1:00) Warsaw\n - GMTP100_ZAGREB: (GMT+1:00) Zagreb\n - GMTP100_ZURICH: (GMT+1:00) Zurich\n - GMTP200_BLANTYRE: (GMT+2:00) Blantyre\n - GMTP200_BUJUMBURA: (GMT+2:00) Bujumbura\n - GMTP200_CAIRO: (GMT+2:00) Cairo\n - GMTP200_GABORONE: (GMT+2:00) Gaborone\n - GMTP200_HARARE: (GMT+2:00) Harare\n - GMTP200_JOHANNESBURG: (GMT+2:00) Johannesburg\n - GMTP200_KHARTOUM: (GMT+2:00) Khartoum\n - GMTP200_KIGALI: (GMT+2:00) Kigali\n - GMTP200_LUBUMBASHI: (GMT+2:00) Lubumbashi\n - GMTP200_LUSAKA: (GMT+2:00) Lusaka\n - GMTP200_MAPUTO: (GMT+2:00) Maputo\n - GMTP200_MASERU: (GMT+2:00) Maseru\n - GMTP200_MBABANE: (GMT+2:00) Mbabane\n - GMTP200_TRIPOLI: (GMT+2:00) Tripoli\n - GMTP200_WINDHOEK: (GMT+2:00) Windhoek\n - GMTP200_AMMAN: (GMT+2:00) Amman\n - GMTP200_BEIRUT: (GMT+2:00) Beirut\n - GMTP200_DAMASCU: (GMT+2:00) Damascu\n - GMTP200_FAMAGUSTA: (GMT+2:00) Famagusta\n - GMTP200_GAZA: (GMT+2:00) Gaza\n - GMTP200_HEBRON: (GMT+2:00) Hebron\n - GMTP200_JERUSALEM: (GMT+2:00) Jerusalem\n - GMTP200_ATHEN: (GMT+2:00) Athen\n - GMTP200_BUCHAREST: (GMT+2:00) Bucharest\n - GMTP200_CHISINAU: (GMT+2:00) Chisinau\n - GMTP200_HELSINKI: (GMT+2:00) Helsinki\n - GMTP200_KALININGRAD: (GMT+2:00) Kaliningrad\n - GMTP200_KIEV: (GMT+2:00) Kiev\n - GMTP200_MARIEHAMN: (GMT+2:00) Mariehamn\n - GMTP200_NICOSIA: (GMT+2:00) Nicosia\n - GMTP200_RIGA: (GMT+2:00) Riga\n - GMTP200_SOFIA: (GMT+2:00) Sofia\n - GMTP200_TALLINN: (GMT+2:00) Tallinn\n - GMTP200_UZHGOROD: (GMT+2:00) Uzhgorod\n - GMTP200_VILNIU: (GMT+2:00) Vilniu\n - GMTP200_ZAPOROZHYE: (GMT+2:00) Zaporozhye\n - GMTP300_ADDIS_ABABA: (GMT+3:00) Addis_Ababa\n - GMTP300_ASMARA: (GMT+3:00) Asmara\n - GMTP300_DAR_ES_SALAAM: (GMT+3:00) Dar_es_Salaam\n - GMTP300_DJIBOUTI: (GMT+3:00) Djibouti\n - GMTP300_JUBA: (GMT+3:00) Juba\n - GMTP300_KAMPALA: (GMT+3:00) Kampala\n - GMTP300_MOGADISHU: (GMT+3:00) Mogadishu\n - GMTP300_NAIROBI: (GMT+3:00) Nairobi\n - GMTP300_SYOWA: (GMT+3:00) Syowa\n - GMTP300_ADEN: (GMT+3:00) Aden\n - GMTP300_BAGHDAD: (GMT+3:00) Baghdad\n - GMTP300_BAHRAIN: (GMT+3:00) Bahrain\n - GMTP300_KUWAIT: (GMT+3:00) Kuwait\n - GMTP300_QATAR: (GMT+3:00) Qatar\n - GMTP300_RIYADH: (GMT+3:00) Riyadh\n - GMTP300_ISTANBUL: (GMT+3:00) Istanbul\n - GMTP300_KIROV: (GMT+3:00) Kirov\n - GMTP300_MINSK: (GMT+3:00) Minsk\n - GMTP300_MOSCOW: (GMT+3:00) Moscow\n - GMTP300_SIMFEROPOL: (GMT+3:00) Simferopol\n - GMTP300_ANTANANARIVO: (GMT+3:00) Antananarivo\n - GMTP300_COMORO: (GMT+3:00) Comoro\n - GMTP300_MAYOTTE: (GMT+3:00) Mayotte\n - GMTP330_TEHRAN: (GMT+3:30) Tehran\n - GMTP400_BAKU: (GMT+4:00) Baku\n - GMTP400_DUBAI: (GMT+4:00) Dubai\n - GMTP400_MUSCAT: (GMT+4:00) Muscat\n - GMTP400_TBILISI: (GMT+4:00) Tbilisi\n - GMTP400_YEREVAN: (GMT+4:00) Yerevan\n - GMTP400_ASTRAKHAN: (GMT+4:00) Astrakhan\n - GMTP400_SAMARA: (GMT+4:00) Samara\n - GMTP400_SARATOV: (GMT+4:00) Saratov\n - GMTP400_ULYANOVSK: (GMT+4:00) Ulyanovsk\n - GMTP400_VOLGOGRAD: (GMT+4:00) Volgograd\n - GMTP400_MAHE: (GMT+4:00) Mahe\n - GMTP400_MAURITIU: (GMT+4:00) Mauritiu\n - GMTP400_REUNION: (GMT+4:00) Reunion\n - GMTP430_KABUL: (GMT+4:30) Kabul\n - GMTP500_MAWSON: (GMT+5:00) Mawson\n - GMTP500_AQTAU: (GMT+5:00) Aqtau\n - GMTP500_AQTOBE: (GMT+5:00) Aqtobe\n - GMTP500_ASHGABAT: (GMT+5:00) Ashgabat\n - GMTP500_ATYRAU: (GMT+5:00) Atyrau\n - GMTP500_DUSHANBE: (GMT+5:00) Dushanbe\n - GMTP500_KARACHI: (GMT+5:00) Karachi\n - GMTP500_ORAL: (GMT+5:00) Oral\n - GMTP500_QYZYLORDA: (GMT+5:00) Qyzylorda\n - GMTP500_SAMARKAND: (GMT+5:00) Samarkand\n - GMTP500_TASHKENT: (GMT+5:00) Tashkent\n - GMTP500_YEKATERINBURG: (GMT+5:00) Yekaterinburg\n - GMTP500_KERGUELEN: (GMT+5:00) Kerguelen\n - GMTP500_MALDIVE: (GMT+5:00) Maldive\n - GMTP530_CALCUTTA: (GMT+5:30) Calcutta\n - GMTP530_COLOMBO: (GMT+5:30) Colombo\n - GMTP530_KOLKATA: (GMT+5:30) Kolkata\n - GMTP545_KATHMANDU: (GMT+5:45) Kathmandu\n - GMTP545_KATMANDU: (GMT+5:45) Katmandu\n - GMTP600_VOSTOK: (GMT+6:00) Vostok\n - GMTP600_ALMATY: (GMT+6:00) Almaty\n - GMTP600_BISHKEK: (GMT+6:00) Bishkek\n - GMTP600_DHAKA: (GMT+6:00) Dhaka\n - GMTP600_KASHGAR: (GMT+6:00) Kashgar\n - GMTP600_OMSK: (GMT+6:00) Omsk\n - GMTP600_QOSTANAY: (GMT+6:00) Qostanay\n - GMTP600_THIMPHU: (GMT+6:00) Thimphu\n - GMTP600_URUMQI: (GMT+6:00) Urumqi\n - GMTP600_CHAGO: (GMT+6:00) Chago\n - GMTP630_RANGOON: (GMT+6:30) Rangoon\n - GMTP630_YANGON: (GMT+6:30) Yangon\n - GMTP630_COCO: (GMT+6:30) Coco\n - GMTP700_DAVI: (GMT+7:00) Davi\n - GMTP700_BANGKOK: (GMT+7:00) Bangkok\n - GMTP700_BARNAUL: (GMT+7:00) Barnaul\n - GMTP700_HO_CHI_MINH: (GMT+7:00) Ho_Chi_Minh\n - GMTP700_HOVD: (GMT+7:00) Hovd\n - GMTP700_JAKARTA: (GMT+7:00) Jakarta\n - GMTP700_KRASNOYARSK: (GMT+7:00) Krasnoyarsk\n - GMTP700_NOVOKUZNETSK: (GMT+7:00) Novokuznetsk\n - GMTP700_NOVOSIBIRSK: (GMT+7:00) Novosibirsk\n - GMTP700_PHNOM_PENH: (GMT+7:00) Phnom_Penh\n - GMTP700_PONTIANAK: (GMT+7:00) Pontianak\n - GMTP700_TOMSK: (GMT+7:00) Tomsk\n - GMTP700_VIENTIANE: (GMT+7:00) Vientiane\n - GMTP700_CHRISTMA: (GMT+7:00) Christma\n - GMTP800_CASEY: (GMT+8:00) Casey\n - GMTP800_BRUNEI: (GMT+8:00) Brunei\n - GMTP800_CHOIBALSAN: (GMT+8:00) Choibalsan\n - GMTP800_CHONGQING: (GMT+8:00) Chongqing\n - GMTP800_HARBIN: (GMT+8:00) Harbin\n - GMTP800_HONG_KONG: (GMT+8:00) Hong_Kong\n - GMTP800_IRKUTSK: (GMT+8:00) Irkutsk\n - GMTP800_KUALA_LUMPUR: (GMT+8:00) Kuala_Lumpur\n - GMTP800_KUCHING: (GMT+8:00) Kuching\n - GMTP800_MACAU: (GMT+8:00) Macau\n - GMTP800_MAKASSAR: (GMT+8:00) Makassar\n - GMTP800_MANILA: (GMT+8:00) Manila\n - GMTP800_SHANGHAI: (GMT+8:00) Shanghai\n - GMTP800_SINGAPORE: (GMT+8:00) Singapore\n - GMTP800_TAIPEI: (GMT+8:00) Taipei\n - GMTP800_ULAANBAATAR: (GMT+8:00) Ulaanbaatar\n - GMTP800_PERTH: (GMT+8:00) Perth\n - GMTP845_EUCLA: (GMT+8:45) Eucla\n - GMTP900_CHITA: (GMT+9:00) Chita\n - GMTP900_DILI: (GMT+9:00) Dili\n - GMTP900_JAYAPURA: (GMT+9:00) Jayapura\n - GMTP900_KHANDYGA: (GMT+9:00) Khandyga\n - GMTP900_PYONGYANG: (GMT+9:00) Pyongyang\n - GMTP900_SEOUL: (GMT+9:00) Seoul\n - GMTP900_TOKYO: (GMT+9:00) Tokyo\n - GMTP900_YAKUTSK: (GMT+9:00) Yakutsk\n - GMTP900_PALAU: (GMT+9:00) Palau\n - GMTP930_ADELAIDE: (GMT+9:30) Adelaide\n - GMTP930_BROKEN_HILL: (GMT+9:30) Broken_Hill\n - GMTP930_DARWIN: (GMT+9:30) Darwin\n - GMTP1000_DUMONTDURVILLE: (GMT+10:00) DumontDUrville\n - GMTP1000_UST_NERA: (GMT+10:00) Ust-Nera\n - GMTP1000_VLADIVOSTOK: (GMT+10:00) Vladivostok\n - GMTP1000_BRISBANE: (GMT+10:00) Brisbane\n - GMTP1000_CURRIE: (GMT+10:00) Currie\n - GMTP1000_HOBART: (GMT+10:00) Hobart\n - GMTP1000_LINDEMAN: (GMT+10:00) Lindeman\n - GMTP1000_MELBOURNE: (GMT+10:00) Melbourne\n - GMTP1000_SYDNEY: (GMT+10:00) Sydney\n - GMTP1000_CHUUK: (GMT+10:00) Chuuk\n - GMTP1000_GUAM: (GMT+10:00) Guam\n - GMTP1000_PORT_MORESBY: (GMT+10:00) Port_Moresby\n - GMTP1000_SAIPAN: (GMT+10:00) Saipan\n - GMTP1000_TRUK: (GMT+10:00) Truk\n - GMTP1030_LORD_HOWE: (GMT+10:30) Lord_Howe\n - GMTP1100_MACQUARIE: (GMT+11:00) Macquarie\n - GMTP1100_MAGADAN: (GMT+11:00) Magadan\n - GMTP1100_SAKHALIN: (GMT+11:00) Sakhalin\n - GMTP1100_SREDNEKOLYMSK: (GMT+11:00) Srednekolymsk\n - GMTP1100_BOUGAINVILLE: (GMT+11:00) Bougainville\n - GMTP1100_EFATE: (GMT+11:00) Efate\n - GMTP1100_GUADALCANAL: (GMT+11:00) Guadalcanal\n - GMTP1100_KOSRAE: (GMT+11:00) Kosrae\n - GMTP1100_NORFOLK: (GMT+11:00) Norfolk\n - GMTP1100_NOUMEA: (GMT+11:00) Noumea\n - GMTP1100_POHNPEI: (GMT+11:00) Pohnpei\n - GMTP1100_PONAPE: (GMT+11:00) Ponape\n - GMTP1200_MCMURDO: (GMT+12:00) McMurdo\n - GMTP1200_ANADYR: (GMT+12:00) Anadyr\n - GMTP1200_KAMCHATKA: (GMT+12:00) Kamchatka\n - GMTP1200_AUCKLAND: (GMT+12:00) Auckland\n - GMTP1200_FIJI: (GMT+12:00) Fiji\n - GMTP1200_FUNAFUTI: (GMT+12:00) Funafuti\n - GMTP1200_KWAJALEIN: (GMT+12:00) Kwajalein\n - GMTP1200_MAJURO: (GMT+12:00) Majuro\n - GMTP1200_NAURU: (GMT+12:00) Nauru\n - GMTP1200_TARAWA: (GMT+12:00) Tarawa\n - GMTP1200_WAKE: (GMT+12:00) Wake\n - GMTP1200_WALLI: (GMT+12:00) Walli\n - GMTP1245_CHATHAM: (GMT+12:45) Chatham\n - GMTP1300_APIA: (GMT+13:00) Apia\n - GMTP1300_ENDERBURY: (GMT+13:00) Enderbury\n - GMTP1300_FAKAOFO: (GMT+13:00) Fakaofo\n - GMTP1300_TONGATAPU: (GMT+13:00) Tongatapu",
        "title": "Справочник таймзон"
      },
      "ReaderDirectionType": {
        "type": "string",
        "enum": [
          "IN",
          "OUT"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - IN: Вход\n - OUT: Выход",
        "title": "Направление"
      },
      "RelayOpenLockType": {
        "type": "string",
        "enum": [
          "ELECTROMAGNETIC",
          "ELECTROMECHANICAL"
        ],
        "description": "- LOCK_TYPE_UNKNOWN: Значение не указано\n - ELECTROMAGNETIC: Электромагнитный (state_operation)\n - ELECTROMECHANICAL: Электромеханический (pulse_operation)",
        "title": "Тип замка"
      },
      "SafeCityOsdPlacementType": {
        "type": "string",
        "enum": [
          "TOP_LEFT",
          "TOP_RIGHT",
          "BOTTOM_LEFT",
          "BOTTOM_RIGHT"
        ],
        "description": "- PLACEMENT_TYPE_UNKNOWN: Значение не указано\n - TOP_LEFT: Сверху слева\n - TOP_RIGHT: Сверху справа\n - BOTTOM_LEFT: Снизу слева\n - BOTTOM_RIGHT: Снизу справа",
        "title": "Тип размещения текста"
      },
      "SafeCityOsdShowDatetimeType": {
        "type": "string",
        "enum": [
          "ABSENT",
          "DAY_TIME",
          "TIME"
        ],
        "description": "- SHOW_DATETIME_TYPE_UNKNOWN: Значение не указано\n - ABSENT: Формат отсутствует\n - DAY_TIME: День и время yyyy-mm-dd HH:MM:SS\n - TIME: Время HH:MM:SS",
        "title": "Тип добавления формата даты"
      },
      "SavingErrorDuplicateName": {
        "type": "object",
        "title": "Профиль с таким наименованием уже существует"
      },
      "SavingErrorProfileIsNotSupported": {
        "type": "object",
        "properties": {
          "profileIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Список идентификаторов профилей, которые не поддерживаются на считывателе"
          }
        },
        "title": "Профиль не поддерживается для этого считывателя"
      },
      "SavingErrorProfileNotFound": {
        "type": "object",
        "title": "Выбранный профиль не найден"
      },
      "SavingErrorReaderNotFound": {
        "type": "object",
        "title": "Считыватель не найден"
      },
      "SavingErrorTooMuchEncryptionProfiles": {
        "type": "object",
        "title": "Превышено допустимое количество профилей шифрования"
      },
      "SyslogSettingsLogLevelType": {
        "type": "string",
        "enum": [
          "EMERGENCY",
          "ALERT",
          "CRIT",
          "ERROR",
          "WARN",
          "NOTE",
          "INFO",
          "DEBUG"
        ],
        "description": "- LOG_LEVEL_TYPE_UNKNOWN: Значение не указано\n - EMERGENCY: Система не пригодна для использования\n - ALERT: Требуются немедленные меры\n - CRIT: Сообщение о критическом состоянии\n - ERROR: Сообщение об ошибочном состоянии\n - WARN: Предупреждение\n - NOTE: Сообщение о значительном нормальном событии\n - INFO: Информационное сообщение\n - DEBUG: Сообщение отладочного уровня",
        "title": "Уровень логирования"
      },
      "SyslogSettingsProtocolType": {
        "type": "string",
        "enum": [
          "UDP",
          "TCP"
        ],
        "description": "- PROTOCOL_TYPE_UNKNOWN: Значение не указано\n - UDP: Протокол UDP\n - TCP: Протокол TCP",
        "title": "Тип протокола"
      },
      "TickerModeType": {
        "type": "string",
        "enum": [
          "OFF",
          "RUNNING_LINE",
          "LINE_1_BY_1"
        ],
        "description": "- MODE_TYPE_UNKNOWN: Значение не указано\n - OFF: Выключен\n - RUNNING_LINE: Бегущая строка\n - LINE_1_BY_1: Строка одна за другой",
        "title": "Режим строки"
      },
      "UserPermission": {
        "type": "object",
        "properties": {
          "permissionName": {
            "type": "string",
            "example": "can_alarm",
            "title": "Имя разрешения"
          },
          "isEnabled": {
            "type": "boolean",
            "example": "true",
            "title": "Наличие разрешения"
          }
        },
        "title": "Права доступа",
        "required": [
          "permissionName",
          "isEnabled"
        ]
      },
      "VideoChannelFlowControlModeType": {
        "type": "string",
        "enum": [
          "VBR",
          "CBR",
          "CVBR",
          "AVBR",
          "FIXP",
          "QVBR"
        ],
        "description": "- FLOW_CONTROL_MODE_TYPE_UNKNOWN: Значение не указано\n - VBR: Режим VBR\n - CBR: Режим CBR\n - CVBR: Режим CVBR\n - AVBR: Режим AVBR\n - FIXP: Режим FIXP\n - QVBR: Режим QVBR",
        "title": "Режим Flow control mode"
      },
      "VideoChannelFormatType": {
        "type": "string",
        "enum": [
          "MPEG",
          "H264",
          "H264_PLUS",
          "H265"
        ],
        "description": "- FORMAT_TYPE_UNKNOWN: Значение не указано\n - MPEG: Формат mjpeg\n - H264: Формат h.264\n - H264_PLUS: Формат h.264+\n - H265: Формат h.265",
        "title": "Формат видео"
      },
      "VideoChannelProfileType": {
        "type": "string",
        "enum": [
          "PROFILE_HIGH",
          "PROFILE_MAIN",
          "PROFILE_BASE"
        ],
        "description": "- PROFILE_TYPE_UNKNOWN: Значение не указано\n - PROFILE_HIGH: Высокий\n - PROFILE_MAIN: Основной\n - PROFILE_BASE: Базовый",
        "title": "Профиль"
      },
      "VideoChannelResolutionType": {
        "type": "string",
        "enum": [
          "R2K",
          "FULLHD",
          "HD",
          "SD",
          "R4CIF",
          "VGA"
        ],
        "description": "- RESOLUTION_TYPE_UNKNOWN: Значение не указано\n - R2K: Тип разрешения 2K 2560*1440\n - FULLHD: Тип разрешения FULLHD 1920*1080\n - HD: Тип разрешения HD 1280*720\n - SD: Тип разрешения SD 720*576\n - R4CIF: Тип разрешения 4CIF 704*576\n - VGA: Тип разрешения VGA 640*480",
        "title": "Тип разрешения видео"
      },
      "devicev1EncryptionProfile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор.\nТип: Guid"
          },
          "title": {
            "type": "string",
            "title": "Наименование"
          },
          "type": {
            "title": "Тип",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EncryptionProfileType"
              }
            ]
          },
          "sectorNumber": {
            "type": "integer",
            "format": "int32",
            "title": "Номер сектора"
          },
          "blockNumber": {
            "type": "integer",
            "format": "int32",
            "title": "Номер блока"
          },
          "startIndex": {
            "type": "integer",
            "format": "int32",
            "title": "Первый байт в блоке"
          },
          "endIndex": {
            "type": "integer",
            "format": "int32",
            "title": "Последний байт в блоке"
          },
          "password": {
            "type": "string",
            "title": "Пароль.\nНе возвращается с сервера.\nTODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах"
          }
        },
        "title": "Профиль шифрования",
        "required": [
          "title",
          "type",
          "sectorNumber",
          "blockNumber",
          "startIndex",
          "endIndex"
        ]
      },
      "protobufAny": {
        "type": "object",
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "additionalProperties": {},
        "title": "Произвольный JSON"
      },
      "rpcStatus": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/protobufAny"
            }
          }
        },
        "title": "Ошибка транспортного слоя"
      },
      "v1Capability": {
        "type": "object",
        "properties": {
          "encryptionProfile": {
            "title": "Профиль шифрования",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CapabilityEncryptionProfile"
              }
            ]
          }
        },
        "title": "Возможность устройства"
      },
      "v1CapabilityEncryptionProfile": {
        "type": "object",
        "title": "Профиль шифрования"
      },
      "v1CapabilityFilter": {
        "type": "object",
        "title": "Фильтр возможностей устройства"
      },
      "v1Code": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": 456778,
            "title": "Код доступа",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "example": "Номер 45",
            "title": "Описание",
            "maxLength": 100
          },
          "relayIndexes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Идентификаторы реле.\nДиапазон: 1..64"
          }
        },
        "title": "Код доступа",
        "required": [
          "code"
        ]
      },
      "v1CodePaging": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1CodeSavingError": {
        "type": "object",
        "properties": {
          "relayNotFound": {
            "title": "Реле не найдено",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CodeSavingErrorRelayNotFound"
              }
            ]
          }
        },
        "title": "Ошибки сохранения"
      },
      "v1CodeSavingErrorRelayNotFound": {
        "type": "object",
        "title": "Реле не найдено"
      },
      "v1ConciergeSettings": {
        "type": "object",
        "properties": {
          "isConciergeOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг включения Concierge вызова"
          },
          "sipInvite": {
            "type": "string",
            "example": "+74712999999_tag1=+7471334455_tag2=10.20.30.40",
            "title": "Параметр SIP Invite для Concierge вызова.\nПроизвольная строка которая передается в SIP сервер.\nДиапазон: 1..128",
            "maxLength": 128,
            "minLength": 1
          },
          "sipServer": {
            "type": "string",
            "example": "sip.acme.io:5060",
            "title": "Параметр SIP Server для Concierge вызова.\nПри пустом sip_server будет использован сервер SIP регистрации"
          }
        },
        "title": "Настройки Concierge",
        "required": [
          "isConciergeOn",
          "sipInvite"
        ]
      },
      "v1DeleteCodeListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество удаленных"
          }
        },
        "title": "Ответ на запрос удаления списка кодов доступа"
      },
      "v1DeleteCodeResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteCodeResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления одного кода доступа"
      },
      "v1DeleteCodeResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteEncryptionProfileListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество удаленных"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteEncryptionProfileListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления списка сущностей EncryptionProfile по фильтру"
      },
      "v1DeleteEncryptionProfileListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "deleting": {
            "title": "Ошибка удаления",
            "allOf": [
              {
                "$ref": "#/components/schemas/EncryptionProfileDeletingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteEncryptionProfileResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество удаленных"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteEncryptionProfileResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления единичной сущности EncryptionProfile по ключу"
      },
      "v1DeleteEncryptionProfileResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "deleting": {
            "title": "Ошибка удаления",
            "allOf": [
              {
                "$ref": "#/components/schemas/EncryptionProfileDeletingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteRfidListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество удаленных"
          }
        },
        "title": "Ответ на запрос удаления списка сущностей Rfid по фильтру"
      },
      "v1DeleteRfidResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteRfidResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления единичной сущности Rfid по ключу"
      },
      "v1DeleteRfidResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteRoomListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество удаленных"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteRoomListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления списка настроек квартиры"
      },
      "v1DeleteRoomListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteRoomResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteRoomResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления настроек квартиры"
      },
      "v1DeleteRoomResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteSafeCityEmergencyFileResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteSafeCityEmergencyFileResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления единичной сущности SafeCityEmergencyFile по ключу"
      },
      "v1DeleteSafeCityEmergencyFileResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1DeleteUserResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления единичной сущности User по ключу"
      },
      "v1DeviceInfo": {
        "type": "object",
        "properties": {
          "firmwareVersion": {
            "type": "string",
            "example": "3.5.0.0.1.27.29",
            "title": "Версия программного обеспечения"
          },
          "hardwareVersion": {
            "type": "string",
            "example": "rev5.5.6.1.2",
            "title": "Версия аппаратного обеспечения"
          },
          "model": {
            "type": "string",
            "example": "Beward DS86017CP",
            "title": "Модель"
          },
          "macAddress": {
            "type": "string",
            "example": "00:1b:63:84:45:e6",
            "title": "MAC-адрес.\nДиапазон: 17..17.\nПаттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/",
            "pattern": "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$"
          },
          "ip": {
            "type": "string",
            "example": "10.54.17.23",
            "title": "IP адрес.\nДиапазон: 7..15.\nПаттерн: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/",
            "maxLength": 15,
            "minLength": 7,
            "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
          },
          "serialNumber": {
            "type": "string",
            "example": "0000145996",
            "title": "Серийный номер"
          },
          "uptime": {
            "type": "integer",
            "format": "int32",
            "example": 3600765,
            "title": "Время работы в секундах.\nДиапазон: 0..2147483647",
            "maximum": 2147483647
          },
          "mcFirmwareVersion": {
            "type": "string",
            "example": "7.8.0.0.1.27.29",
            "title": "Версия программного обеспечения микроконтроллера"
          }
        },
        "title": "Общая информация об устройстве"
      },
      "v1DoorSchema": {
        "type": "object",
        "properties": {
          "doorSchemaType": {
            "title": "Тип режима работы контроллера",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DoorSchemaType"
              }
            ]
          }
        },
        "title": "Режим работы контроллера",
        "required": [
          "doorSchemaType"
        ]
      },
      "v1DoorSchemaType": {
        "type": "string",
        "enum": [
          "NORMAL",
          "MIXED"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - NORMAL: Две независимые двери на вход.\nРежим по умолчанию. Восстанавливается после обновления прошивки и сброса настроек\n - MIXED: Две совмещенные двери на вход и выход (по кнопке)",
        "title": "Тип режима работы контроллера"
      },
      "v1DtmfSettings": {
        "type": "object",
        "properties": {
          "isRfcOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг приема DTMF сигнала в варианте RFC"
          },
          "isInboundOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг приема DTMF сигнала в варианте inbound"
          },
          "isSipinfoOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг приема DTMF сигнала в варианте sipinfo"
          }
        },
        "title": "Настройки DTMF"
      },
      "v1EditConciergeSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Concierge",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ConciergeSettings"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditConciergeSettingsResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек Concierge"
      },
      "v1EditConciergeSettingsResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditDoorSchemaResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Режим работы контроллера",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DoorSchema"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditDoorSchemaResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования режима работы контроллера"
      },
      "v1EditDoorSchemaResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditDtmfSettingsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditDtmfSettingsResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек DTMF"
      },
      "v1EditDtmfSettingsResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditFacerecResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditFacerecResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек Face Recognition"
      },
      "v1EditFacerecResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditFtpResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки FTP",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Ftp"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditFtpResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек FTP"
      },
      "v1EditFtpResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditNtpResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditNtpResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек NTP"
      },
      "v1EditNtpResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditReaderResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditReaderResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования считывателя"
      },
      "v1EditReaderResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ReaderSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditRelayPropsDtmfResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditRelayPropsDtmfResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на установку настроек DTMF"
      },
      "v1EditRelayPropsDtmfResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на установку настроек DTMF"
      },
      "v1EditRelayPropsOpenResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditRelayPropsOpenResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на установку настроек открытия реле"
      },
      "v1EditRelayPropsOpenResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на установку настроек открытия реле"
      },
      "v1EditSacResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Smart Auto Collect",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Sac"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditSacResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек Smart Auto Collect"
      },
      "v1EditSacResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditSafeCityOsdResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки OSD",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SafeCityOsd"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditSafeCityOsdResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек OSD"
      },
      "v1EditSafeCityOsdResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditSipAccountResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditSipAccountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования Sip-аккаунта"
      },
      "v1EditSipAccountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса редактирования Sip-аккаунта"
      },
      "v1EditSipTimeoutSettingsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditSipTimeoutSettingsResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек максимального времени общения и дозвона"
      },
      "v1EditSipTimeoutSettingsResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса редактирования настроек максимального времени общения и дозвона"
      },
      "v1EditSosResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки SOS",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Sos"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditSosResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек SOS"
      },
      "v1EditSosResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditSyslogSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Syslog-сервера",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SyslogSettings"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditSyslogSettingsResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек Syslog-сервера"
      },
      "v1EditSyslogSettingsResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditTickerResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditTickerResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос настройки Ticker"
      },
      "v1EditTickerResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EditVideoChannelResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки видеоконфига",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1VideoChannel"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EditVideoChannelResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования единичной сущности VideoChannel по ключу"
      },
      "v1EditVideoChannelResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1EmergencyScenario": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string",
            "example": "Happy_new_year.wav",
            "title": "Имя файла"
          },
          "totalDuration": {
            "type": "integer",
            "format": "int32",
            "example": 3600,
            "title": "Максимальная общая длительность оповещения, в секундах.\n# Диапазон: 0..65536"
          },
          "playbackPerTick": {
            "type": "integer",
            "format": "int32",
            "example": 3,
            "title": "Количество воспроизведений файла в каждом цикле оповещения на одном направлении (трубка или динамик).\n# Диапазон: 0..65536"
          },
          "tickCount": {
            "type": "integer",
            "format": "int32",
            "example": 10,
            "title": "Количество воспроизведений циклов оповещения.\n# Диапазон: 0..65536"
          },
          "playOrderType": {
            "title": "Тип проигрывания",
            "allOf": [
              {
                "$ref": "#/components/schemas/EmergencyScenarioPlayOrderType"
              }
            ]
          }
        },
        "title": "Сценарий оповещения",
        "required": [
          "fileName",
          "totalDuration",
          "playbackPerTick",
          "tickCount",
          "playOrderType"
        ]
      },
      "v1EncryptionProfileFilter": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "title": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\nПоиск производится по полям:\n# - Наименование"
          }
        },
        "title": "Фильтр по профилям шифрования"
      },
      "v1EncryptionProfileSavingError": {
        "type": "object",
        "properties": {
          "duplicateName": {
            "title": "Профиль с таким наименованием уже существует",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorDuplicateName"
              }
            ]
          },
          "tooMuchEncryptionProfiles": {
            "title": "Превышено допустимое количество профилей шифрования",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorTooMuchEncryptionProfiles"
              }
            ]
          }
        },
        "title": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами"
      },
      "v1EncryptionProfileType": {
        "type": "string",
        "enum": [
          "SL3",
          "SL1"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - SL3: Тип SL3\n - SL1: Тип SL1",
        "title": "Тип"
      },
      "v1Facerec": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "example": "true",
            "title": "Флаг включения Face Recognition"
          },
          "mainAddress": {
            "type": "string",
            "example": "fr.key.rt.ru:80",
            "title": "Адрес"
          },
          "altAddress": {
            "type": "string",
            "example": "fr.key.rt.ru:8080",
            "title": "Альтернативный адрес"
          },
          "request": {
            "type": "string",
            "example": "/api/v1/recognize/31700",
            "title": "Путь запроса к серверу"
          },
          "authorization": {
            "type": "string",
            "example": "intercom_token",
            "title": "Токен"
          },
          "groups": {
            "type": "array",
            "example": [
              "this_group",
              "that_group"
            ],
            "items": {
              "type": "string"
            },
            "title": "Идентификаторы групп профилей в identix"
          },
          "relayIndex": {
            "type": "integer",
            "format": "int32",
            "example": 1,
            "title": "Индекс реле.\nДиапазон: 1..32767",
            "maximum": 32767,
            "minimum": 1
          },
          "sendInterval": {
            "type": "integer",
            "format": "int32",
            "example": 200,
            "title": "Интервал отправки, миллисекунд",
            "maximum": 1000
          },
          "faceLiveness": {
            "type": "number",
            "format": "float",
            "example": "0.95",
            "title": "Доступность FR",
            "maximum": 1
          },
          "minFaceSize": {
            "type": "integer",
            "format": "int32",
            "example": 320,
            "title": "Минимальный размер лица, пикселей"
          },
          "maxFaceSize": {
            "type": "integer",
            "format": "int32",
            "example": 1080,
            "title": "Максимальный размер лица, пикселей"
          },
          "addSize": {
            "type": "integer",
            "format": "int32",
            "example": 40,
            "title": "Добавление размера, процентов"
          }
        },
        "title": "Настройки Face Recognition",
        "required": [
          "isEnabled",
          "mainAddress",
          "request",
          "authorization"
        ]
      },
      "v1Ftp": {
        "type": "object",
        "properties": {
          "regServerAddress": {
            "type": "string",
            "example": "ftp.acme.io:21",
            "title": "Адрес FTP сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:21, ftp.acme.io:21",
            "minLength": 5
          },
          "login": {
            "type": "string",
            "example": "admin",
            "title": "Логин"
          },
          "password": {
            "type": "string",
            "example": "pwd_admin",
            "title": "Пароль.\nНе возвращается с сервера.\nTODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах"
          }
        },
        "title": "Настройки FTP"
      },
      "v1GateMode": {
        "type": "object",
        "properties": {
          "isGateModeOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг включения Gate режима.\ntrue=gate; false=ordinary"
          },
          "houses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1House"
            },
            "title": "Дома Gate режима.\nПри редактировании массив полностью заменяется на отправленный",
            "maxItems": 100,
            "minItems": 1
          }
        },
        "title": "Настройки Gate режима"
      },
      "v1GetCapabilityListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Capability"
            },
            "title": "Список Capability"
          }
        },
        "title": "Ответ на запрос получения возможностей устройства"
      },
      "v1GetCodeCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество"
          }
        },
        "title": "Ответ на запрос получения количества кодов доступа"
      },
      "v1GetCodeListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Code"
            },
            "title": "Список Code"
          }
        },
        "title": "Ответ на запрос получения списка кодов доступа"
      },
      "v1GetCodeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Код доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Code"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения получения кода доступа"
      },
      "v1GetConciergeSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Concierge",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ConciergeSettings"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек Concierge"
      },
      "v1GetDoorSchemaResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Режим работы контроллера",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DoorSchema"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения режима работы контроллера"
      },
      "v1GetDtmfSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки DTMF",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DtmfSettings"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек DTMF"
      },
      "v1GetEncryptionProfileListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/devicev1EncryptionProfile"
            },
            "title": "Список EncryptionProfile"
          }
        },
        "title": "Ответ на запрос получения списка сущностей EncryptionProfile по фильтру"
      },
      "v1GetEncryptionProfileResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Профиль шифрования",
            "allOf": [
              {
                "$ref": "#/components/schemas/devicev1EncryptionProfile"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения единичной сущности EncryptionProfile по ключу"
      },
      "v1GetFacerecResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Face Recognition",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Facerec"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек Face Recognition"
      },
      "v1GetFtpResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки FTP",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Ftp"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек FTP"
      },
      "v1GetGateModeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Gate режима",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GateMode"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения Gate режима"
      },
      "v1GetNtpResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Ntp-сервера",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Ntp"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек NTP"
      },
      "v1GetReaderResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Считыватель",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Reader"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения считывателя"
      },
      "v1GetRelayDtmfListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1RelayDtmf"
            },
            "title": "Настройки DTMF реле"
          }
        },
        "title": "Ответ на запрос получения настроек DTMF реле"
      },
      "v1GetRelayOpenListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1RelayOpen"
            },
            "title": "Настройки открытия реле"
          }
        },
        "title": "Ответ на запрос получения настроек открытия реле"
      },
      "v1GetRelayStatusListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1RelayState"
            },
            "title": "Список состояний реле"
          }
        },
        "title": "Ответ на запрос получения статусов реле устройства"
      },
      "v1GetRfidCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество"
          }
        },
        "title": "Ответ на запрос получения количества сущностей Rfid по фильтру"
      },
      "v1GetRfidListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Rfid"
            },
            "title": "Список Rfid"
          }
        },
        "title": "Ответ на запрос получения списка сущностей Rfid по фильтру"
      },
      "v1GetRfidResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Rfid"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения единичной сущности Rfid по ключу"
      },
      "v1GetRoomCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего количество"
          }
        },
        "title": "Ответ на запрос получения количества квартир"
      },
      "v1GetRoomListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Room"
            },
            "title": "Список Room"
          }
        },
        "title": "Ответ на запрос получения списка настроек квартир"
      },
      "v1GetRoomResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Room"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек квартиры"
      },
      "v1GetRtspResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки RTSP",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Rtsp"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек RTSP"
      },
      "v1GetSacResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Smart Auto Collect",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Sac"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек Smart Auto Collect"
      },
      "v1GetSafeCityEmergencyFileListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "example": [
              {
                "file_name": "Happy_new_year.wav"
              },
              {
                "file_name": "Jingle_Bells.wav"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/v1SafeCityEmergencyFile"
            },
            "title": "Список SafeCityEmergencyFile"
          }
        },
        "title": "Ответ на запрос получения списка файлов оповещения"
      },
      "v1GetSafeCityEmergencyStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Статус оповещения",
            "allOf": [
              {
                "$ref": "#/components/schemas/GetSafeCityEmergencyStatusResponseCurrentStatus"
              }
            ]
          }
        },
        "title": "Ответ на запрос на получение статуса оповещения"
      },
      "v1GetSafeCityOsdResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки OSD",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SafeCityOsd"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек OSD"
      },
      "v1GetSipAccountListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1SipAccount"
            },
            "title": "Массив Sip-аккаунтов"
          }
        },
        "title": "Ответ на запрос получения списка Sip-аккаунтов"
      },
      "v1GetSipAccountStatusListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSipAccountStatusListResponseSipStatus"
            },
            "title": "Статус аккаунтов Sip"
          }
        },
        "title": "Ответ на запрос получения статусов регистрации Sip-аккаунтов"
      },
      "v1GetSipTimeoutSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки максимального времени общения и дозвона",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipTimeoutSettings"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек максимального времени общения и дозвона"
      },
      "v1GetSosResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки SOS",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Sos"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек SOS"
      },
      "v1GetSyslogSettingsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Syslog-сервера",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SyslogSettings"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения настроек Syslog-сервера"
      },
      "v1GetSystemInfoResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Общая информация об устройстве",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceInfo"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения общей информации об устройстве"
      },
      "v1GetTickerResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Ticker",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Ticker"
              }
            ]
          }
        },
        "title": "Ответ на апрос получения настроек Ticker"
      },
      "v1GetUserListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1User"
            },
            "title": "Список User"
          }
        },
        "title": "Ответ на запрос получения списка сущностей User по фильтру"
      },
      "v1GetVideoChannelListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1VideoChannel"
            },
            "title": "Список VideoChannel"
          }
        },
        "title": "Ответ на запрос получения списка сущностей VideoChannel по фильтру"
      },
      "v1House": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "title": "Адрес дома"
          },
          "prefix": {
            "type": "string",
            "title": "Номер дома (подъезда)"
          },
          "roomRange": {
            "title": "Диапазон квартир.\nЕсли не задан, то устройство позволяет набор любой квартиры",
            "allOf": [
              {
                "$ref": "#/components/schemas/HouseRoomRange"
              }
            ]
          },
          "sipServer": {
            "type": "string",
            "example": "sip.acme.io:5060",
            "title": "Адрес Sip сервера.\nПри пустом sip_server будет использован сервер SIP регистрации"
          },
          "inviteTemplateType": {
            "title": "Вариант подстановки номера дома и квартиры в SIP Invite.\nПри отсутствии значения используется вариант H4LZ_F4LZ",
            "allOf": [
              {
                "$ref": "#/components/schemas/HouseInviteTemplateType"
              }
            ]
          }
        },
        "title": "Дом Gate режима",
        "required": [
          "address",
          "prefix"
        ]
      },
      "v1Ntp": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "example": "ntp.acme.io:4460",
            "title": "Адрес Ntp-сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:123, ntp.acme.io:4460",
            "minLength": 5
          },
          "timeZoneType": {
            "title": "Таймзона",
            "allOf": [
              {
                "$ref": "#/components/schemas/NtpTimeZoneType"
              }
            ]
          }
        },
        "title": "Настройки Ntp-сервера"
      },
      "v1PostFtpBackupApplyRequest": {
        "type": "object",
        "properties": {
          "ftpPath": {
            "type": "string",
            "example": "backups/annual",
            "title": "Имя FTP папки"
          },
          "fileName": {
            "type": "string",
            "example": "backup01012000.gz",
            "title": "Имя файла бекапа"
          },
          "restoreOptions": {
            "type": "string",
            "example": "after_reboot",
            "title": "Опции восстановления"
          }
        },
        "title": "Запрос применения бекапа",
        "required": [
          "ftpPath",
          "fileName"
        ]
      },
      "v1PostFtpBackupApplyResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostFtpBackupApplyResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос применения бекапа"
      },
      "v1PostFtpBackupApplyResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса создания бекапа"
      },
      "v1PostFtpBackupRequest": {
        "type": "object",
        "properties": {
          "ftpPath": {
            "type": "string",
            "example": "backups/annual",
            "title": "Имя FTP папки"
          },
          "fileName": {
            "type": "string",
            "example": "backup01012000.gz",
            "title": "Имя файла бекапа"
          },
          "backupType": {
            "type": "string",
            "example": "annual",
            "title": "Тип бекапа"
          }
        },
        "title": "Запрос создания бекапа",
        "required": [
          "ftpPath",
          "fileName",
          "backupType"
        ]
      },
      "v1PostFtpBackupResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostFtpBackupResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос создания бекапа"
      },
      "v1PostFtpBackupResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса создания бекапа"
      },
      "v1PostRelayCloseResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostRelayCloseResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос закрытия реле"
      },
      "v1PostRelayCloseResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса закрытия реле"
      },
      "v1PostRelayOpenPermanentlyResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostRelayOpenPermanentlyResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос открытия реле без дальнейшего закрытия"
      },
      "v1PostRelayOpenPermanentlyResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса открытия реле без дальнейшего закрытия"
      },
      "v1PostRelayOpenResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostRelayOpenResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос открытия реле"
      },
      "v1PostRelayOpenResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса открытия реле"
      },
      "v1PostSafeCityEmergencyStartRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Сценарий оповещения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EmergencyScenario"
              }
            ]
          }
        },
        "title": "Запрос на старт оповещения",
        "required": [
          "data"
        ]
      },
      "v1PostSafeCityEmergencyStartResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostSafeCityEmergencyStartResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на старт оповещения"
      },
      "v1PostSafeCityEmergencyStartResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "soundFileNotFound": {
            "title": "Звуковой файл не найден",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorSoundFileNotFound"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostSafeCityEmergencyStopRequest": {
        "type": "object",
        "title": "Запрос на прекращение оповещения через домофон"
      },
      "v1PostSafeCityEmergencyStopResponse": {
        "type": "object",
        "title": "Ответ на запрос на прекращение оповещения через домофон"
      },
      "v1PostSystemRebootRequest": {
        "type": "object",
        "title": "Запрос удаленной перезагрузки"
      },
      "v1PostSystemRebootResponse": {
        "type": "object",
        "title": "Ответ на запрос удаленной перезагрузки"
      },
      "v1PostUpdateApplyRequest": {
        "type": "object",
        "title": "Запрос применения обновления"
      },
      "v1PostUpdateApplyResponse": {
        "type": "object",
        "title": "Ответ на запрос применения обновления"
      },
      "v1PostUpdateDownloadRequest": {
        "type": "object",
        "properties": {
          "ftpPath": {
            "type": "string",
            "example": "updates/v2.215.15/",
            "title": "Имя FTP папки"
          },
          "fileName": {
            "type": "string",
            "example": "firmware01012000.gz",
            "title": "Имя файла обновления"
          },
          "updateMode": {
            "type": "string",
            "example": "full_override_update",
            "title": "Режим обновления"
          }
        },
        "title": "Запрос скачивания обновления",
        "required": [
          "ftpPath",
          "fileName",
          "updateMode"
        ]
      },
      "v1PostUpdateDownloadResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostUpdateDownloadResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос скачивания обновления"
      },
      "v1PostUpdateDownloadResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostUserNameReplaceRequestReplaceTo": {
        "type": "object",
        "properties": {
          "targetUsername": {
            "type": "string",
            "example": "johnDoe",
            "title": "Имя пользователя"
          }
        },
        "title": "Поле на замену",
        "required": [
          "targetUsername"
        ]
      },
      "v1PostUserNameReplaceResponse": {
        "type": "object",
        "title": "Ответ на запрос замены имени пользователя"
      },
      "v1PostUserPasswordReplaceRequestReplaceTo": {
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "example": "NewVeryStrongPassword",
            "title": "Пароль"
          }
        },
        "title": "Поле на замену"
      },
      "v1PostUserPasswordReplaceResponse": {
        "type": "object",
        "title": "Ответ на запрос замены пароля пользователя"
      },
      "v1PostUserPermissionReplaceRequestReplaceTo": {
        "type": "object",
        "properties": {
          "permission": {
            "type": "array",
            "example": [
              {
                "permission_name": "can_alarm",
                "is_enabled": true
              },
              {
                "permission_name": "can_reboot",
                "is_enabled": false
              }
            ],
            "items": {
              "$ref": "#/components/schemas/UserPermission"
            },
            "title": "Права доступа"
          }
        },
        "title": "Поле на замену"
      },
      "v1PostUserPermissionReplaceResponse": {
        "type": "object",
        "title": "Ответ на запрос замены разрешений пользователя"
      },
      "v1Reader": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор.\nid=100 - Считыватель внутренний.\nid=1 - Считыватель внешний №1.\nid=2 - Считыватель внешний №2 и тд"
          },
          "encryptionProfileIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Список идентификаторов профилей шифрования"
          },
          "relayIndexes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Список идентификаторов реле.\nДиапазон: 1..64"
          },
          "isNoneSecureMode": {
            "type": "boolean",
            "title": "Считыватель работает не в безопасном режиме (по UID)"
          },
          "directionType": {
            "title": "Направление",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReaderDirectionType"
              }
            ]
          }
        },
        "title": "Считыватель",
        "required": [
          "id",
          "encryptionProfileIds",
          "relayIndexes",
          "isNoneSecureMode"
        ]
      },
      "v1ReaderSavingError": {
        "type": "object",
        "properties": {
          "readerNotFound": {
            "title": "Считыватель не найден",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorReaderNotFound"
              }
            ]
          },
          "profileIsNotSupported": {
            "title": "Профиль не поддерживается для этого считывателя",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorProfileIsNotSupported"
              }
            ]
          },
          "profileNotFound": {
            "title": "Выбранный профиль не найден",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorProfileNotFound"
              }
            ]
          }
        },
        "title": "Ошибки сохранения"
      },
      "v1RelayDtmf": {
        "type": "object",
        "properties": {
          "relayIndex": {
            "type": "integer",
            "format": "int32",
            "example": 1,
            "title": "Индекс реле.\nДиапазон: 1..32767",
            "maximum": 32767,
            "minimum": 1
          },
          "dtmfCode": {
            "type": "string",
            "example": 5,
            "title": "DTMF код.\nДля разных реле допускается одинаковый DTMF код.\nОдин символ из 0,1,2,3,4,5,6,7,8,9,*,#",
            "maxLength": 1,
            "minLength": 1,
            "pattern": "^[0-9*#]{1,1}$"
          }
        },
        "title": "Настройки DTMF реле",
        "required": [
          "relayIndex"
        ]
      },
      "v1RelayOpen": {
        "type": "object",
        "properties": {
          "relayIndex": {
            "type": "integer",
            "format": "int32",
            "example": 1,
            "title": "Индекс реле.\nДиапазон: 1..32767",
            "maximum": 32767,
            "minimum": 1
          },
          "lockType": {
            "title": "Тип замка",
            "allOf": [
              {
                "$ref": "#/components/schemas/RelayOpenLockType"
              }
            ]
          },
          "openTimeGeneral": {
            "type": "integer",
            "format": "int32",
            "example": 10,
            "title": "Общее время открытия.\nДиапазон: 1..200",
            "maximum": 200,
            "minimum": 1
          },
          "openTimeEmergency": {
            "type": "integer",
            "format": "int32",
            "example": 10,
            "title": "Время открытия в секундах при экстренном оповещении.\nПри 0 - до конца экстренного оповещения.\nДиапазон: 0..3600",
            "maximum": 3600
          }
        },
        "title": "Настройки открытия реле",
        "required": [
          "relayIndex"
        ]
      },
      "v1RelayState": {
        "type": "object",
        "properties": {
          "relayIndex": {
            "type": "integer",
            "format": "int32",
            "example": 1,
            "title": "Индекс реле.\nДиапазон: 1..32767",
            "maximum": 32767,
            "minimum": 1
          },
          "stateType": {
            "title": "Состояние",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RelayStateStateType"
              }
            ]
          }
        },
        "title": "Состояние реле",
        "required": [
          "relayIndex"
        ]
      },
      "v1RelayStateStateType": {
        "type": "string",
        "enum": [
          "OPEN_TEMPORARY",
          "CLOSED",
          "OPEN_PERMANENT"
        ],
        "description": "- STATE_TYPE_UNKNOWN: Значение не указано\n - OPEN_TEMPORARY: Открыто временно\n - CLOSED: Закрыто\n - OPEN_PERMANENT: Открыто на всегда",
        "title": "Тип состояния"
      },
      "v1Rfid": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор UID [hex 14]"
          },
          "description": {
            "type": "string",
            "title": "Описание"
          },
          "secret": {
            "type": "string",
            "title": "Секрет [hex 14]"
          },
          "relayIndexes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Идентификаторы реле.\nДиапазон: 1..64"
          }
        },
        "title": "Ключ",
        "required": [
          "id"
        ]
      },
      "v1RfidFilter": {
        "type": "object",
        "properties": {
          "relayIndexes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам реле.\nДиапазон: 1..64"
          }
        },
        "title": "Фильтр ключей RFID.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ"
      },
      "v1RfidPaging": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1RfidSavingError": {
        "type": "object",
        "properties": {
          "relayNotFound": {
            "title": "Реле не найдено",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidSavingErrorRelayNotFound"
              }
            ]
          }
        },
        "title": "Ошибка запроса создания ключа"
      },
      "v1RfidSavingErrorRelayNotFound": {
        "type": "object",
        "title": "Реле не найдено"
      },
      "v1Room": {
        "type": "object",
        "properties": {
          "roomNumber": {
            "type": "string",
            "example": "325",
            "title": "Номер квартиры"
          },
          "sipForwardingNumber": {
            "type": "string",
            "example": "0041083630014L831",
            "title": "Номер Sip-переадресации вызова.\nДиапазон: 5..200",
            "maxLength": 200,
            "minLength": 5
          },
          "analogPhoneCmsNumber": {
            "type": "string",
            "example": "K1E9D8",
            "title": "Номер координатно-матричной аналоговой трубки.\nГде пример значения K1E9D8 - это К1 = коммутатор 1; Е9 = единицы 9; Д8 = десятки 8.\nПаттерн: /^[A-Za-z]\\d[A-Za-z]\\d[A-Za-z]\\d$/"
          },
          "analogPhoneDigitalNumber": {
            "type": "integer",
            "format": "int32",
            "example": "234",
            "title": "Номер цифровой трубки.\nДиапазон: 1..255"
          },
          "isAnalogPhoneBlocked": {
            "type": "boolean",
            "example": false,
            "title": "Признак блокировки аналоговой (CMS) или адресно-цифровой (digital headset) трубки"
          }
        },
        "title": "Квартира",
        "required": [
          "roomNumber"
        ]
      },
      "v1RoomFilter": {
        "type": "object",
        "properties": {
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартир.\nПри пустом массиве удалятся все квартиры"
          }
        },
        "title": "Фильтр квартир.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ"
      },
      "v1RoomPaging": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1Rtsp": {
        "type": "object",
        "properties": {
          "isRtspServerOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг включения RTSP сервера"
          }
        },
        "title": "Настройки RTSP",
        "required": [
          "isRtspServerOn"
        ]
      },
      "v1Sac": {
        "type": "object",
        "properties": {
          "isSacOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг включения Smart Auto Collect"
          },
          "minFlatNumber": {
            "type": "integer",
            "format": "int32",
            "example": 325,
            "title": "Минимальный номер квартиры",
            "maximum": 1000
          },
          "maxFlatNumber": {
            "type": "integer",
            "format": "int32",
            "example": 325,
            "title": "Максимальный номер квартиры",
            "maximum": 1000
          },
          "keyMask": {
            "type": "string",
            "example": "04**********80",
            "title": "Маска UID RFID ключа.\nПример 04**********80 = что означает, что uid ключа должен начинаться с 04, иметь 14 знаков и заканчиваться на 80.\nПример  ******** = что означает что uid ключа должен н иметь 8 знаков"
          }
        },
        "title": "Настройки Smart Auto Collect",
        "required": [
          "isSacOn"
        ]
      },
      "v1SafeCityEmergencyFile": {
        "type": "object",
        "properties": {
          "fileName": {
            "type": "string",
            "example": "Happy_new_year.wav",
            "title": "Имя файла"
          },
          "content": {
            "type": "string",
            "format": "byte",
            "example": "SGVsbG8gV29ybGQh",
            "title": "Тело файла, строка в кодировке Base64.\nНе возвращается с сервера.\nTODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах"
          }
        },
        "title": "Файл оповещения",
        "required": [
          "fileName"
        ]
      },
      "v1SafeCityOsd": {
        "type": "object",
        "properties": {
          "isOsdEnabled": {
            "type": "boolean",
            "example": "true",
            "title": "Флаг включения OSD"
          },
          "textline": {
            "type": "string",
            "example": "Lorem ipsum dolor sit amet consectetur adipiscing elit",
            "title": "Текст"
          },
          "textsize": {
            "type": "integer",
            "format": "int32",
            "example": 100,
            "title": "Размер текста, пикселей"
          },
          "placementType": {
            "title": "Размещение текста",
            "allOf": [
              {
                "$ref": "#/components/schemas/SafeCityOsdPlacementType"
              }
            ]
          },
          "showDatetimeType": {
            "title": "Вариант добавления даты",
            "allOf": [
              {
                "$ref": "#/components/schemas/SafeCityOsdShowDatetimeType"
              }
            ]
          },
          "isShowFps": {
            "type": "boolean",
            "example": "true",
            "title": "Флаг отображения количества кадров в секунду"
          },
          "isShowBitrate": {
            "type": "boolean",
            "title": "Флаг отображения битрейта"
          },
          "isShowCountOfStreams": {
            "type": "boolean",
            "title": "Флаг отображения количества потоков"
          },
          "isShowNameOfDevice": {
            "type": "boolean",
            "title": "Флаг отображения имени устройства"
          }
        },
        "title": "Настройки OSD"
      },
      "v1SaveCodeListRequest": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Code"
            },
            "title": "Список Code"
          }
        },
        "title": "Запрос на создание списка кодов доступа"
      },
      "v1SaveCodeListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Code"
            },
            "title": "Список Code"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1SaveCodeListResponseError"
            },
            "title": "Список ошибок"
          }
        },
        "title": "Ответ на создание списка кодов доступа"
      },
      "v1SaveCodeListResponseError": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "example": 456778,
            "title": "Код доступа",
            "maxLength": 100
          },
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CodeSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса",
        "required": [
          "code"
        ]
      },
      "v1SaveCodeRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Код доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Code"
              }
            ]
          }
        },
        "title": "Запрос создания кода доступа",
        "required": [
          "data"
        ]
      },
      "v1SaveCodeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Код доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Code"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SaveCodeResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос создания кода доступа"
      },
      "v1SaveCodeResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CodeSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1SaveEncryptionProfileRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Профиль шифрования",
            "allOf": [
              {
                "$ref": "#/components/schemas/devicev1EncryptionProfile"
              }
            ]
          }
        },
        "title": "Запрос на создание сущности EncryptionProfile",
        "required": [
          "data"
        ]
      },
      "v1SaveEncryptionProfileResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Профиль шифрования",
            "allOf": [
              {
                "$ref": "#/components/schemas/devicev1EncryptionProfile"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SaveEncryptionProfileResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на создание сущности EncryptionProfile"
      },
      "v1SaveEncryptionProfileResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EncryptionProfileSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1SaveGateModeRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Gate режима",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GateMode"
              }
            ]
          }
        },
        "title": "Запрос редактирования Gate режима",
        "required": [
          "data"
        ]
      },
      "v1SaveGateModeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки Gate режима",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GateMode"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SaveGateModeResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования Gate режима"
      },
      "v1SaveGateModeResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1SaveRfidListRequest": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Rfid"
            },
            "title": "Список Rfid"
          }
        },
        "title": "Запрос на редактирование списка сущностей Rfid"
      },
      "v1SaveRfidListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Rfid"
            },
            "title": "Список Rfid"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1SaveRfidListResponseError"
            },
            "title": "Список ошибок"
          }
        },
        "title": "Ответ на запрос на редактирование списка сущностей Rfid"
      },
      "v1SaveRfidListResponseError": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор UID [hex 14]"
          },
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса",
        "required": [
          "id"
        ]
      },
      "v1SaveRfidRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Rfid"
              }
            ]
          }
        },
        "title": "Запрос на создания/редактирование сущности Rfid",
        "required": [
          "data"
        ]
      },
      "v1SaveRfidResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Rfid"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SaveRfidResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на создания/редактирование сущности Rfid"
      },
      "v1SaveRfidResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1SaveRoomListRequest": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Room"
            },
            "title": "Список Room"
          }
        },
        "title": "Запрос сохранения списка настроек квартиры"
      },
      "v1SaveRoomListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Room"
            },
            "title": "Список Room"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1SaveRoomListResponseError"
            },
            "title": "Список ошибок"
          }
        },
        "title": "Ответ на запрос сохранения списка настроек квартиры"
      },
      "v1SaveRoomListResponseError": {
        "type": "object",
        "properties": {
          "roomNumber": {
            "type": "string",
            "example": "325",
            "title": "Номер квартиры"
          },
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса",
        "required": [
          "roomNumber"
        ]
      },
      "v1SaveRoomRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Room"
              }
            ]
          }
        },
        "title": "Запрос сохранения настроек квартиры",
        "required": [
          "data"
        ]
      },
      "v1SaveRoomResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Room"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SaveRoomResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения настроек квартиры"
      },
      "v1SaveRoomResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1SaveRtspRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки RTSP",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Rtsp"
              }
            ]
          }
        },
        "title": "Запрос редактирования настроек RTSP",
        "required": [
          "data"
        ]
      },
      "v1SaveRtspResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Настройки RTSP",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Rtsp"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SaveRtspResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос редактирования настроек RTSP"
      },
      "v1SaveRtspResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1SaveSafeCityEmergencyFileRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Файл оповещения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SafeCityEmergencyFile"
              }
            ]
          }
        },
        "title": "Запрос загрузки файла на устройство",
        "required": [
          "data"
        ]
      },
      "v1SaveSafeCityEmergencyFileResponse": {
        "type": "object",
        "title": "Ответ на запрос загрузки файла на устройство"
      },
      "v1SaveUserRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Пользователь",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1User"
              }
            ]
          }
        },
        "title": "Запрос на создания/редактирование сущности User",
        "required": [
          "data"
        ]
      },
      "v1SaveUserResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Пользователь",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1User"
              }
            ]
          }
        },
        "title": "Ответ на запрос на создания/редактирование сущности User"
      },
      "v1SipAccount": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "example": "1454647",
            "title": "ID Sip-аккаунта"
          },
          "name": {
            "type": "string",
            "example": "0018155318002",
            "title": "Имя"
          },
          "number": {
            "type": "string",
            "example": "45464738",
            "title": "Номер"
          },
          "user": {
            "type": "string",
            "example": "admin",
            "title": "Имя пользователя"
          },
          "password": {
            "type": "string",
            "example": "pwd_admin",
            "title": "Пароль.\nНе возвращается с сервера.\nTODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах"
          },
          "regServerAddress": {
            "type": "string",
            "example": "reg.acme.io:5060",
            "title": "Адрес REG-сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:5060, reg.acme.io:5060",
            "minLength": 5
          },
          "sipServerAddress": {
            "type": "string",
            "example": "sip.acme.io:5060",
            "title": "Адрес SIP-сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:5060, sip.acme.io:5060",
            "minLength": 5
          },
          "sipProxyAddress": {
            "type": "string",
            "example": "proxy.acme.io:5060",
            "title": "Адрес SIP-прокси.\nСетевой адрес и порт.\nПример: 192.168.0.1:5060, proxy.acme.io:5060",
            "minLength": 5
          }
        },
        "title": "Sip-аккаунт",
        "required": [
          "accountId"
        ]
      },
      "v1SipTimeoutSettings": {
        "type": "object",
        "properties": {
          "callTimeout": {
            "type": "integer",
            "format": "int32",
            "example": 100,
            "title": "Максимальное время дозвона в секундах",
            "maximum": 2000,
            "minimum": 1
          },
          "talkTimeout": {
            "type": "integer",
            "format": "int32",
            "example": 100,
            "title": "Максимальное время общения в секундах",
            "maximum": 2000,
            "minimum": 1
          }
        },
        "title": "Настройки максимального времени общения и дозвона"
      },
      "v1Sos": {
        "type": "object",
        "properties": {
          "isSosOn": {
            "type": "boolean",
            "example": true,
            "title": "Флаг включения SOS вызова"
          },
          "sipInvite": {
            "type": "string",
            "example": "+74712999999_tag1=+7471334455_tag2=10.20.30.40",
            "title": "Параметр SIP Invite для SOS вызова.\nПроизвольная строка которая передается в SIP сервер.\nДиапазон: 1..128",
            "maxLength": 128,
            "minLength": 1
          },
          "sipServer": {
            "type": "string",
            "example": "sip.acme.io:5060",
            "title": "Параметр SIP Server для SOS вызова.\nПри пустом sip_server будет использован сервер SIP регистрации"
          }
        },
        "title": "Настройки SOS",
        "required": [
          "isSosOn",
          "sipInvite"
        ]
      },
      "v1SyslogSettings": {
        "type": "object",
        "properties": {
          "protocolType": {
            "title": "Тип протокола",
            "allOf": [
              {
                "$ref": "#/components/schemas/SyslogSettingsProtocolType"
              }
            ]
          },
          "address": {
            "type": "string",
            "example": "syslog.acme.io:514",
            "title": "Адрес Syslog-сервера.\nСетевой адрес и порт.\nПример: 192.168.0.1:514, syslog.acme.io:6514",
            "minLength": 5
          },
          "logLevelType": {
            "title": "Уровень логирования",
            "allOf": [
              {
                "$ref": "#/components/schemas/SyslogSettingsLogLevelType"
              }
            ]
          }
        },
        "title": "Настройки Syslog-сервера"
      },
      "v1Ticker": {
        "type": "object",
        "properties": {
          "modeType": {
            "title": "Режим строки",
            "allOf": [
              {
                "$ref": "#/components/schemas/TickerModeType"
              }
            ]
          },
          "speed": {
            "type": "integer",
            "format": "int32",
            "example": 200,
            "title": "Скорость, символов в минуту"
          },
          "delay": {
            "type": "integer",
            "format": "int32",
            "example": 3,
            "title": "Задержка смены строки, секунд"
          },
          "lines": {
            "type": "array",
            "example": [
              "Lorem ipsum dolor sit amet",
              "consectetur adipiscing elit",
              "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"
            ],
            "items": {
              "type": "string",
              "minLength": 5
            },
            "title": "Строки"
          }
        },
        "title": "Настройки Ticker"
      },
      "v1User": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "example": "johnDoe",
            "title": "Имя пользователя"
          },
          "password": {
            "type": "string",
            "example": "***",
            "title": "Пароль.\nНе возвращается с сервера.\nTODO: в генерации сваггера не показывать INPUT_ONLY поля в ответах"
          },
          "permission": {
            "type": "array",
            "example": [
              {
                "permission_name": "can_alarm",
                "is_enabled": true
              },
              {
                "permission_name": "can_reboot",
                "is_enabled": false
              }
            ],
            "items": {
              "$ref": "#/components/schemas/UserPermission"
            },
            "title": "Права доступа"
          }
        },
        "title": "Пользователь",
        "required": [
          "username"
        ]
      },
      "v1ValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования прото"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации",
        "required": [
          "path",
          "message"
        ]
      },
      "v1VideoChannel": {
        "type": "object",
        "properties": {
          "chanelNumber": {
            "type": "integer",
            "format": "int32",
            "example": 0,
            "title": "Порядковый номер видеоконфига",
            "maximum": 10
          },
          "isEnabled": {
            "type": "boolean",
            "example": true,
            "title": "Флаг активности"
          },
          "resolutionType": {
            "title": "Тип разрешения видео",
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoChannelResolutionType"
              }
            ]
          },
          "formatType": {
            "title": "Формат видео",
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoChannelFormatType"
              }
            ]
          },
          "profileType": {
            "title": "Профиль",
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoChannelProfileType"
              }
            ]
          },
          "fps": {
            "type": "integer",
            "format": "int32",
            "example": 25,
            "title": "Частота кадров",
            "maximum": 30,
            "minimum": 1
          },
          "gop": {
            "type": "integer",
            "format": "int32",
            "example": 25,
            "title": "Периодичность опорного кадра",
            "maximum": 200,
            "minimum": 1
          },
          "flowControlModeType": {
            "title": "Режим FlowControlModeType",
            "allOf": [
              {
                "$ref": "#/components/schemas/VideoChannelFlowControlModeType"
              }
            ]
          },
          "biterate": {
            "type": "integer",
            "format": "int32",
            "example": 100,
            "title": "Целевая скорость потока, килобит",
            "maximum": 16000,
            "minimum": 100
          },
          "isRtspAudio": {
            "type": "boolean",
            "example": true,
            "title": "Флаг rtsp_audio"
          },
          "isUsedForSip": {
            "type": "boolean",
            "example": true,
            "title": "Флаг use for sip"
          }
        },
        "title": "Настройки видеоконфига",
        "required": [
          "chanelNumber",
          "isEnabled"
        ]
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "type": "basic"
      }
    }
  },
  "externalDocs": {
    "url": "https://openapi-deviceapis.deploy.rtkit.dev/deviceapis_device_v1/",
    "description": "Documentation"
  },
  "servers": [
    {
      "url": "/",
      "description": "Default"
    },
    {
      "url": "{deviceAddress}/",
      "description": "Device",
      "variables": {
        "deviceAddress": {
          "default": "https://192.168.0.1:443",
          "description": "Device address"
        }
      }
    }
  ]
}