openapi: 3.0.3
info:
  title: device
  version: 1.0.1778157124394
  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: |-
        Метод получения количества аналоговых трубок.
        Метод доступен для: 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: |-
            По статусам аналоговой трубки

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - PENDING_ACTIVE: Ожидает активации
             - ACTIVE: Активна
             - PENDING_BLOCKED: Ожидает блокировки
             - 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: |-
        Метод удаления аналоговой трубки по идентификатору устройсва.
        Метод доступен для: 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: |-
        Метод получения списка аналоговых трубок.
        Метод доступен для: 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: |-
            По статусам аналоговой трубки

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - PENDING_ACTIVE: Ожидает активации
             - ACTIVE: Активна
             - PENDING_BLOCKED: Ожидает блокировки
             - 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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - ID: По идентификатору
             - STATUS: По статусу доступности
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
          in: query
          required: false
          schema:
            type: string
            enum:
              - ID
              - STATUS
              - CHANGED_AT
              - CREATED_AT
        - name: paging.directionType
          description: |-
            Тип направления сортировки.
            # По умолчанию: DESC

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            # Диапазон: 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: >-
        Метод удаления аналоговой трубки по идентификатору ОРПОН, номеру
        квартиры и идентификатору устройства.

        Метод доступен для: 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: |-
        Метод удаления аналоговой трубки по идентификатору ОРПОН.
        Метод доступен для: 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: >-
        Метод удаления аналоговой трубки по идентификатору ОРПОН и номеру
        квартиры.

        Метод доступен для: 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: |-
        Метод для принудительного обновления статуса аналоговых трубок.
        Метод доступен для: 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: |-
        Метод получения аналоговой трубки по идентификатору.
        Метод доступен для: 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: |-
        Метод удаления аналоговой трубки.
        Метод доступен для: 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: >-
        Метод создания устройства.

        Метод доступен для: admin, bti, service, owner, employee.

        Для 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: |-
        Метод изменения устройства.
        Метод доступен для: 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: |-
        Метод изменения статуса конфигурации устройства.
        Метод доступен для: 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: |-
        Метод получения количества конфигураций сгруппированных по устройствам.
        Метод доступен для: 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: |-
            По типам конфигурации

             - CONFIGURATION_TYPE_UNKNOWN: Значение не указано
             - PRESET: Пресет
             - SIP_ACCOUNT: Сип-аккаунт
             - SIP_ROOMS: сип-номера в помещениях
             - GATE: Калитка
             - RFIDS: Ключи
             - CODES: Коды
             - FACE_RECOGNITION: Распознование лиц
             - CONCIERGE: Консьерж
             - AUTOCOLLECT: Автосбор
             - SL3: Режим Sl3
             - 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: |-
            По статусам конфигурации настройки

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - SUCCESS: Настроен
             - ERROR: Ошибка
             - PENDING: В ожидании обработки
             - PROCESSING: В процессе обработки
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - SUCCESS
                - ERROR
                - PENDING
                - PROCESSING
        - name: filter.isReadyForRetry
          description: |-
            Флаг, указывающий на готовность настройки к конфигурированию.
            Значение next_retry_at меньше текущей даты
          in: query
          required: false
          schema:
            type: boolean
        - name: filter.retryCountLessThen
          description: |-
            Пороговое значение количества попыток.
            Возвращает записи, у которых 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: |-
        Метод получения списка конфигураций сгруппированных по устройствам.
        Метод доступен для: 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: |-
            По типам конфигурации

             - CONFIGURATION_TYPE_UNKNOWN: Значение не указано
             - PRESET: Пресет
             - SIP_ACCOUNT: Сип-аккаунт
             - SIP_ROOMS: сип-номера в помещениях
             - GATE: Калитка
             - RFIDS: Ключи
             - CODES: Коды
             - FACE_RECOGNITION: Распознование лиц
             - CONCIERGE: Консьерж
             - AUTOCOLLECT: Автосбор
             - SL3: Режим Sl3
             - 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: |-
            По статусам конфигурации настройки

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - SUCCESS: Настроен
             - ERROR: Ошибка
             - PENDING: В ожидании обработки
             - PROCESSING: В процессе обработки
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - SUCCESS
                - ERROR
                - PENDING
                - PROCESSING
        - name: filter.isReadyForRetry
          description: |-
            Флаг, указывающий на готовность настройки к конфигурированию.
            Значение next_retry_at меньше текущей даты
          in: query
          required: false
          schema:
            type: boolean
        - name: filter.retryCountLessThen
          description: |-
            Пороговое значение количества попыток.
            Возвращает записи, у которых retry_count меньше этого значения
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: DEVICE_ID

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - DEVICE_ID: По идентификатору устройства
          in: query
          required: false
          schema:
            type: string
            enum:
              - DEVICE_ID
        - name: paging.directionType
          description: |-
            Тип направления сортировки.
            # По умолчанию: DESC

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..1000.
            # По умолчанию: 20
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            # Диапазон: 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: |-
        Метод получения количества устройств.
        Метод доступен для: 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: |-
            Поиск по тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование;
            # - MAC-адрес;
            # - Список тегов устройства;
            # - Сетевой адрес;
            # - Серийный номер
          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: |-
            Статус устройства

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - OFFLINE: Не в сети
             - ONLINE: В сети
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - OFFLINE
                - ONLINE
        - name: filter.deviceTypes
          description: |-
            Тип назначения устройства

             - TYPE_UNKNOWN: Значение не указано
             - INTERCOM: Домофон
             - BARRIER: Шлагбаум
             - GATE: Калитка
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - INTERCOM
                - BARRIER
                - GATE
        - name: filter.deviceModelTypes
          description: |-
            Модель устройства

             - MODEL_TYPE_UNKNOWN: Значение не указано
             - RODOS8: Модель RODOS-8
             - BEWARD: Модель Beward
             - QTECH: Модель QTECH
             - NATEKS: Модель Натекс
             - TNB: Модель ТНБ
             - MAXETLINE: Модель Maxet Line
             - TNB_DO2: Модель Двойная открывашка
             - BEWARD_DS86017CP: Модель Beward DS86017CP
             - BEWARD_DS85006MP: Модель Beward DS85006MP
             - DAHUA_VTO2101E_P: Модель Dahua DHI-VTO2101E-P
             - HIKVISION_DS_KV8155_IM: Модель Hikvision DS-KV8155-IM
             - RODOS8_2: Модель RODOS-8-2
             - AKUVOX_R29C: Модель Akuvox R29C
             - SAFE_LOGIC: Модель Safe-logic
             - BEWARD_DS86006AP: Модель Beward DS86006AP
             - SPUTNIK_IO: Модель Спутник Ио
             - BEWARD_FR: Модель Beward c FR
             - QTECH_FR: Модель QTECH с FR
             - ELTEX_IPA_ER_010: Модель Eltex IPA-ER-10
             - BEWARD_MIFARE: Модель Beward с новым API ключей
             - BAS_IP_AA_12FB: Модель BAS-IP AA-12FB
             - AKUVOX_X915S: Модель Akuvox X915S
             - RUBETEK_RV_3434: Модель Rubetek RV-3434
             - SOKOL_PLUS: Модель Сокол плюс
             - 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: |-
            Поиск по публичному номеру диспетчеризации.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64
          in: query
          required: false
          schema:
            type: string
        - name: filter.hardwareVersion
          description: |-
            Версия аппаратного обеспенения.
            # Диапазон: 3..64
          in: query
          required: false
          schema:
            type: string
        - name: filter.softwareVersion
          description: |-
            Версия программного обеспенения.
            # Диапазон: 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)

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - NEW: Новый
             - PENDING: В процессе
             - ERROR: Ошибка
             - SUCCESS: Успешно
             - DISABLED: Выключено
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - NEW
                - PENDING
                - ERROR
                - SUCCESS
                - DISABLED
        - name: filter.syncRetryCountLessThen
          description: |-
            Пороговое значение количества попыток синхронизации.
            Возвращает записи, у которых 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: |-
        Метод получения списка устройств.
        Метод доступен для: 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: |-
            Поиск по тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование;
            # - MAC-адрес;
            # - Список тегов устройства;
            # - Сетевой адрес;
            # - Серийный номер
          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: |-
            Статус устройства

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - OFFLINE: Не в сети
             - ONLINE: В сети
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - OFFLINE
                - ONLINE
        - name: filter.deviceTypes
          description: |-
            Тип назначения устройства

             - TYPE_UNKNOWN: Значение не указано
             - INTERCOM: Домофон
             - BARRIER: Шлагбаум
             - GATE: Калитка
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - INTERCOM
                - BARRIER
                - GATE
        - name: filter.deviceModelTypes
          description: |-
            Модель устройства

             - MODEL_TYPE_UNKNOWN: Значение не указано
             - RODOS8: Модель RODOS-8
             - BEWARD: Модель Beward
             - QTECH: Модель QTECH
             - NATEKS: Модель Натекс
             - TNB: Модель ТНБ
             - MAXETLINE: Модель Maxet Line
             - TNB_DO2: Модель Двойная открывашка
             - BEWARD_DS86017CP: Модель Beward DS86017CP
             - BEWARD_DS85006MP: Модель Beward DS85006MP
             - DAHUA_VTO2101E_P: Модель Dahua DHI-VTO2101E-P
             - HIKVISION_DS_KV8155_IM: Модель Hikvision DS-KV8155-IM
             - RODOS8_2: Модель RODOS-8-2
             - AKUVOX_R29C: Модель Akuvox R29C
             - SAFE_LOGIC: Модель Safe-logic
             - BEWARD_DS86006AP: Модель Beward DS86006AP
             - SPUTNIK_IO: Модель Спутник Ио
             - BEWARD_FR: Модель Beward c FR
             - QTECH_FR: Модель QTECH с FR
             - ELTEX_IPA_ER_010: Модель Eltex IPA-ER-10
             - BEWARD_MIFARE: Модель Beward с новым API ключей
             - BAS_IP_AA_12FB: Модель BAS-IP AA-12FB
             - AKUVOX_X915S: Модель Akuvox X915S
             - RUBETEK_RV_3434: Модель Rubetek RV-3434
             - SOKOL_PLUS: Модель Сокол плюс
             - 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: |-
            Поиск по публичному номеру диспетчеризации.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64
          in: query
          required: false
          schema:
            type: string
        - name: filter.hardwareVersion
          description: |-
            Версия аппаратного обеспенения.
            # Диапазон: 3..64
          in: query
          required: false
          schema:
            type: string
        - name: filter.softwareVersion
          description: |-
            Версия программного обеспенения.
            # Диапазон: 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)

             - STATUS_TYPE_UNKNOWN: Значение не указано
             - NEW: Новый
             - PENDING: В процессе
             - ERROR: Ошибка
             - SUCCESS: Успешно
             - DISABLED: Выключено
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - NEW
                - PENDING
                - ERROR
                - SUCCESS
                - DISABLED
        - name: filter.syncRetryCountLessThen
          description: |-
            Пороговое значение количества попыток синхронизации.
            Возвращает записи, у которых 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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: ID

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - ID: По идентификатору
             - TITLE: По наименованию
             - SYNC_AT: По дате последней попытки синхронизации
          in: query
          required: false
          schema:
            type: string
            enum:
              - ID
              - TITLE
              - SYNC_AT
        - name: paging.directionType
          description: |-
            Тип направления сортировки.
            # По умолчанию: DESC

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            # Диапазон: 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: |-
        Метод получаения устройства.
        Метод доступен для: 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: |-
        Метод удаления устройства.
        Метод доступен для: 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: |-
        Метод получения статусов конфигурации устройства.
        Метод доступен для: 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: |-
        Метод установки пресета на устройство.
        Метод доступен для: 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: >-
        Метод переконфигурирования устройста.

        Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=630337555.

        Метод доступен для: 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: >-
        Метод замены устройста.

        Логика работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=655256574.

        Метод доступен для: 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-адрес.
                    # Диапазон: 17..17.
                    # Паттерн: /^([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: |-
        Метод получаения упрощенного устройства.
        Метод доступен для: admin, service, owner, employee, bti, ltp_first.
        Метод доступен для: 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-трубок.
        Метод доступен для: 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-трубок.
        Метод доступен для: 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-трубок.
        Метод доступен для: 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-трубок.
        Метод доступен для: 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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - ID: По идентификатору
             - STATUS: По статусу доступности
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
          in: query
          required: false
          schema:
            type: string
            enum:
              - ID
              - STATUS
              - CHANGED_AT
              - CREATED_AT
        - name: paging.directionType
          description: |-
            Тип направления сортировки.
            # По умолчанию: DESC

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            # Диапазон: 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-трубки по идентификатору.
        Метод доступен для: 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: |-
        Метод получения статуса сервиса.
        Не требует авторизации
      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-конфигурации.
        Поддерживает создание и обновление.
        Метод доступен для: 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-конфигураций.
        Метод доступен для: 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-конфигураций.
        Метод доступен для: 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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - ID: По идентификатору
             - CHANGED_AT: Дата последнего изменения
             - CREATED_AT: Дата создания
          in: query
          required: false
          schema:
            type: string
            enum:
              - ID
              - CHANGED_AT
              - CREATED_AT
        - name: paging.directionType
          description: |-
            Тип направления сортировки.
            # По умолчанию: DESC

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            # Диапазон: 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-конфигурации.
        Метод доступен для: 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: |-
            Идентификатор.
            # Тип: 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-конфигурации.
        Метод доступен для: 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: |-
            Идентификатор трубки.
            # Тип: 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-конфигурации.
        Метод доступен для: 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: |-
            Идентификатор.
            # Тип: 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: Значение не указано
         - API: Доступ к api
         - WEB: Доступ к web-интерфейсу
         - RTSP: Доступ к rtsp-потоку
         - SU: Полный доступ
      title: |-
        Тип доступа пользователя.
        # Тип: 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: |-
            Дата включения автосбора.
            # Тип: DateTime
        toBeDisabledAt:
          type: string
          format: date-time
          title: |-
            Дата отключения автосбора.
            # Тип: DateTime
      title: Автоколлект
    DeviceCredentials:
      type: object
      properties:
        login:
          type: string
          title: |-
            Логин.
            # Диапазон: 0..100
        password:
          type: string
          title: |-
            Пароль.
            # Диапазон: 0..100
        userAccessType:
          title: Тип доступа пользователя
          allOf:
            - $ref: "#/components/schemas/CredentialsUserAccessType"
      title: Учетные данные пользователей
    DeviceDispatching:
      type: object
      properties:
        isEnabled:
          type: boolean
          title: Статус настройки диспетчеризации
        publicIdentity:
          type: string
          title: |-
            Публичный номер.
            # Паттерн: /^[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: Значение не указано
         - RODOS8: Модель RODOS-8
         - BEWARD: Модель Beward
         - QTECH: Модель QTECH
         - NATEKS: Модель Натекс
         - TNB: Модель ТНБ
         - MAXETLINE: Модель Maxet Line
         - TNB_DO2: Модель Двойная открывашка
         - BEWARD_DS86017CP: Модель Beward DS86017CP
         - BEWARD_DS85006MP: Модель Beward DS85006MP
         - DAHUA_VTO2101E_P: Модель Dahua DHI-VTO2101E-P
         - HIKVISION_DS_KV8155_IM: Модель Hikvision DS-KV8155-IM
         - RODOS8_2: Модель RODOS-8-2
         - AKUVOX_R29C: Модель Akuvox R29C
         - SAFE_LOGIC: Модель Safe-logic
         - BEWARD_DS86006AP: Модель Beward DS86006AP
         - SPUTNIK_IO: Модель Спутник Ио
         - BEWARD_FR: Модель Beward c FR
         - QTECH_FR: Модель QTECH с FR
         - ELTEX_IPA_ER_010: Модель Eltex IPA-ER-10
         - BEWARD_MIFARE: Модель Beward с новым API ключей
         - BAS_IP_AA_12FB: Модель BAS-IP AA-12FB
         - AKUVOX_X915S: Модель Akuvox X915S
         - RUBETEK_RV_3434: Модель Rubetek RV-3434
         - SOKOL_PLUS: Модель Сокол плюс
         - BEWARD_LOW_COST: Модель Beward Эконом
      title: |-
        Модель устройства.
        # Тип: byte
    DeviceRedirect:
      type: object
      properties:
        isEnabledSip:
          type: boolean
          title: Переадресация на SIP
        isEnabledPhone:
          type: boolean
          title: Переадресация на телефон
      title: |-
        Переадресация.
        Требуется капабилити 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-номер.
            # Паттерн: /^(\+7)(\d{10})$/
        host:
          type: string
          title: |-
            Хост.
            # Диапазон: 0..250
        port:
          type: integer
          format: int32
          title: |-
            Порт.
            # Диапазон: 0..65535
        sipType:
          title: Тип сети связи
          allOf:
            - $ref: "#/components/schemas/SipTrunkSipType"
      title: >-
        Транк.

        Параметры для соединения между устрйоством и телефонной сетью общего пользования.

        Требуется капабилити SIP_CALLS
      required:
        - abcNumber
        - sipType
    DeviceSputnikCredentials:
      type: object
      properties:
        login:
          type: string
          title: |-
            Логин.
            # Тип: Guid
        password:
          type: string
          title: |-
            Пароль.
            На чтение выводится только для пользователя с типом service
      title: |-
        Учетные данные.
        Используется для устройств с типом модели 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: Значение не указано
         - CHANGE_PASSWORD: Возможность смены пароля
         - DTMF_CODE: DTMF коды
         - FLAT_AUTOCOLLECT: Поддержка квартирного автосбора
         - SIP_CALL: Поддержка звонков
         - REINSTALL: Поддержка реконфигурирования устройства
         - EMERGENCY_DOOR: Аварийное открытие двери
         - TICKER: Поддержка бегущей строки
         - CONCIERGE_CALL: Вызов на номер консьержа
         - AUTOCOLLECT: Поддержка умного автосбора
         - TEMPORARY_KEY: Временные ключи
         - OPEN_DOOR: Открытие двери
         - GATE: Поддержка калитки
         - SIP_VIDEO: SIP видео вызов
         - CONSTANT_KEY: Постоянные ключи
         - CMS_PHONES: Поддержка аналоговых трубок
         - SL3: Поддержка шифрования ключей SL3
         - SYSLOG: Поддержка стандарта Syslog
         - NTP: Поддержка протокола NTP
         - FACE_RECOGNITION: Распознавание лиц
         - CAMERA: Видеокамера
         - 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: |-
            Номер квартиры.
            # Диапазон: 1..5
        sipNumber:
          type: string
          title: Номер сип-трубки
          readOnly: true
      title: Настройки вызова консьержа
      required:
        - isEnabled
        - orpon
        - roomNumber
    SettingsCoordinateMatrixSwitch:
      type: object
      properties:
        isEnabled:
          type: boolean
          title: Состояние
      title: >-
        Настройки ККМ.

        Коммутатор координатно-матричный (устройство для подключения аналоговых трубок к домофону)
      required:
        - isEnabled
    SettingsEmergencyCall:
      type: object
      properties:
        isCallAvailable:
          type: boolean
          title: Возможность вызова экстренной службы
        emergencyNumber:
          type: string
          title: |-
            АБС-номер экстренной службы.
            # Паттерн: /^\+[1-9][0-9]{10}$/
      title: |-
        Настройки вызова экстренной службы.
        Только для устройств с 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: Значение не указано
         - VIMS: Тип Viprtual IP Multimedia Subsystem
         - NGN: Тип Next Generation Networks
      title: |-
        Тип сети связи.
        # Тип: byte
    devicev1CmsPhone:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: |-
            Идентификатор.
            # Диапазон: 0..2147483647
        orponId:
          type: string
          format: int64
          title: |-
            ОРПОН Дома.
            # Диапазон: 0..2147483647
        room:
          type: string
          title: |-
            Номер квартиры.
            # Диапазон: 1..5
        deviceId:
          type: integer
          format: int32
          title: |-
            Идентификатор устройства.
            # Диапазон: 0..2147483647
        statusType:
          title: Статус аналоговой трубки
          allOf:
            - $ref: "#/components/schemas/v1CmsPhoneStatusType"
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            Заполняется при создании и изменении.
            Является версией объекта.
            # Тип: DateTime
          readOnly: true
        retryCount:
          type: integer
          format: int32
          title: |-
            Счетчик попыток обновления.
            # Диапазон: 0..2147483647
      title: |-
        Аналоговая трубка.
        # Описание модели
      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.
            # Тип: Guid
        statusType:
          title: Статус камеры
          readOnly: true
          allOf:
            - $ref: "#/components/schemas/v1CameraStatusStatusType"
        errorMessage:
          type: string
          title: Сообщение об ошибке
          readOnly: true
      title: |-
        Статус камеры.
        # Описание модели
    v1CameraStatusStatusType:
      type: string
      enum:
        - PROCESSING
        - PROCESSING_ERROR
        - ACTIVE
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - PROCESSING: В процессе регистрации
         - PROCESSING_ERROR: Ошибка регистрации
         - ACTIVE: Активна
      title: |-
        Статус камеры.
        # Тип: 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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1CmsPhonePagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1CmsPhonePagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1CmsPhonePagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки;
        # Тип: byte
    v1CmsPhonePagingOrderByType:
      type: string
      enum:
        - ID
        - STATUS
        - CHANGED_AT
        - CREATED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - ID: По идентификатору
         - STATUS: По статусу доступности
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1CmsPhoneStatusType:
      type: string
      enum:
        - PENDING_ACTIVE
        - ACTIVE
        - PENDING_BLOCKED
        - BLOCKED
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - PENDING_ACTIVE: Ожидает активации
         - ACTIVE: Активна
         - PENDING_BLOCKED: Ожидает блокировки
         - BLOCKED: Заблокирована
      title: |-
        Справочник статусов аналоговой трубки.
        # Тип: 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: |-
            Идентификатор.
            # Диапазон: 0..2147483647
        presetId:
          type: integer
          format: int32
          title: |-
            Идентификатор пресета.
            # Диапазон: 1..2147483647
        type:
          title: Тип назначения устройства
          allOf:
            - $ref: "#/components/schemas/v1DeviceType"
        macAddress:
          type: string
          title: |-
            MAC-адрес.
            # Диапазон: 17..17.
            # Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/
        title:
          type: string
          title: |-
            Наименование устройства.
            # Диапазон: 3..256
        modelType:
          title: Модель устройства
          allOf:
            - $ref: "#/components/schemas/DeviceModelType"
        ownerCompanyId:
          type: integer
          format: int32
          title: |-
            Идентификатор компании владельца.
            # Диапазон: 1..2147483647
        serialNumber:
          type: string
          title: |-
            Серийный номер.
            # Диапазон: 1..16
        flatgrammId:
          type: integer
          format: int32
          title: |-
            Идентификатор квартирограммы.
            # Диапазон: 1..2147483647
        utcOffset:
          type: integer
          format: int32
          title: |-
            Смещение таймзоны в минутах.
            # Диапазон: -720..840
        statusType:
          title: Статус устройства
          readOnly: true
          allOf:
            - $ref: "#/components/schemas/v1DeviceStatusType"
        ipAddress:
          type: string
          title: |-
            Сетевой адрес.
            # Диапазон: 0..250
        port:
          type: integer
          format: int32
          title: |-
            Сетевой порт.
            # Диапазон: 0..65535
        sputnikCredentials:
          title: |-
            Учетные данные.
            Используется для устройств с типом модели SPUTNIK_IO
          allOf:
            - $ref: "#/components/schemas/DeviceSputnikCredentials"
        location:
          title: Координаты
          allOf:
            - $ref: "#/components/schemas/v1DeviceLocation"
        cameraId:
          type: string
          title: |-
            Идентификатор камеры uid.
            # Тип: Guid
        tags:
          type: array
          items:
            type: string
          title: |-
            Список тегов устройства.
            # Диапазон: 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: |-
        Устройство.
        # Описание модели
      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: |-
            Дата последней конфигурации устройства.
            # Тип: 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: |-
            Минимально возможная дата выполнения следующей попытки.
            # Тип: DateTime
          readOnly: true
      title: |-
        Статус конфигурации устройства.
        # Описание модели
      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: Значение не указано
         - PRESET: Пресет
         - SIP_ACCOUNT: Сип-аккаунт
         - SIP_ROOMS: сип-номера в помещениях
         - GATE: Калитка
         - RFIDS: Ключи
         - CODES: Коды
         - FACE_RECOGNITION: Распознование лиц
         - CONCIERGE: Консьерж
         - AUTOCOLLECT: Автосбор
         - SL3: Режим Sl3
         - EMERGENCY_CALL: Вызов экстренной службы
      title: |-
        Тип конфигурации.
        # Тип: 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: |-
            Флаг, указывающий на готовность настройки к конфигурированию.
            Значение next_retry_at меньше текущей даты
        retryCountLessThen:
          type: integer
          format: int32
          title: |-
            Пороговое значение количества попыток.
            Возвращает записи, у которых retry_count меньше этого значения
      title: Фильтр конфигураций сгруппированных по устройству
    v1DeviceConfigurationStatusGroupedPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: DEVICE_ID
          allOf:
            - $ref: "#/components/schemas/v1DeviceConfigurationStatusGroupedPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1DeviceConfigurationStatusGroupedPagingDirectionTy\
                pe"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..1000.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод конфигураций сгруппированных по устройству
    v1DeviceConfigurationStatusGroupedPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1DeviceConfigurationStatusGroupedPagingOrderByType:
      type: string
      enum:
        - DEVICE_ID
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - DEVICE_ID: По идентификатору устройства
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1DeviceConfigurationStatusStatusType:
      type: string
      enum:
        - SUCCESS
        - ERROR
        - PENDING
        - PROCESSING
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - SUCCESS: Настроен
         - ERROR: Ошибка
         - PENDING: В ожидании обработки
         - PROCESSING: В процессе обработки
      title: |-
        Справочник статусов конфигурации настройки устройства.
        # Тип: byte
    v1DeviceFilter:
      type: object
      properties:
        ownerCompanyIds:
          type: array
          items:
            type: integer
            format: int32
          title: По идентификаторам компании владельца
        text:
          type: string
          title: |-
            Поиск по тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование;
            # - MAC-адрес;
            # - Список тегов устройства;
            # - Сетевой адрес;
            # - Серийный номер
        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: |-
            Поиск по публичному номеру диспетчеризации.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64
        hardwareVersion:
          type: string
          title: |-
            Версия аппаратного обеспенения.
            # Диапазон: 3..64
        softwareVersion:
          type: string
          title: |-
            Версия программного обеспенения.
            # Диапазон: 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: |-
            Пороговое значение количества попыток синхронизации.
            Возвращает записи, у которых 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: |-
            Идентификатор.
            # Диапазон: 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: |-
        Облегчённое устройство.
        # Описание модели
      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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: ID
          allOf:
            - $ref: "#/components/schemas/v1DevicePagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1DevicePagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1DevicePagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1DevicePagingOrderByType:
      type: string
      enum:
        - ID
        - TITLE
        - SYNC_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - ID: По идентификатору
         - TITLE: По наименованию
         - SYNC_AT: По дате последней попытки синхронизации
      title: |-
        Справочник типов значений сортировки.
        # Тип: 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: >-
        Ошибка сохранения.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    v1DeviceSettings:
      type: object
      properties:
        coordinateMatrixSwitch:
          title: Настройки ККМ
          allOf:
            - $ref: "#/components/schemas/SettingsCoordinateMatrixSwitch"
        conciergeCall:
          title: |-
            Настройки вызова консьержа.
            Требуется капабилити 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: |-
            Настройки вызова экстренной службы.
            Только для устройств с CapabilityType=EMERGENCY_CALL
          allOf:
            - $ref: "#/components/schemas/SettingsEmergencyCall"
      title: Настройки устройства
    v1DeviceStatusType:
      type: string
      enum:
        - OFFLINE
        - ONLINE
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - OFFLINE: Не в сети
         - ONLINE: В сети
      title: |-
        Справочник статусов устройства.
        # Тип: byte
    v1DeviceType:
      type: string
      enum:
        - INTERCOM
        - BARRIER
        - GATE
      description: |-
        - TYPE_UNKNOWN: Значение не указано
         - INTERCOM: Домофон
         - BARRIER: Шлагбаум
         - GATE: Калитка
      title: >-
        Справочник назначений типов устройств (в качестве чего выступает
        устройство).

        # Тип: 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/v1GetDeviceConfigurationStatusGroupedListResponseEr\
                ror"
      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: |-
            Идентификатор трубки.
            # Диапазон: 0..2147483647
        roomId:
          type: integer
          format: int32
          title: |-
            Идентификатор квартиры.
            # Диапазон: 0..2147483647
        sipNumber:
          type: string
          title: |-
            SIP номер.
            # Диапазон: 1..200
        statusType:
          title: Статус SIP-трубки
          allOf:
            - $ref: "#/components/schemas/v1SipPhoneStatusType"
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            Заполняется при создании и изменении.
            Является версией объекта.
            # Тип: DateTime
          readOnly: true
      title: |-
        SIP-трубка.
        # Описание модели
      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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1SipPhonePagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1SipPhonePagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1SipPhonePagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки;
        # Тип: byte
    v1SipPhonePagingOrderByType:
      type: string
      enum:
        - ID
        - STATUS
        - CHANGED_AT
        - CREATED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - ID: По идентификатору
         - STATUS: По статусу доступности
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1SipPhoneStatusType:
      type: string
      enum:
        - ACTIVE
        - BLOCKED
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - ACTIVE: Активна
         - BLOCKED: Заблокирована
      title: |-
        Справочник статусов SIP-трубки.
        # Тип: 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: |-
            Дата последней успешной синхронизации.
            # Тип: DateTime
          readOnly: true
        syncAt:
          type: string
          format: date-time
          title: |-
            Дата последней синхронизации.
            # Тип: DateTime
          readOnly: true
      title: |-
        Статус синхронизации.
        # Описание модели
    v1SyncStatusStatusType:
      type: string
      enum:
        - NEW
        - PENDING
        - ERROR
        - SUCCESS
        - DISABLED
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - NEW: Новый
         - PENDING: В процессе
         - ERROR: Ошибка
         - SUCCESS: Успешно
         - DISABLED: Выключено
      title: |-
        Статус синхронизации.
        # Тип: byte
    v1TrunkConfig:
      type: object
      properties:
        id:
          type: string
          title: |-
            Идентификатор.
            # Тип: Guid
        cityOrponId:
          type: string
          format: int64
          title: ОРПОН Города
        deviceSipTrunkSipType:
          title: Тип Trunk-аккаунта
          allOf:
            - $ref: "#/components/schemas/SipTrunkSipType"
        ipAddress:
          type: string
          title: |-
            IP-адрес.
            # Диапазон: 7..15
        port:
          type: integer
          format: int32
          title: |-
            Порт.
            # Диапазон: 0..65535
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания.
            # Тип: DateTime
          readOnly: true
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            Заполняется при создании и изменении.
            Является версией объекта.
            # Тип: DateTime
        deletedAt:
          type: string
          format: date-time
          title: |-
            Дата удаления.
            # Тип: DateTime?
          readOnly: true
      title: |-
        Trunk-конфигурация.
        # Описание модели
      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: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            # По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1TrunkConfigPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1TrunkConfigPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1TrunkConfigPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки;
        # Тип: byte
    v1TrunkConfigPagingOrderByType:
      type: string
      enum:
        - ID
        - CHANGED_AT
        - CREATED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - ID: По идентификатору
         - CHANGED_AT: Дата последнего изменения
         - CREATED_AT: Дата создания
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1TrunkConfigSavingError:
      type: object
      properties:
        conflict:
          title: Конфликт версий
          allOf:
            - $ref: "#/components/schemas/v1TrunkConfigSavingErrorConflict"
      title: >-
        Ошибка сохранения.

        Эти проверки выполняются при работе с базой данных и сторонними сервисами
    v1TrunkConfigSavingErrorConflict:
      type: object
      title: |-
        Конфликт версий.
        Причины:
        - В базе хранится другая версия строки, значения changed_at оличаются
    v1ValidationError:
      type: object
      properties:
        path:
          type: string
          title: Путь к полю в формате наименования прото
        message:
          type: string
          title: Валидационное сообщение
      title: |-
        Ошибки валидации.
        Эти проверки выполняются до обращения в базу данных
      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
