{
  "openapi": "3.0.3",
  "info": {
    "title": "device",
    "version": "1.0.1775813760260",
    "description": "Сервис device",
    "license": {
      "name": "CC BY-NC-ND 4.0",
      "url": "https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md"
    }
  },
  "tags": [
    {
      "name": "cms_phone(auth)",
      "description": "Методы cms_phone. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "device(auth)",
      "description": "Методы device. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "device_lite(auth)",
      "description": "Методы device_lite. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "sip_phone(auth)",
      "description": "Методы sip_phone. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "system(public)",
      "description": "Методы system. Не требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "trunk_config(internal auth)",
      "description": "Внутренние методы. Требуют авторизацию. Доступны только во внутренней сети"
    }
  ],
  "paths": {
    "/device/api/v1/cms_phone/count": {
      "get": {
        "summary": "Метод получения количества аналоговых трубок.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first",
        "operationId": "CmsPhoneService_GetCmsPhoneCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCmsPhoneCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCmsPhoneCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCmsPhoneCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.statusTypes",
            "description": "По статусам аналоговой трубки\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - PENDING_ACTIVE: Ожидает активации\n - ACTIVE: Активна\n - PENDING_BLOCKED: Ожидает блокировки\n - BLOCKED: Заблокирована",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PENDING_ACTIVE",
                  "ACTIVE",
                  "PENDING_BLOCKED",
                  "BLOCKED"
                ]
              }
            }
          },
          {
            "name": "filter.orponIds",
            "description": "По идентификаторам ОРПОН (дома)",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.rooms",
            "description": "По номерам квартиры",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/device_id/{deviceId}": {
      "delete": {
        "summary": "Метод удаления аналоговой трубки по идентификатору устройсва.\nМетод доступен для: admin, service",
        "operationId": "CmsPhoneService_DeleteCmsPhoneDeviceId",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCmsPhoneDeviceIdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "deviceId",
            "description": "Идентификатор устройства",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/list": {
      "get": {
        "summary": "Метод получения списка аналоговых трубок.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first",
        "operationId": "CmsPhoneService_GetCmsPhoneList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetCmsPhoneListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetCmsPhoneListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.statusTypes",
            "description": "По статусам аналоговой трубки\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - PENDING_ACTIVE: Ожидает активации\n - ACTIVE: Активна\n - PENDING_BLOCKED: Ожидает блокировки\n - BLOCKED: Заблокирована",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PENDING_ACTIVE",
                  "ACTIVE",
                  "PENDING_BLOCKED",
                  "BLOCKED"
                ]
              }
            }
          },
          {
            "name": "filter.orponIds",
            "description": "По идентификаторам ОРПОН (дома)",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.rooms",
            "description": "По номерам квартиры",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - STATUS: По статусу доступности\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "STATUS",
                "CHANGED_AT",
                "CREATED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "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"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/orpon/{orpon}/room_number/{roomNumber}/device_id/{deviceId}": {
      "delete": {
        "summary": "Метод удаления аналоговой трубки по идентификатору ОРПОН, номеру квартиры и идентификатору устройства.\nМетод доступен для: admin, service",
        "operationId": "CmsPhoneService_DeleteCmsPhoneOrponRoomNumberDeviceId",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCmsPhoneOrponRoomNumberDeviceIdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "Идентификатор ОРПОН",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "roomNumber",
            "description": "Номер квартиры",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deviceId",
            "description": "Идентификатор устройства",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/orpon_id/{orponId}": {
      "delete": {
        "summary": "Метод удаления аналоговой трубки по идентификатору ОРПОН.\nМетод доступен для: admin, service",
        "operationId": "CmsPhoneService_DeleteCmsPhoneOrponId",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCmsPhoneOrponIdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orponId",
            "description": "Идентификатор ОРПОН",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/orpon_id/{orponId}/room_number/{roomNumber}": {
      "delete": {
        "summary": "Метод удаления аналоговой трубки по идентификатору ОРПОН и номеру квартиры.\nМетод доступен для: admin, service",
        "operationId": "CmsPhoneService_DeleteCmsPhoneOrponIdRoomNumber",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCmsPhoneOrponIdRoomNumberResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orponId",
            "description": "Идентификатор ОРПОН",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "roomNumber",
            "description": "Номер квартиры",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/refresh": {
      "post": {
        "summary": "Метод для принудительного обновления статуса аналоговых трубок.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "CmsPhoneService_PostCmsPhoneRefresh",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostCmsPhoneRefreshResponse"
                }
              }
            }
          },
          "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/v1PostCmsPhoneRefreshRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/api/v1/cms_phone/{id}": {
      "get": {
        "summary": "Метод получения аналоговой трубки по идентификатору.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first",
        "operationId": "CmsPhoneService_GetCmsPhone",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCmsPhoneResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCmsPhoneResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetCmsPhoneResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления аналоговой трубки.\nМетод доступен для: admin, service",
        "operationId": "CmsPhoneService_DeleteCmsPhone",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteCmsPhoneResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор аналоговой трубки",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "cms_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device": {
      "post": {
        "summary": "Метод создания устройства.\nМетод доступен для: admin, bti, service, owner, employee.\nДля owner, employee доступно создание и редактирование только в КВГ, привязанных к компании пользователя",
        "operationId": "DeviceService_PostDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostDeviceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      },
      "put": {
        "summary": "Метод изменения устройства.\nМетод доступен для: admin, bti, service",
        "operationId": "DeviceService_PutDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutDeviceResponse"
                }
              }
            }
          },
          "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/v1PutDeviceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/api/v1/device/configuration_status": {
      "post": {
        "summary": "Метод изменения статуса конфигурации устройства.\nМетод доступен для: admin, service",
        "operationId": "DeviceService_PostDeviceConfigurationStatus",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceConfigurationStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceConfigurationStatusResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceConfigurationStatusResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostDeviceConfigurationStatusRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/api/v1/device/configuration_status/grouped/count": {
      "get": {
        "summary": "Метод получения количества конфигураций сгруппированных по устройствам.\nМетод доступен для: admin, service",
        "operationId": "DeviceService_GetDeviceConfigurationStatusGroupedCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusGroupedCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.configurationTypes",
            "description": "По типам конфигурации\n\n - CONFIGURATION_TYPE_UNKNOWN: Значение не указано\n - PRESET: Пресет\n - SIP_ACCOUNT: Сип-аккаунт\n - SIP_ROOMS: сип-номера в помещениях\n - GATE: Калитка\n - RFIDS: Ключи\n - CODES: Коды\n - FACE_RECOGNITION: Распознование лиц\n - CONCIERGE: Консьерж\n - AUTOCOLLECT: Автосбор\n - SL3: Режим Sl3\n - EMERGENCY_CALL: Вызов экстренной службы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PRESET",
                  "SIP_ACCOUNT",
                  "SIP_ROOMS",
                  "GATE",
                  "RFIDS",
                  "CODES",
                  "FACE_RECOGNITION",
                  "CONCIERGE",
                  "AUTOCOLLECT",
                  "SL3",
                  "EMERGENCY_CALL"
                ]
              }
            }
          },
          {
            "name": "filter.statusTypes",
            "description": "По статусам конфигурации настройки\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - SUCCESS: Настроен\n - ERROR: Ошибка\n - PENDING: В ожидании обработки\n - PROCESSING: В процессе обработки",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "SUCCESS",
                  "ERROR",
                  "PENDING",
                  "PROCESSING"
                ]
              }
            }
          },
          {
            "name": "filter.isReadyForRetry",
            "description": "Флаг, указывающий на готовность настройки к конфигурированию.\nЗначение next_retry_at меньше текущей даты",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.retryCountLessThen",
            "description": "Пороговое значение количества попыток.\nВозвращает записи, у которых retry_count меньше этого значения",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/configuration_status/grouped/list": {
      "get": {
        "summary": "Метод получения списка конфигураций сгруппированных по устройствам.\nМетод доступен для: admin, service",
        "operationId": "DeviceService_GetDeviceConfigurationStatusGroupedList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusGroupedListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDeviceConfigurationStatusGroupedListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.configurationTypes",
            "description": "По типам конфигурации\n\n - CONFIGURATION_TYPE_UNKNOWN: Значение не указано\n - PRESET: Пресет\n - SIP_ACCOUNT: Сип-аккаунт\n - SIP_ROOMS: сип-номера в помещениях\n - GATE: Калитка\n - RFIDS: Ключи\n - CODES: Коды\n - FACE_RECOGNITION: Распознование лиц\n - CONCIERGE: Консьерж\n - AUTOCOLLECT: Автосбор\n - SL3: Режим Sl3\n - EMERGENCY_CALL: Вызов экстренной службы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PRESET",
                  "SIP_ACCOUNT",
                  "SIP_ROOMS",
                  "GATE",
                  "RFIDS",
                  "CODES",
                  "FACE_RECOGNITION",
                  "CONCIERGE",
                  "AUTOCOLLECT",
                  "SL3",
                  "EMERGENCY_CALL"
                ]
              }
            }
          },
          {
            "name": "filter.statusTypes",
            "description": "По статусам конфигурации настройки\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - SUCCESS: Настроен\n - ERROR: Ошибка\n - PENDING: В ожидании обработки\n - PROCESSING: В процессе обработки",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "SUCCESS",
                  "ERROR",
                  "PENDING",
                  "PROCESSING"
                ]
              }
            }
          },
          {
            "name": "filter.isReadyForRetry",
            "description": "Флаг, указывающий на готовность настройки к конфигурированию.\nЗначение next_retry_at меньше текущей даты",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.retryCountLessThen",
            "description": "Пороговое значение количества попыток.\nВозвращает записи, у которых retry_count меньше этого значения",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: DEVICE_ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - DEVICE_ID: По идентификатору устройства",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DEVICE_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..1000.\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"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/count": {
      "get": {
        "summary": "Метод получения количества устройств.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first",
        "operationId": "DeviceService_GetDeviceCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.ownerCompanyIds",
            "description": "По идентификаторам компании владельца",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.text",
            "description": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование;\n# - MAC-адрес;\n# - Список тегов устройства;\n# - Сетевой адрес;\n# - Серийный номер",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.flatgrammIds",
            "description": "Идентификатор квартирограммы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.serialNumbers",
            "description": "Серийный номер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.deviceStatusTypes",
            "description": "Статус устройства\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - OFFLINE: Не в сети\n - ONLINE: В сети",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "OFFLINE",
                  "ONLINE"
                ]
              }
            }
          },
          {
            "name": "filter.deviceTypes",
            "description": "Тип назначения устройства\n\n - TYPE_UNKNOWN: Значение не указано\n - INTERCOM: Домофон\n - BARRIER: Шлагбаум\n - GATE: Калитка",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "INTERCOM",
                  "BARRIER",
                  "GATE"
                ]
              }
            }
          },
          {
            "name": "filter.deviceModelTypes",
            "description": "Модель устройства\n\n - MODEL_TYPE_UNKNOWN: Значение не указано\n - RODOS8: Модель RODOS-8\n - BEWARD: Модель Beward\n - QTECH: Модель QTECH\n - NATEKS: Модель Натекс\n - TNB: Модель ТНБ\n - MAXETLINE: Модель Maxet Line\n - TNB_DO2: Модель Двойная открывашка\n - BEWARD_DS86017CP: Модель Beward DS86017CP\n - BEWARD_DS85006MP: Модель Beward DS85006MP\n - DAHUA_VTO2101E_P: Модель Dahua DHI-VTO2101E-P\n - HIKVISION_DS_KV8155_IM: Модель Hikvision DS-KV8155-IM\n - RODOS8_2: Модель RODOS-8-2\n - AKUVOX_R29C: Модель Akuvox R29C\n - SAFE_LOGIC: Модель Safe-logic\n - BEWARD_DS86006AP: Модель Beward DS86006AP\n - SPUTNIK_IO: Модель Спутник Ио\n - BEWARD_FR: Модель Beward c FR\n - QTECH_FR: Модель QTECH с FR\n - ELTEX_IPA_ER_010: Модель Eltex IPA-ER-10\n - BEWARD_MIFARE: Модель Beward с новым API ключей\n - BAS_IP_AA_12FB: Модель BAS-IP AA-12FB\n - AKUVOX_X915S: Модель Akuvox X915S\n - RUBETEK_RV_3434: Модель Rubetek RV-3434\n - SOKOL_PLUS: Модель Сокол плюс\n - BEWARD_LOW_COST: Модель Beward Эконом",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "RODOS8",
                  "BEWARD",
                  "QTECH",
                  "NATEKS",
                  "TNB",
                  "MAXETLINE",
                  "TNB_DO2",
                  "BEWARD_DS86017CP",
                  "BEWARD_DS85006MP",
                  "DAHUA_VTO2101E_P",
                  "HIKVISION_DS_KV8155_IM",
                  "RODOS8_2",
                  "AKUVOX_R29C",
                  "SAFE_LOGIC",
                  "BEWARD_DS86006AP",
                  "SPUTNIK_IO",
                  "BEWARD_FR",
                  "QTECH_FR",
                  "ELTEX_IPA_ER_010",
                  "BEWARD_MIFARE",
                  "BAS_IP_AA_12FB",
                  "AKUVOX_X915S",
                  "RUBETEK_RV_3434",
                  "SOKOL_PLUS",
                  "BEWARD_LOW_COST"
                ]
              }
            }
          },
          {
            "name": "filter.isConciergeEnabled",
            "description": "Переадресация на консъержа",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.isDispatchingEnabled",
            "description": "Диспетчеризация",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.dispatchingPublicNumber",
            "description": "Поиск по публичному номеру диспетчеризации.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.hardwareVersion",
            "description": "Версия аппаратного обеспенения.\n# Диапазон: 3..64",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.softwareVersion",
            "description": "Версия программного обеспенения.\n# Диапазон: 3..64",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.isAutochangePasswordEnabled",
            "description": "Автозамена пароля",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.abcNumber",
            "description": "ABC-номер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.cameraIds",
            "description": "Идентификаторы камер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.syncStatusStatusTypes",
            "description": "Фильтр по статусу синхронизации (SyncStatus.status_type)\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - NEW: Новый\n - PENDING: В процессе\n - ERROR: Ошибка\n - SUCCESS: Успешно\n - DISABLED: Выключено",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "NEW",
                  "PENDING",
                  "ERROR",
                  "SUCCESS",
                  "DISABLED"
                ]
              }
            }
          },
          {
            "name": "filter.syncRetryCountLessThen",
            "description": "Пороговое значение количества попыток синхронизации.\nВозвращает записи, у которых sync_retry_count меньше этого значения",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter.beginSyncSuccessfulAt",
            "description": "От даты успешной синхронизации включительно (>=)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.endSyncSuccessfulAt",
            "description": "До даты успешной синхронизации (<)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.beginSyncAt",
            "description": "От даты синхронизации включительно (>=)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.endSyncAt",
            "description": "До даты синхронизации (<)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/list": {
      "get": {
        "summary": "Метод получения списка устройств.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first",
        "operationId": "DeviceService_GetDeviceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDeviceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDeviceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.ownerCompanyIds",
            "description": "По идентификаторам компании владельца",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.text",
            "description": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование;\n# - MAC-адрес;\n# - Список тегов устройства;\n# - Сетевой адрес;\n# - Серийный номер",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.flatgrammIds",
            "description": "Идентификатор квартирограммы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.serialNumbers",
            "description": "Серийный номер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.deviceStatusTypes",
            "description": "Статус устройства\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - OFFLINE: Не в сети\n - ONLINE: В сети",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "OFFLINE",
                  "ONLINE"
                ]
              }
            }
          },
          {
            "name": "filter.deviceTypes",
            "description": "Тип назначения устройства\n\n - TYPE_UNKNOWN: Значение не указано\n - INTERCOM: Домофон\n - BARRIER: Шлагбаум\n - GATE: Калитка",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "INTERCOM",
                  "BARRIER",
                  "GATE"
                ]
              }
            }
          },
          {
            "name": "filter.deviceModelTypes",
            "description": "Модель устройства\n\n - MODEL_TYPE_UNKNOWN: Значение не указано\n - RODOS8: Модель RODOS-8\n - BEWARD: Модель Beward\n - QTECH: Модель QTECH\n - NATEKS: Модель Натекс\n - TNB: Модель ТНБ\n - MAXETLINE: Модель Maxet Line\n - TNB_DO2: Модель Двойная открывашка\n - BEWARD_DS86017CP: Модель Beward DS86017CP\n - BEWARD_DS85006MP: Модель Beward DS85006MP\n - DAHUA_VTO2101E_P: Модель Dahua DHI-VTO2101E-P\n - HIKVISION_DS_KV8155_IM: Модель Hikvision DS-KV8155-IM\n - RODOS8_2: Модель RODOS-8-2\n - AKUVOX_R29C: Модель Akuvox R29C\n - SAFE_LOGIC: Модель Safe-logic\n - BEWARD_DS86006AP: Модель Beward DS86006AP\n - SPUTNIK_IO: Модель Спутник Ио\n - BEWARD_FR: Модель Beward c FR\n - QTECH_FR: Модель QTECH с FR\n - ELTEX_IPA_ER_010: Модель Eltex IPA-ER-10\n - BEWARD_MIFARE: Модель Beward с новым API ключей\n - BAS_IP_AA_12FB: Модель BAS-IP AA-12FB\n - AKUVOX_X915S: Модель Akuvox X915S\n - RUBETEK_RV_3434: Модель Rubetek RV-3434\n - SOKOL_PLUS: Модель Сокол плюс\n - BEWARD_LOW_COST: Модель Beward Эконом",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "RODOS8",
                  "BEWARD",
                  "QTECH",
                  "NATEKS",
                  "TNB",
                  "MAXETLINE",
                  "TNB_DO2",
                  "BEWARD_DS86017CP",
                  "BEWARD_DS85006MP",
                  "DAHUA_VTO2101E_P",
                  "HIKVISION_DS_KV8155_IM",
                  "RODOS8_2",
                  "AKUVOX_R29C",
                  "SAFE_LOGIC",
                  "BEWARD_DS86006AP",
                  "SPUTNIK_IO",
                  "BEWARD_FR",
                  "QTECH_FR",
                  "ELTEX_IPA_ER_010",
                  "BEWARD_MIFARE",
                  "BAS_IP_AA_12FB",
                  "AKUVOX_X915S",
                  "RUBETEK_RV_3434",
                  "SOKOL_PLUS",
                  "BEWARD_LOW_COST"
                ]
              }
            }
          },
          {
            "name": "filter.isConciergeEnabled",
            "description": "Переадресация на консъержа",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.isDispatchingEnabled",
            "description": "Диспетчеризация",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.dispatchingPublicNumber",
            "description": "Поиск по публичному номеру диспетчеризации.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.hardwareVersion",
            "description": "Версия аппаратного обеспенения.\n# Диапазон: 3..64",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.softwareVersion",
            "description": "Версия программного обеспенения.\n# Диапазон: 3..64",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.isAutochangePasswordEnabled",
            "description": "Автозамена пароля",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.abcNumber",
            "description": "ABC-номер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.cameraIds",
            "description": "Идентификаторы камер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.syncStatusStatusTypes",
            "description": "Фильтр по статусу синхронизации (SyncStatus.status_type)\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - NEW: Новый\n - PENDING: В процессе\n - ERROR: Ошибка\n - SUCCESS: Успешно\n - DISABLED: Выключено",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "NEW",
                  "PENDING",
                  "ERROR",
                  "SUCCESS",
                  "DISABLED"
                ]
              }
            }
          },
          {
            "name": "filter.syncRetryCountLessThen",
            "description": "Пороговое значение количества попыток синхронизации.\nВозвращает записи, у которых sync_retry_count меньше этого значения",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter.beginSyncSuccessfulAt",
            "description": "От даты успешной синхронизации включительно (>=)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.endSyncSuccessfulAt",
            "description": "До даты успешной синхронизации (<)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.beginSyncAt",
            "description": "От даты синхронизации включительно (>=)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.endSyncAt",
            "description": "До даты синхронизации (<)",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - TITLE: По наименованию\n - SYNC_AT: По дате последней попытки синхронизации",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "TITLE",
                "SYNC_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "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"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/{id}": {
      "get": {
        "summary": "Метод получаения устройства.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first",
        "operationId": "DeviceService_GetDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления устройства.\nМетод доступен для: admin, service",
        "operationId": "DeviceService_DeleteDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор устройства",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/{id}/configuration_statuses": {
      "get": {
        "summary": "Метод получения статусов конфигурации устройства.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "DeviceService_GetDeviceConfigurationStatuses",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/{id}/install_preset": {
      "post": {
        "summary": "Метод установки пресета на устройство.\nМетод доступен для: admin, service",
        "operationId": "DeviceService_PostDeviceInstallPreset",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceInstallPresetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceInstallPresetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceInstallPresetResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/{id}/reconfigure": {
      "post": {
        "summary": "Метод переконфигурирования устройста.\nЛогика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=630337555.\nМетод доступен для: admin, bti, service",
        "operationId": "DeviceService_PostDeviceReconfigure",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReconfigureResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReconfigureResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReconfigureResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор устройства",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device/{id}/replace": {
      "post": {
        "summary": "Метод замены устройста.\nЛогика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=655256574.\nМетод доступен для: admin, bti, service",
        "operationId": "DeviceService_PostDeviceReplace",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReplaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReplaceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReplaceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор устройства",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "host": {
                    "type": "string",
                    "title": "Хост"
                  },
                  "macAddress": {
                    "type": "string",
                    "title": "MAC-адрес.\n# Диапазон: 17..17.\n# Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/"
                  },
                  "serialNumber": {
                    "type": "string",
                    "title": "Серийный номер"
                  },
                  "login": {
                    "type": "string",
                    "title": "Логин (для модели спутник)"
                  }
                },
                "title": "Запрос на замену устройства",
                "required": [
                  "macAddress",
                  "serialNumber"
                ]
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/device_lite/{id}": {
      "get": {
        "summary": "Метод получаения упрощенного устройства.\nМетод доступен для: admin, service, owner, employee, bti, ltp_first.\nМетод доступен для: ApiKey",
        "operationId": "DeviceService_GetDeviceLite",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceLiteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device_lite(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/sip_phone/count": {
      "get": {
        "summary": "Метод получения количества SIP-трубок.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "SipPhoneService_GetSipPhoneCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipPhoneCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipPhoneCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipPhoneCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.sipNumbers",
            "description": "Фильтр по SIP номерам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomIds",
            "description": "Фильтр по идентификаторам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "sip_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/sip_phone/get_count": {
      "post": {
        "summary": "Метод получения количества SIP-трубок.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "SipPhoneService_PostSipPhoneGetCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSipPhoneGetCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSipPhoneGetCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSipPhoneGetCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostSipPhoneGetCountRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "sip_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/api/v1/sip_phone/get_list": {
      "post": {
        "summary": "Метод получения списка SIP-трубок.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "SipPhoneService_PostSipPhoneGetList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSipPhoneGetListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSipPhoneGetListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostSipPhoneGetListResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostSipPhoneGetListRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "sip_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/api/v1/sip_phone/list": {
      "get": {
        "summary": "Метод получения списка SIP-трубок.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "SipPhoneService_GetSipPhoneList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetSipPhoneListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetSipPhoneListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.sipNumbers",
            "description": "Фильтр по SIP номерам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomIds",
            "description": "Фильтр по идентификаторам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - STATUS: По статусу доступности\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "STATUS",
                "CHANGED_AT",
                "CREATED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "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"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "sip_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/sip_phone/{id}": {
      "get": {
        "summary": "Метод получения SIP-трубки по идентификатору.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "SipPhoneService_GetSipPhone",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipPhoneResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipPhoneResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSipPhoneResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор трубки",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "sip_phone(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/api/v1/system/status": {
      "get": {
        "summary": "Метод получения статуса сервиса.\nНе требует авторизации",
        "operationId": "SystemService_GetSystemStatus",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSystemStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "system(public)"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/internal/api/v1/trunk_config": {
      "post": {
        "summary": "Метод создания trunk-конфигурации.\nПоддерживает создание и обновление.\nМетод доступен для: admin, bti, service, ltp_first",
        "operationId": "TrunkConfigService_PostTrunkConfig",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTrunkConfigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTrunkConfigResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTrunkConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostTrunkConfigRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "trunk_config(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/device/internal/api/v1/trunk_config/count": {
      "get": {
        "summary": "Метод получения количества trunk-конфигураций.\nМетод доступен для: admin, bti, service, ltp_first",
        "operationId": "TrunkConfigService_GetTrunkConfigCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTrunkConfigCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTrunkConfigCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTrunkConfigCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.cityOrponIds",
            "description": "Фильтр по ОРПОН идентификаторам города",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.ipAddresses",
            "description": "Фильтр по IP-адресам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.showDeleted",
            "description": "Показывать удаленные",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "trunk_config(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/internal/api/v1/trunk_config/list": {
      "get": {
        "summary": "Метод получения списка trunk-конфигураций.\nМетод доступен для: admin, bti, service, ltp_first",
        "operationId": "TrunkConfigService_GetTrunkConfigList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetTrunkConfigListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetTrunkConfigListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.cityOrponIds",
            "description": "Фильтр по ОРПОН идентификаторам города",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.ipAddresses",
            "description": "Фильтр по IP-адресам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.showDeleted",
            "description": "Показывать удаленные",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "CHANGED_AT",
                "CREATED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "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"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "trunk_config(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/internal/api/v1/trunk_config/restore/{id}": {
      "post": {
        "summary": "Метод разархивации trunk-конфигурации.\nМетод доступен для: admin, service, device_admin",
        "operationId": "TrunkConfigService_PostTrunkConfigRestore",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTrunkConfigRestoreResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTrunkConfigRestoreResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTrunkConfigRestoreResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "trunk_config(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/device/internal/api/v1/trunk_config/{id}": {
      "get": {
        "summary": "Метод получения trunk-конфигурации.\nМетод доступен для: admin, bti, service, ltp_first",
        "operationId": "TrunkConfigService_GetTrunkConfig",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTrunkConfigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTrunkConfigResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTrunkConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор трубки.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "trunk_config(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:read",
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод архивации trunk-конфигурации.\nМетод доступен для: admin, service, device_admin",
        "operationId": "TrunkConfigService_DeleteTrunkConfig",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteTrunkConfigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteTrunkConfigResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteTrunkConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "trunk_config(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "device:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "CredentialsUserAccessType": {
        "type": "string",
        "enum": [
          "API",
          "WEB",
          "RTSP",
          "SU"
        ],
        "description": "- USER_ACCESS_TYPE_UNKNOWN: Значение не указано\n - API: Доступ к api\n - WEB: Доступ к web-интерфейсу\n - RTSP: Доступ к rtsp-потоку\n - SU: Полный доступ",
        "title": "Тип доступа пользователя.\n# Тип: byte"
      },
      "DeviceAutochangePasswordSettings": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Статус настройки автозамены пароля"
          }
        },
        "title": "Настройки автозамены пароля",
        "required": [
          "isEnabled"
        ]
      },
      "DeviceConfigurationStatusPayload": {
        "type": "object",
        "properties": {
          "autocollect": {
            "title": "Автоколлект",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceConfigurationStatusPayloadAutocollect"
              }
            ]
          }
        },
        "title": "Дополнительная полезная нагрузка"
      },
      "DeviceConfigurationStatusPayloadAutocollect": {
        "type": "object",
        "properties": {
          "enabledAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата включения автосбора.\n# Тип: DateTime"
          },
          "toBeDisabledAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата отключения автосбора.\n# Тип: DateTime"
          }
        },
        "title": "Автоколлект"
      },
      "DeviceCredentials": {
        "type": "object",
        "properties": {
          "login": {
            "type": "string",
            "title": "Логин.\n# Диапазон: 0..100"
          },
          "password": {
            "type": "string",
            "title": "Пароль.\n# Диапазон: 0..100"
          },
          "userAccessType": {
            "title": "Тип доступа пользователя",
            "allOf": [
              {
                "$ref": "#/components/schemas/CredentialsUserAccessType"
              }
            ]
          }
        },
        "title": "Учетные данные пользователей"
      },
      "DeviceDispatching": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Статус настройки диспетчеризации"
          },
          "publicIdentity": {
            "type": "string",
            "title": "Публичный номер.\n# Паттерн: /^[1-9]\\d{3,7}$/"
          }
        },
        "title": "Диспетчеризации",
        "required": [
          "isEnabled"
        ]
      },
      "DeviceModelType": {
        "type": "string",
        "enum": [
          "RODOS8",
          "BEWARD",
          "QTECH",
          "NATEKS",
          "TNB",
          "MAXETLINE",
          "TNB_DO2",
          "BEWARD_DS86017CP",
          "BEWARD_DS85006MP",
          "DAHUA_VTO2101E_P",
          "HIKVISION_DS_KV8155_IM",
          "RODOS8_2",
          "AKUVOX_R29C",
          "SAFE_LOGIC",
          "BEWARD_DS86006AP",
          "SPUTNIK_IO",
          "BEWARD_FR",
          "QTECH_FR",
          "ELTEX_IPA_ER_010",
          "BEWARD_MIFARE",
          "BAS_IP_AA_12FB",
          "AKUVOX_X915S",
          "RUBETEK_RV_3434",
          "SOKOL_PLUS",
          "BEWARD_LOW_COST"
        ],
        "description": "- MODEL_TYPE_UNKNOWN: Значение не указано\n - RODOS8: Модель RODOS-8\n - BEWARD: Модель Beward\n - QTECH: Модель QTECH\n - NATEKS: Модель Натекс\n - TNB: Модель ТНБ\n - MAXETLINE: Модель Maxet Line\n - TNB_DO2: Модель Двойная открывашка\n - BEWARD_DS86017CP: Модель Beward DS86017CP\n - BEWARD_DS85006MP: Модель Beward DS85006MP\n - DAHUA_VTO2101E_P: Модель Dahua DHI-VTO2101E-P\n - HIKVISION_DS_KV8155_IM: Модель Hikvision DS-KV8155-IM\n - RODOS8_2: Модель RODOS-8-2\n - AKUVOX_R29C: Модель Akuvox R29C\n - SAFE_LOGIC: Модель Safe-logic\n - BEWARD_DS86006AP: Модель Beward DS86006AP\n - SPUTNIK_IO: Модель Спутник Ио\n - BEWARD_FR: Модель Beward c FR\n - QTECH_FR: Модель QTECH с FR\n - ELTEX_IPA_ER_010: Модель Eltex IPA-ER-10\n - BEWARD_MIFARE: Модель Beward с новым API ключей\n - BAS_IP_AA_12FB: Модель BAS-IP AA-12FB\n - AKUVOX_X915S: Модель Akuvox X915S\n - RUBETEK_RV_3434: Модель Rubetek RV-3434\n - SOKOL_PLUS: Модель Сокол плюс\n - BEWARD_LOW_COST: Модель Beward Эконом",
        "title": "Модель устройства.\n# Тип: byte"
      },
      "DeviceRedirect": {
        "type": "object",
        "properties": {
          "isEnabledSip": {
            "type": "boolean",
            "title": "Переадресация на SIP"
          },
          "isEnabledPhone": {
            "type": "boolean",
            "title": "Переадресация на телефон"
          }
        },
        "title": "Переадресация.\nТребуется капабилити SIP_CALLS",
        "required": [
          "isEnabledSip",
          "isEnabledPhone"
        ]
      },
      "DeviceSettingsAutocollect": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Статус настройки автосбора"
          }
        },
        "title": "Настройки автосбора",
        "required": [
          "isEnabled"
        ]
      },
      "DeviceSettingsFaceRecognition": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Статус настройки"
          }
        },
        "title": "Настройки распознования лиц",
        "required": [
          "isEnabled"
        ]
      },
      "DeviceSipTrunk": {
        "type": "object",
        "properties": {
          "abcNumber": {
            "type": "string",
            "title": "ABC-номер.\n# Паттерн: /^(\\+7)(\\d{10})$/"
          },
          "host": {
            "type": "string",
            "title": "Хост.\n# Диапазон: 0..250"
          },
          "port": {
            "type": "integer",
            "format": "int32",
            "title": "Порт.\n# Диапазон: 0..65535"
          },
          "sipType": {
            "title": "Тип сети связи",
            "allOf": [
              {
                "$ref": "#/components/schemas/SipTrunkSipType"
              }
            ]
          }
        },
        "title": "Транк.\nПараметры для соединения между устрйоством и телефонной сетью общего пользования.\nТребуется капабилити SIP_CALLS",
        "required": [
          "abcNumber",
          "sipType"
        ]
      },
      "DeviceSputnikCredentials": {
        "type": "object",
        "properties": {
          "login": {
            "type": "string",
            "title": "Логин.\n# Тип: Guid"
          },
          "password": {
            "type": "string",
            "title": "Пароль.\nНа чтение выводится только для пользователя с типом service"
          }
        },
        "title": "Учетные данные.\nИспользуется для устройств с типом модели SPUTNIK_IO",
        "required": [
          "login"
        ]
      },
      "ErrorHostExists": {
        "type": "object",
        "title": "На платформе уже существует устройство с таким хостом"
      },
      "ErrorLoginExists": {
        "type": "object",
        "title": "На платформе уже существует устройство с таким логином (для устройст модели \"Спутник\")"
      },
      "ErrorLoginIsRequired": {
        "type": "object",
        "title": "Отсутствует поле Login для модели \"Спутник\""
      },
      "ErrorMacAddressExists": {
        "type": "object",
        "title": "На платформе уже существует устройство с таким MAC-адресом"
      },
      "ErrorPresetStatusIsProcessing": {
        "type": "object",
        "title": "Пресет в процессе установки"
      },
      "ErrorSerialNumberExists": {
        "type": "object",
        "title": "На платформе уже существует устройство с таким серийным номером"
      },
      "GetDeviceConfigurationStatusesResponseStatuses": {
        "type": "object",
        "properties": {
          "deviceConfigurationStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceConfigurationStatus"
            },
            "title": "Статусы конфигурации устройства"
          },
          "cameraStatus": {
            "title": "Статус камеры",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CameraStatus"
              }
            ]
          },
          "syncStatus": {
            "title": "Статус синхронизации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SyncStatus"
              }
            ]
          },
          "deviceStatusType": {
            "title": "Статус устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceStatusType"
              }
            ]
          }
        },
        "title": "Статусы"
      },
      "ModelCapabilityType": {
        "type": "string",
        "enum": [
          "CHANGE_PASSWORD",
          "DTMF_CODE",
          "FLAT_AUTOCOLLECT",
          "SIP_CALL",
          "REINSTALL",
          "EMERGENCY_DOOR",
          "TICKER",
          "CONCIERGE_CALL",
          "AUTOCOLLECT",
          "TEMPORARY_KEY",
          "OPEN_DOOR",
          "GATE",
          "SIP_VIDEO",
          "CONSTANT_KEY",
          "CMS_PHONES",
          "SL3",
          "SYSLOG",
          "NTP",
          "FACE_RECOGNITION",
          "CAMERA",
          "EMERGENCY_CALL"
        ],
        "description": "- CAPABILITY_TYPE_UNKNOWN: Значение не указано\n - CHANGE_PASSWORD: Возможность смены пароля\n - DTMF_CODE: DTMF коды\n - FLAT_AUTOCOLLECT: Поддержка квартирного автосбора\n - SIP_CALL: Поддержка звонков\n - REINSTALL: Поддержка реконфигурирования устройства\n - EMERGENCY_DOOR: Аварийное открытие двери\n - TICKER: Поддержка бегущей строки\n - CONCIERGE_CALL: Вызов на номер консьержа\n - AUTOCOLLECT: Поддержка умного автосбора\n - TEMPORARY_KEY: Временные ключи\n - OPEN_DOOR: Открытие двери\n - GATE: Поддержка калитки\n - SIP_VIDEO: SIP видео вызов\n - CONSTANT_KEY: Постоянные ключи\n - CMS_PHONES: Поддержка аналоговых трубок\n - SL3: Поддержка шифрования ключей SL3\n - SYSLOG: Поддержка стандарта Syslog\n - NTP: Поддержка протокола NTP\n - FACE_RECOGNITION: Распознавание лиц\n - CAMERA: Видеокамера\n - EMERGENCY_CALL: Вызов экстренной службы",
        "title": "Список возможностей"
      },
      "ReinstallErrorSipLoginIsMissing": {
        "type": "object",
        "title": "Сип-логин отсутствует на устройстве"
      },
      "SavingErrorAbcNumberIsExistOnAnotherDevice": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства на котором находится ABC-номер"
          }
        },
        "title": "ABC-номер присвоен другому устройству",
        "required": [
          "deviceId"
        ]
      },
      "SavingErrorCapabilityIsNotSupported": {
        "type": "object",
        "properties": {
          "modelCapabilityType": {
            "title": "Возможность",
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelCapabilityType"
              }
            ]
          }
        },
        "title": "Функциональность не поддерживается моделью устройства"
      },
      "SavingErrorConciergeRoomNotFound": {
        "type": "object",
        "title": "Не найдена квартира для консьержа"
      },
      "SavingErrorCredentialsAreRequired": {
        "type": "object",
        "title": "Отсутствуют реквизиты для модели \"Спутник\""
      },
      "SavingErrorFieldIsNotSupported": {
        "type": "object",
        "title": "Переданное поле не поддерживается"
      },
      "SavingErrorLoginIsExist": {
        "type": "object",
        "title": "Логин уже существует на платформе"
      },
      "SavingErrorMacAddressInvalid": {
        "type": "object",
        "title": "Переданный мак-адрес не валидный"
      },
      "SavingErrorMacAddressIsExist": {
        "type": "object",
        "title": "MAC-адрес уже существует на платформе"
      },
      "SavingErrorNotAllowedForModel": {
        "type": "object",
        "title": "Нельзя изменить модель девайса"
      },
      "SavingErrorNotAllowedForType": {
        "type": "object",
        "title": "Нельзя изменить тип назначения девайса"
      },
      "SavingErrorPublicIdentityIsExist": {
        "type": "object",
        "title": "Публичный номер уже существует на платформе"
      },
      "SavingErrorSerialNumberForModelIsExist": {
        "type": "object",
        "title": "Серийный номер для данной модели уже существует на платформе"
      },
      "SavingErrorSerialNumberInvalid": {
        "type": "object",
        "title": "Переданный серийный номер не валидный"
      },
      "SettingsConciergeCall": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Статус настройки вызова консьержа"
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "Идентификатор ОРПОН"
          },
          "roomNumber": {
            "type": "string",
            "title": "Номер квартиры.\n# Диапазон: 1..5"
          },
          "sipNumber": {
            "type": "string",
            "title": "Номер сип-трубки",
            "readOnly": true
          }
        },
        "title": "Настройки вызова консьержа",
        "required": [
          "isEnabled",
          "orpon",
          "roomNumber"
        ]
      },
      "SettingsCoordinateMatrixSwitch": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Состояние"
          }
        },
        "title": "Настройки ККМ.\nКоммутатор координатно-матричный (устройство для подключения аналоговых трубок к домофону)",
        "required": [
          "isEnabled"
        ]
      },
      "SettingsEmergencyCall": {
        "type": "object",
        "properties": {
          "isCallAvailable": {
            "type": "boolean",
            "title": "Возможность вызова экстренной службы"
          },
          "emergencyNumber": {
            "type": "string",
            "title": "АБС-номер экстренной службы.\n# Паттерн: /^\\+[1-9][0-9]{10}$/"
          }
        },
        "title": "Настройки вызова экстренной службы.\nТолько для устройств с CapabilityType=EMERGENCY_CALL",
        "required": [
          "isCallAvailable",
          "emergencyNumber"
        ]
      },
      "SettingsSl3Mode": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "title": "Статус настройки"
          },
          "encryptionProfileId": {
            "type": "string",
            "title": "Идентификатор профиля шифрования"
          }
        },
        "title": "Настройки режима SL3",
        "required": [
          "isEnabled"
        ]
      },
      "SipTrunkSipType": {
        "type": "string",
        "enum": [
          "VIMS",
          "NGN"
        ],
        "description": "- SIP_TYPE_UNKNOWN: Значение не указано\n - VIMS: Тип Viprtual IP Multimedia Subsystem\n - NGN: Тип Next Generation Networks",
        "title": "Тип сети связи.\n# Тип: byte"
      },
      "devicev1CmsPhone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор.\n# Диапазон: 0..2147483647"
          },
          "orponId": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН Дома.\n# Диапазон: 0..2147483647"
          },
          "room": {
            "type": "string",
            "title": "Номер квартиры.\n# Диапазон: 1..5"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства.\n# Диапазон: 0..2147483647"
          },
          "statusType": {
            "title": "Статус аналоговой трубки",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CmsPhoneStatusType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта.\n# Тип: DateTime",
            "readOnly": true
          },
          "retryCount": {
            "type": "integer",
            "format": "int32",
            "title": "Счетчик попыток обновления.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Аналоговая трубка.\n# Описание модели",
        "required": [
          "orponId",
          "room",
          "deviceId",
          "statusType",
          "retryCount"
        ]
      },
      "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": "Ошибка транспортного слоя"
      },
      "v1CameraStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор камеры uid.\n# Тип: Guid"
          },
          "statusType": {
            "title": "Статус камеры",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CameraStatusStatusType"
              }
            ]
          },
          "errorMessage": {
            "type": "string",
            "title": "Сообщение об ошибке",
            "readOnly": true
          }
        },
        "title": "Статус камеры.\n# Описание модели"
      },
      "v1CameraStatusStatusType": {
        "type": "string",
        "enum": [
          "PROCESSING",
          "PROCESSING_ERROR",
          "ACTIVE"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - PROCESSING: В процессе регистрации\n - PROCESSING_ERROR: Ошибка регистрации\n - ACTIVE: Активна",
        "title": "Статус камеры.\n# Тип: byte"
      },
      "v1CmsPhoneFilter": {
        "type": "object",
        "properties": {
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам устройства"
          },
          "statusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1CmsPhoneStatusType"
            },
            "title": "По статусам аналоговой трубки"
          },
          "orponIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По идентификаторам ОРПОН (дома)"
          },
          "rooms": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартиры"
          }
        },
        "title": "Фильтр по аналоговой трубким"
      },
      "v1CmsPhonePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CmsPhonePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1CmsPhonePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1CmsPhonePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки;\n# Тип: byte"
      },
      "v1CmsPhonePagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "STATUS",
          "CHANGED_AT",
          "CREATED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - STATUS: По статусу доступности\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1CmsPhoneStatusType": {
        "type": "string",
        "enum": [
          "PENDING_ACTIVE",
          "ACTIVE",
          "PENDING_BLOCKED",
          "BLOCKED"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - PENDING_ACTIVE: Ожидает активации\n - ACTIVE: Активна\n - PENDING_BLOCKED: Ожидает блокировки\n - BLOCKED: Заблокирована",
        "title": "Справочник статусов аналоговой трубки.\n# Тип: byte"
      },
      "v1DeleteCmsPhoneDeviceIdResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления аналоговых трубок по идентификатору устройства"
      },
      "v1DeleteCmsPhoneOrponIdResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН"
      },
      "v1DeleteCmsPhoneOrponIdRoomNumberResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН и номеру квартиры"
      },
      "v1DeleteCmsPhoneOrponRoomNumberDeviceIdResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления аналоговых трубок по идентификатору ОРПОН, номеру квартиры и идентификатору устройства"
      },
      "v1DeleteCmsPhoneResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления аналоговой трубки"
      },
      "v1DeleteDeviceResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления устройства"
      },
      "v1DeleteTrunkConfigResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteTrunkConfigResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления Trunk-конфигурации"
      },
      "v1DeleteTrunkConfigResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса восстановления Trunk-конфигурации"
      },
      "v1Device": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор.\n# Диапазон: 0..2147483647"
          },
          "presetId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пресета.\n# Диапазон: 1..2147483647"
          },
          "type": {
            "title": "Тип назначения устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceType"
              }
            ]
          },
          "macAddress": {
            "type": "string",
            "title": "MAC-адрес.\n# Диапазон: 17..17.\n# Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/"
          },
          "title": {
            "type": "string",
            "title": "Наименование устройства.\n# Диапазон: 3..256"
          },
          "modelType": {
            "title": "Модель устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceModelType"
              }
            ]
          },
          "ownerCompanyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании владельца.\n# Диапазон: 1..2147483647"
          },
          "serialNumber": {
            "type": "string",
            "title": "Серийный номер.\n# Диапазон: 1..16"
          },
          "flatgrammId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор квартирограммы.\n# Диапазон: 1..2147483647"
          },
          "utcOffset": {
            "type": "integer",
            "format": "int32",
            "title": "Смещение таймзоны в минутах.\n# Диапазон: -720..840"
          },
          "statusType": {
            "title": "Статус устройства",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceStatusType"
              }
            ]
          },
          "ipAddress": {
            "type": "string",
            "title": "Сетевой адрес.\n# Диапазон: 0..250"
          },
          "port": {
            "type": "integer",
            "format": "int32",
            "title": "Сетевой порт.\n# Диапазон: 0..65535"
          },
          "sputnikCredentials": {
            "title": "Учетные данные.\nИспользуется для устройств с типом модели SPUTNIK_IO",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceSputnikCredentials"
              }
            ]
          },
          "location": {
            "title": "Координаты",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceLocation"
              }
            ]
          },
          "cameraId": {
            "type": "string",
            "title": "Идентификатор камеры uid.\n# Тип: Guid"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Список тегов устройства.\n# Диапазон: 1..50"
          },
          "settings": {
            "title": "Настройки устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceSettings"
              }
            ]
          },
          "hardwareVersion": {
            "type": "string",
            "title": "Версия аппаратного обеспенения",
            "readOnly": true
          },
          "softwareVersion": {
            "type": "string",
            "title": "Версия программного обеспенения",
            "readOnly": true
          },
          "dispatching": {
            "title": "Диспетчеризации",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceDispatching"
              }
            ]
          },
          "sipTrunk": {
            "title": "Транк",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceSipTrunk"
              }
            ]
          },
          "redirect": {
            "title": "Переадресация",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceRedirect"
              }
            ]
          },
          "autochangePasswordSettings": {
            "title": "Настройки автозамены пароля",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceAutochangePasswordSettings"
              }
            ]
          },
          "credentials": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceCredentials"
            },
            "title": "Учетные данные пользователей",
            "readOnly": true
          },
          "sipAccount": {
            "type": "string",
            "title": "Сип-аккаунт",
            "readOnly": true
          },
          "syncStatus": {
            "title": "Статус синхронизации",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SyncStatus"
              }
            ]
          }
        },
        "title": "Устройство.\n# Описание модели",
        "required": [
          "presetId",
          "type",
          "macAddress",
          "title",
          "modelType",
          "ownerCompanyId",
          "serialNumber",
          "flatgrammId",
          "utcOffset"
        ]
      },
      "v1DeviceConfigurationStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства"
          },
          "configurationType": {
            "title": "Тип конфигурации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatusConfigurationType"
              }
            ]
          },
          "statusType": {
            "title": "Статус конфигурации настройки устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatusStatusType"
              }
            ]
          },
          "configuredAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последней конфигурации устройства.\n# Тип: DateTime",
            "readOnly": true
          },
          "errorMessage": {
            "type": "string",
            "title": "Текст ошибки"
          },
          "retryCount": {
            "type": "integer",
            "format": "int32",
            "title": "Количество попыток"
          },
          "payload": {
            "title": "Дополнительная полезная нагрузка",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceConfigurationStatusPayload"
              }
            ]
          },
          "nextRetryAt": {
            "type": "string",
            "format": "date-time",
            "title": "Минимально возможная дата выполнения следующей попытки.\n# Тип: DateTime",
            "readOnly": true
          }
        },
        "title": "Статус конфигурации устройства.\n# Описание модели",
        "required": [
          "deviceId",
          "configurationType",
          "statusType",
          "retryCount"
        ]
      },
      "v1DeviceConfigurationStatusConfigurationType": {
        "type": "string",
        "enum": [
          "PRESET",
          "SIP_ACCOUNT",
          "SIP_ROOMS",
          "GATE",
          "RFIDS",
          "CODES",
          "FACE_RECOGNITION",
          "CONCIERGE",
          "AUTOCOLLECT",
          "SL3",
          "EMERGENCY_CALL"
        ],
        "description": "- CONFIGURATION_TYPE_UNKNOWN: Значение не указано\n - PRESET: Пресет\n - SIP_ACCOUNT: Сип-аккаунт\n - SIP_ROOMS: сип-номера в помещениях\n - GATE: Калитка\n - RFIDS: Ключи\n - CODES: Коды\n - FACE_RECOGNITION: Распознование лиц\n - CONCIERGE: Консьерж\n - AUTOCOLLECT: Автосбор\n - SL3: Режим Sl3\n - EMERGENCY_CALL: Вызов экстренной службы",
        "title": "Тип конфигурации.\n# Тип: byte"
      },
      "v1DeviceConfigurationStatusGrouped": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства"
          },
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceConfigurationStatus"
            },
            "title": "Список конфигураций"
          }
        },
        "title": "Сгруппированный по устройству список конфигураций",
        "required": [
          "deviceId",
          "statuses"
        ]
      },
      "v1DeviceConfigurationStatusGroupedFilter": {
        "type": "object",
        "properties": {
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам устройства"
          },
          "configurationTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceConfigurationStatusConfigurationType"
            },
            "title": "По типам конфигурации"
          },
          "statusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceConfigurationStatusStatusType"
            },
            "title": "По статусам конфигурации настройки"
          },
          "isReadyForRetry": {
            "type": "boolean",
            "title": "Флаг, указывающий на готовность настройки к конфигурированию.\nЗначение next_retry_at меньше текущей даты"
          },
          "retryCountLessThen": {
            "type": "integer",
            "format": "int32",
            "title": "Пороговое значение количества попыток.\nВозвращает записи, у которых retry_count меньше этого значения"
          }
        },
        "title": "Фильтр конфигураций сгруппированных по устройству"
      },
      "v1DeviceConfigurationStatusGroupedPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: DEVICE_ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatusGroupedPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatusGroupedPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..1000.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод конфигураций сгруппированных по устройству"
      },
      "v1DeviceConfigurationStatusGroupedPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1DeviceConfigurationStatusGroupedPagingOrderByType": {
        "type": "string",
        "enum": [
          "DEVICE_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - DEVICE_ID: По идентификатору устройства",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1DeviceConfigurationStatusStatusType": {
        "type": "string",
        "enum": [
          "SUCCESS",
          "ERROR",
          "PENDING",
          "PROCESSING"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - SUCCESS: Настроен\n - ERROR: Ошибка\n - PENDING: В ожидании обработки\n - PROCESSING: В процессе обработки",
        "title": "Справочник статусов конфигурации настройки устройства.\n# Тип: byte"
      },
      "v1DeviceFilter": {
        "type": "object",
        "properties": {
          "ownerCompanyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам компании владельца"
          },
          "text": {
            "type": "string",
            "title": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование;\n# - MAC-адрес;\n# - Список тегов устройства;\n# - Сетевой адрес;\n# - Серийный номер"
          },
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Идентификатор квартирограммы"
          },
          "serialNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Серийный номер"
          },
          "deviceStatusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceStatusType"
            },
            "title": "Статус устройства"
          },
          "deviceTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceType"
            },
            "title": "Тип назначения устройства"
          },
          "deviceModelTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceModelType"
            },
            "title": "Модель устройства"
          },
          "isConciergeEnabled": {
            "type": "boolean",
            "title": "Переадресация на консъержа"
          },
          "isDispatchingEnabled": {
            "type": "boolean",
            "title": "Диспетчеризация"
          },
          "dispatchingPublicNumber": {
            "type": "string",
            "title": "Поиск по публичному номеру диспетчеризации.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64"
          },
          "hardwareVersion": {
            "type": "string",
            "title": "Версия аппаратного обеспенения.\n# Диапазон: 3..64"
          },
          "softwareVersion": {
            "type": "string",
            "title": "Версия программного обеспенения.\n# Диапазон: 3..64"
          },
          "isAutochangePasswordEnabled": {
            "type": "boolean",
            "title": "Автозамена пароля"
          },
          "abcNumber": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "ABC-номер"
          },
          "cameraIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Идентификаторы камер"
          },
          "syncStatusStatusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1SyncStatusStatusType"
            },
            "title": "Фильтр по статусу синхронизации (SyncStatus.status_type)"
          },
          "syncRetryCountLessThen": {
            "type": "integer",
            "format": "int32",
            "title": "Пороговое значение количества попыток синхронизации.\nВозвращает записи, у которых sync_retry_count меньше этого значения"
          },
          "beginSyncSuccessfulAt": {
            "type": "string",
            "format": "date-time",
            "title": "От даты успешной синхронизации включительно (>=)"
          },
          "endSyncSuccessfulAt": {
            "type": "string",
            "format": "date-time",
            "title": "До даты успешной синхронизации (<)"
          },
          "beginSyncAt": {
            "type": "string",
            "format": "date-time",
            "title": "От даты синхронизации включительно (>=)"
          },
          "endSyncAt": {
            "type": "string",
            "format": "date-time",
            "title": "До даты синхронизации (<)"
          }
        },
        "title": "Фильтр устройств"
      },
      "v1DeviceLite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор.\n# Диапазон: 0..2147483647"
          },
          "type": {
            "title": "Тип назначения устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceType"
              }
            ]
          },
          "title": {
            "type": "string",
            "title": "# Диапазон: 3..256"
          },
          "location": {
            "title": "Координаты",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceLocation"
              }
            ]
          },
          "statusType": {
            "title": "Статус устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceStatusType"
              }
            ]
          }
        },
        "title": "Облегчённое устройство.\n# Описание модели",
        "required": [
          "type",
          "title"
        ]
      },
      "v1DeviceLocation": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "float",
            "title": "Широта"
          },
          "longitude": {
            "type": "number",
            "format": "float",
            "title": "Долгота"
          }
        },
        "title": "Координаты",
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "v1DevicePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1DevicePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1DevicePagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "TITLE",
          "SYNC_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - TITLE: По наименованию\n - SYNC_AT: По дате последней попытки синхронизации",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1DeviceSavingError": {
        "type": "object",
        "properties": {
          "macAddressInvalid": {
            "title": "Переданный мак-адрес не валидный",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorMacAddressInvalid"
              }
            ]
          },
          "serialNumberInvalid": {
            "title": "Переданный серийный номер не валидный",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorSerialNumberInvalid"
              }
            ]
          },
          "notAllowedForType": {
            "title": "Нельзя изменить тип назначения девайса",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorNotAllowedForType"
              }
            ]
          },
          "notAllowedForModel": {
            "title": "Нельзя изменить модель девайса",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorNotAllowedForModel"
              }
            ]
          },
          "serialNumberForModelIsExist": {
            "title": "Серийный номер для данной модели уже существует на платформе",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorSerialNumberForModelIsExist"
              }
            ]
          },
          "macAddressIsExist": {
            "title": "MAC-адрес уже существует на платформе",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorMacAddressIsExist"
              }
            ]
          },
          "capabilityIsNotSupported": {
            "title": "Настройка не поддерживается",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorCapabilityIsNotSupported"
              }
            ]
          },
          "abcNumberIsExistOnAnotherDevice": {
            "title": "ABC-номер присвоен другому устройству",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorAbcNumberIsExistOnAnotherDevice"
              }
            ]
          },
          "publicIdentityIsExist": {
            "title": "Публичный номер уже существует на платформе",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorPublicIdentityIsExist"
              }
            ]
          },
          "conciergeRoomNotFound": {
            "title": "Не найдена квартира для консьержа",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorConciergeRoomNotFound"
              }
            ]
          },
          "loginIsExist": {
            "title": "Логин уже существует на платформе",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorLoginIsExist"
              }
            ]
          },
          "credentialsAreRequired": {
            "title": "Отсутствуют реквизиты для модели \"Спутник\"",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorCredentialsAreRequired"
              }
            ]
          },
          "fieldIsNotSupported": {
            "title": "Переданное поле не поддерживается",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorFieldIsNotSupported"
              }
            ]
          }
        },
        "title": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами"
      },
      "v1DeviceSettings": {
        "type": "object",
        "properties": {
          "coordinateMatrixSwitch": {
            "title": "Настройки ККМ",
            "allOf": [
              {
                "$ref": "#/components/schemas/SettingsCoordinateMatrixSwitch"
              }
            ]
          },
          "conciergeCall": {
            "title": "Настройки вызова консьержа.\nТребуется капабилити CONCIERGE_CALL",
            "allOf": [
              {
                "$ref": "#/components/schemas/SettingsConciergeCall"
              }
            ]
          },
          "autocollect": {
            "title": "Настройки автосбора",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceSettingsAutocollect"
              }
            ]
          },
          "faceRecognition": {
            "title": "Настройки распознования лиц",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceSettingsFaceRecognition"
              }
            ]
          },
          "sl3Mode": {
            "title": "Настройки режима SL3",
            "allOf": [
              {
                "$ref": "#/components/schemas/SettingsSl3Mode"
              }
            ]
          },
          "emergencyCall": {
            "title": "Настройки вызова экстренной службы.\nТолько для устройств с CapabilityType=EMERGENCY_CALL",
            "allOf": [
              {
                "$ref": "#/components/schemas/SettingsEmergencyCall"
              }
            ]
          }
        },
        "title": "Настройки устройства"
      },
      "v1DeviceStatusType": {
        "type": "string",
        "enum": [
          "OFFLINE",
          "ONLINE"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - OFFLINE: Не в сети\n - ONLINE: В сети",
        "title": "Справочник статусов устройства.\n# Тип: byte"
      },
      "v1DeviceType": {
        "type": "string",
        "enum": [
          "INTERCOM",
          "BARRIER",
          "GATE"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - INTERCOM: Домофон\n - BARRIER: Шлагбаум\n - GATE: Калитка",
        "title": "Справочник назначений типов устройств (в качестве чего выступает устройство).\n# Тип: byte"
      },
      "v1GetCmsPhoneCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего устройтсв"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetCmsPhoneCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества аналоговых трубок"
      },
      "v1GetCmsPhoneCountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества аналоговых трубок"
      },
      "v1GetCmsPhoneListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Пресет",
            "allOf": [
              {
                "$ref": "#/components/schemas/devicev1CmsPhone"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetCmsPhoneListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на получение списка аналоговых трубок"
      },
      "v1GetCmsPhoneListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка аналоговых трубок"
      },
      "v1GetCmsPhoneResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Аналоговая трубка",
            "allOf": [
              {
                "$ref": "#/components/schemas/devicev1CmsPhone"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetCmsPhoneResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения аналоговой трубки"
      },
      "v1GetCmsPhoneResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения баннера"
      },
      "v1GetDeviceConfigurationStatusGroupedCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Ответ на запрос получения количества конфигураций сгруппированных по устройству"
      },
      "v1GetDeviceConfigurationStatusGroupedListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Конфигурации устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatusGrouped"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusGroupedListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка конфигураций сгруппированных по устройству"
      },
      "v1GetDeviceConfigurationStatusGroupedListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetDeviceConfigurationStatusesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/GetDeviceConfigurationStatusesResponseStatuses"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceConfigurationStatusesResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения статусов конфигурации устройства"
      },
      "v1GetDeviceConfigurationStatusesResponseError": {
        "type": "object",
        "properties": {
          "validationError": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetDeviceCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества устройств"
      },
      "v1GetDeviceCountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetDeviceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка устройств"
      },
      "v1GetDeviceListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на получение списка устройств"
      },
      "v1GetDeviceLiteResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceLite"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения устройства"
      },
      "v1GetDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения устройства"
      },
      "v1GetSipPhoneCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего трубок"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetSipPhoneCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос количества SIP-трубок"
      },
      "v1GetSipPhoneCountResponseError": {
        "type": "object",
        "title": "Ошибка запроса получения количества SIP-трубок"
      },
      "v1GetSipPhoneListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "SIP-трубка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhone"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetSipPhoneListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос списка SIP-трубок"
      },
      "v1GetSipPhoneListResponseError": {
        "type": "object",
        "properties": {
          "validationError": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка SIP-трубок"
      },
      "v1GetSipPhoneResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "SIP-трубка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhone"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetSipPhoneResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос SIP-трубки"
      },
      "v1GetSipPhoneResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения баннера"
      },
      "v1GetSystemStatusResponse": {
        "type": "object",
        "title": "Ответ на запрос проверки доступности сервиса"
      },
      "v1GetTrunkConfigCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего Trunk-конфигураций"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTrunkConfigCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос количества Trunk-конфигураций"
      },
      "v1GetTrunkConfigCountResponseError": {
        "type": "object",
        "properties": {
          "validationError": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества Trunk-конфигураций"
      },
      "v1GetTrunkConfigListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Trunk-конфигурация",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfig"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTrunkConfigListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос списка Trunk-конфигураций"
      },
      "v1GetTrunkConfigListResponseError": {
        "type": "object",
        "properties": {
          "validationError": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка Trunk-конфигураций"
      },
      "v1GetTrunkConfigResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Trunk-конфигурация",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfig"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTrunkConfigResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос Trunk-конфигурации"
      },
      "v1GetTrunkConfigResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения баннера"
      },
      "v1PostCmsPhoneRefreshRequest": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Идентификатор"
          }
        },
        "title": "Запрос на принудительное обновление статуса аналоговой трубки",
        "required": [
          "ids"
        ]
      },
      "v1PostCmsPhoneRefreshResponse": {
        "type": "object",
        "title": "Ответ на запрос на принудительное обновление статуса аналоговой трубки"
      },
      "v1PostDeviceConfigurationStatusRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Статус конфигурации устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatus"
              }
            ]
          }
        },
        "title": "Запрос на изменение статуса конфигурации устройства",
        "required": [
          "data"
        ]
      },
      "v1PostDeviceConfigurationStatusResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Статус конфигурации устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceConfigurationStatus"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceConfigurationStatusResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на изменение статуса конфигурации устройства"
      },
      "v1PostDeviceConfigurationStatusResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения статуса конфигурации устройства"
      },
      "v1PostDeviceInstallPresetResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка при установке пресета",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceInstallPresetResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос установки пресета на устройство"
      },
      "v1PostDeviceInstallPresetResponseError": {
        "type": "object",
        "properties": {
          "presetStatusIsProcessing": {
            "title": "Пресет в процессе установки",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorPresetStatusIsProcessing"
              }
            ]
          }
        },
        "title": "Ошибка при установке пресета"
      },
      "v1PostDeviceReconfigureResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка переконфигурирования устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceReconfigureResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на переконфигурирование устройства"
      },
      "v1PostDeviceReconfigureResponseError": {
        "type": "object",
        "properties": {
          "validationError": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "reinstallError": {
            "title": "Ошибка реинстала",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ReinstallError"
              }
            ]
          }
        },
        "title": "Ошибка переконфигурирования устройства"
      },
      "v1PostDeviceReplaceResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка замены устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceReplaceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на замену устройства"
      },
      "v1PostDeviceReplaceResponseError": {
        "type": "object",
        "properties": {
          "validationError": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "hostExists": {
            "title": "На платформе уже существует устройство с таким хостом",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorHostExists"
              }
            ]
          },
          "macAddressExists": {
            "title": "На платформе уже существует устройство с таким MAC-адресом",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorMacAddressExists"
              }
            ]
          },
          "serialNumberExists": {
            "title": "На платформе уже существует устройство с таким серийным номером",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorSerialNumberExists"
              }
            ]
          },
          "loginExists": {
            "title": "На платформе уже существует устройство с таким логином (для устройст модели \"Спутник\")",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorLoginExists"
              }
            ]
          },
          "loginIsRequired": {
            "title": "Отсутствует поле Login для модели \"Спутник\"",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorLoginIsRequired"
              }
            ]
          },
          "reinstallError": {
            "title": "Ошибка реинстала",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ReinstallError"
              }
            ]
          }
        },
        "title": "Ошибка замены устройства"
      },
      "v1PostDeviceRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          }
        },
        "title": "Запрос на создание/изменение устройства",
        "required": [
          "data"
        ]
      },
      "v1PostDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на создание/изменение устройства"
      },
      "v1PostDeviceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения устройства"
      },
      "v1PostSipPhoneGetCountRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "title": "Фильтр",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhoneFilter"
              }
            ]
          }
        },
        "title": "Запрос на получение количества SIP-трубок"
      },
      "v1PostSipPhoneGetCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего трубок"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostSipPhoneGetCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос количества SIP-трубок"
      },
      "v1PostSipPhoneGetCountResponseError": {
        "type": "object",
        "title": "Ошибка запроса получения количества SIP-трубок"
      },
      "v1PostSipPhoneGetListRequest": {
        "type": "object",
        "properties": {
          "filter": {
            "title": "Фильтр",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhoneFilter"
              }
            ]
          },
          "paging": {
            "title": "Стандартный постраничный вывод",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhonePaging"
              }
            ]
          }
        },
        "title": "Запрос на получение списка SIP-трубок"
      },
      "v1PostSipPhoneGetListResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1SipPhone"
            },
            "title": "Список SIP-трубок"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostSipPhoneGetListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос списка SIP-трубок"
      },
      "v1PostSipPhoneGetListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка SIP-трубок"
      },
      "v1PostTrunkConfigRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Trunk-конфигурации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfig"
              }
            ]
          }
        },
        "title": "Запрос сохранения Trunk-конфигурации по идентификатору",
        "required": [
          "data"
        ]
      },
      "v1PostTrunkConfigResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Профиль шифрования",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfig"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostTrunkConfigResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения Trunk-конфигурации по идентификатору"
      },
      "v1PostTrunkConfigResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfigSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения Trunk-конфигурации"
      },
      "v1PostTrunkConfigRestoreResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostTrunkConfigRestoreResponseError"
              }
            ]
          }
        },
        "title": "Отвест на запрос разархивации Trunk-конфигурации по идентификатору"
      },
      "v1PostTrunkConfigRestoreResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса разархивации Trunk-конфигурации"
      },
      "v1PutDeviceRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства"
          },
          "presetId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пресета"
          },
          "isSl3ModeEnabled": {
            "type": "boolean",
            "title": "Настройка режима SL3"
          }
        },
        "title": "Запрос изменения устройства",
        "required": [
          "id"
        ]
      },
      "v1PutDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          }
        },
        "title": "ответ на завпрос изменения устройства"
      },
      "v1ReinstallError": {
        "type": "object",
        "properties": {
          "sipLoginIsMissing": {
            "title": "Сип-логин отсутствует на устройстве",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReinstallErrorSipLoginIsMissing"
              }
            ]
          }
        },
        "title": "Ошибки реинстала"
      },
      "v1SipPhone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор трубки.\n# Диапазон: 0..2147483647"
          },
          "roomId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор квартиры.\n# Диапазон: 0..2147483647"
          },
          "sipNumber": {
            "type": "string",
            "title": "SIP номер.\n# Диапазон: 1..200"
          },
          "statusType": {
            "title": "Статус SIP-трубки",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhoneStatusType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта.\n# Тип: DateTime",
            "readOnly": true
          }
        },
        "title": "SIP-трубка.\n# Описание модели",
        "required": [
          "statusType"
        ]
      },
      "v1SipPhoneFilter": {
        "type": "object",
        "properties": {
          "sipNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Фильтр по SIP номерам"
          },
          "roomIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Фильтр по идентификаторам квартир"
          }
        },
        "title": "Фильтр для SIP-трубок"
      },
      "v1SipPhonePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhonePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SipPhonePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1SipPhonePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки;\n# Тип: byte"
      },
      "v1SipPhonePagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "STATUS",
          "CHANGED_AT",
          "CREATED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - STATUS: По статусу доступности\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1SipPhoneStatusType": {
        "type": "string",
        "enum": [
          "ACTIVE",
          "BLOCKED"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - ACTIVE: Активна\n - BLOCKED: Заблокирована",
        "title": "Справочник статусов SIP-трубки.\n# Тип: byte"
      },
      "v1SyncStatus": {
        "type": "object",
        "properties": {
          "statusType": {
            "title": "Статус синхронизации",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SyncStatusStatusType"
              }
            ]
          },
          "errorMessage": {
            "type": "string",
            "title": "Сообщение об ошибке",
            "readOnly": true
          },
          "retryCount": {
            "type": "integer",
            "format": "int32",
            "title": "Количество попыток",
            "readOnly": true
          },
          "successfulAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последней успешной синхронизации.\n# Тип: DateTime",
            "readOnly": true
          },
          "syncAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последней синхронизации.\n# Тип: DateTime",
            "readOnly": true
          }
        },
        "title": "Статус синхронизации.\n# Описание модели"
      },
      "v1SyncStatusStatusType": {
        "type": "string",
        "enum": [
          "NEW",
          "PENDING",
          "ERROR",
          "SUCCESS",
          "DISABLED"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - NEW: Новый\n - PENDING: В процессе\n - ERROR: Ошибка\n - SUCCESS: Успешно\n - DISABLED: Выключено",
        "title": "Статус синхронизации.\n# Тип: byte"
      },
      "v1TrunkConfig": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор.\n# Тип: Guid"
          },
          "cityOrponId": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН Города"
          },
          "deviceSipTrunkSipType": {
            "title": "Тип Trunk-аккаунта",
            "allOf": [
              {
                "$ref": "#/components/schemas/SipTrunkSipType"
              }
            ]
          },
          "ipAddress": {
            "type": "string",
            "title": "IP-адрес.\n# Диапазон: 7..15"
          },
          "port": {
            "type": "integer",
            "format": "int32",
            "title": "Порт.\n# Диапазон: 0..65535"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта.\n# Тип: DateTime"
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата удаления.\n# Тип: DateTime?",
            "readOnly": true
          }
        },
        "title": "Trunk-конфигурация.\n# Описание модели",
        "required": [
          "cityOrponId",
          "deviceSipTrunkSipType",
          "ipAddress",
          "port"
        ]
      },
      "v1TrunkConfigFilter": {
        "type": "object",
        "properties": {
          "cityOrponIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "Фильтр по ОРПОН идентификаторам города"
          },
          "ipAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Фильтр по IP-адресам"
          },
          "showDeleted": {
            "type": "boolean",
            "title": "Показывать удаленные"
          }
        },
        "title": "Фильтр для Trunk-конфигураций"
      },
      "v1TrunkConfigPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfigPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfigPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1TrunkConfigPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки;\n# Тип: byte"
      },
      "v1TrunkConfigPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "CHANGED_AT",
          "CREATED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1TrunkConfigSavingError": {
        "type": "object",
        "properties": {
          "conflict": {
            "title": "Конфликт версий",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TrunkConfigSavingErrorConflict"
              }
            ]
          }
        },
        "title": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами"
      },
      "v1TrunkConfigSavingErrorConflict": {
        "type": "object",
        "title": "Конфликт версий.\nПричины:\n- В базе хранится другая версия строки, значения changed_at оличаются"
      },
      "v1ValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования прото"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      }
    },
    "securitySchemes": {
      "bearerHttp": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://oauth2-staging.k8s.key.rt.ru/oauth2/token",
            "scopes": {
              "device:edit": "Предоставляет полный доступ в сервис device",
              "device:read": "Предоставляет доступ на чтение данных из сервиса device"
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://keyapis-staging.k8s.key.rt.ru",
      "description": "staging"
    },
    {
      "url": "https://{feature}.k8s.key.rt.ru/",
      "description": "https feature",
      "variables": {
        "feature": {
          "default": "",
          "description": "Feature name"
        }
      }
    },
    {
      "url": "http://{feature}.k8s.key.rt.ru/",
      "description": "http feature",
      "variables": {
        "feature": {
          "default": "",
          "description": "Feature name"
        }
      }
    },
    {
      "url": "https://localhost:3001",
      "description": "localhost"
    },
    {
      "url": "https://keyapis.key.rt.ru",
      "description": "production"
    }
  ]
}