openapi: 3.0.3
info:
  title: vc
  version: 1.0.1779702974360
  description: Сервис vc
  license:
    name: CC BY-NC-ND 4.0
    url: https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md
tags:
  - name: camera(auth)
    description: Методы camera. Требуют авторизацию. Доступны из интернета
  - name: camera_collection(auth)
    description: Методы camera_collection. Требуют авторизацию. Доступны из интернета
  - name: camera_location_data(auth)
    description: Методы camera_location_data. Требуют авторизацию. Доступны из интернета
  - name: camera_video_data(auth)
    description: Методы camera_video_data. Требуют авторизацию. Доступны из интернета
  - name: company(auth)
    description: Методы company. Требуют авторизацию. Доступны из интернета
  - name: dictionary(auth)
    description: Методы dictionary. Требуют авторизацию. Доступны из интернета
paths:
  /vc/api/v1/camera:
    post:
      summary: |-
        Метод создания камеры.
        Метод доступен для: admin, service, bti
      operationId: CameraService_PostCamera
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCameraResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCameraResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCameraResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PostCameraRequest"
        required: true
      tags:
        - camera(auth)
      security:
        - oauth2:
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
  /vc/api/v1/camera/list:
    get:
      summary: >-
        Метод получения списка камер.

        Для owner, employee параметр scope.vc_company_id подставляется из токена.

        Метод доступен для: admin, service, bti, ltp_first, owner, employee
      operationId: CameraService_GetCameraList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraListResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraListResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraListResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: scope.vcCompanyId
          description: Внешний идентификатор компании
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: filter.isActive
          description: Признак активности камеры
          in: query
          required: false
          schema:
            type: boolean
        - name: filter.isChannelAlive
          description: Признак активности канала
          in: query
          required: false
          schema:
            type: boolean
        - name: filter.isOnline
          description: Статус камеры
          in: query
          required: false
          schema:
            type: boolean
        - name: filter.cameraType
          description: |-
            Тип камеры

             - TYPE_UNKNOWN: Значение не указано
             - DVR: Регистратор
             - VMS: Система управления видео
             - ROSE: RTSP-камера
             - VIOLET: IP-камера
          in: query
          required: false
          schema:
            type: string
            enum:
              - DVR
              - VMS
              - ROSE
              - VIOLET
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - UID: По идентификатору
          in: query
          required: false
          schema:
            type: string
            enum:
              - UID
        - 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:
        - camera(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  /vc/api/v1/camera/room/attach/list:
    put:
      summary: |-
        Метод пакетной привязки камер и квартир.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraService_PutCameraRoomAttachList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomAttachListResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomAttachListResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomAttachListResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PutCameraRoomAttachListRequest"
        required: true
      tags:
        - camera(auth)
      security:
        - oauth2:
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
  /vc/api/v1/camera/room/count:
    get:
      summary: |-
        Метод получения количества связей камеры и квартиры.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraService_GetCameraRoomCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraRoomCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraRoomCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraRoomCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: filter.cameraUids
          description: |-
            По Идентификаторам камер.
            # Диапазон: 0..100
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.orpons
          description: |-
            По ОРПОНам.
            # Диапазон: 0..100
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              format: int64
        - name: filter.roomNumbers
          description: |-
            По квартирам.
            # Диапазон: 0..100
          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:
        - camera(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  /vc/api/v1/camera/room/detach/list:
    put:
      summary: |-
        Метод пакетной отвязки камер и квартир.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraService_PutCameraRoomDetachList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomDetachListResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomDetachListResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomDetachListResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1PutCameraRoomDetachListRequest"
        required: true
      tags:
        - camera(auth)
      security:
        - oauth2:
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
  /vc/api/v1/camera/room/list:
    get:
      summary: |-
        Метод получения списка связей камеры и квартиры.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraService_GetCameraRoomList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetCameraRoomListResponse"
                  error:
                    $ref: "#/components/schemas/googlerpcStatus"
                title: Поток объектов v1GetCameraRoomListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: filter.cameraUids
          description: |-
            По Идентификаторам камер.
            # Диапазон: 0..100
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.orpons
          description: |-
            По ОРПОНам.
            # Диапазон: 0..100
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              format: int64
        - name: filter.roomNumbers
          description: |-
            По квартирам.
            # Диапазон: 0..100
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: paging.orderByType
          description: >-
            Тип значения сортировки.

            Если значение не передано, то будет взято значение по умолчанию CAMERA_UID

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - CAMERA_UID: По Идентификатору камеры
             - ORPON_ROOM_NUMBER: По ОРПОН и номеру квартиры
          in: query
          required: false
          schema:
            type: string
            enum:
              - CAMERA_UID
              - ORPON_ROOM_NUMBER
        - 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:
        - camera(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera/rtsp_url/external_id/{externalId}":
    get:
      summary: |-
        Метод получения RTSP-ссылки по идентификатору камеры в vcfront.
        Метод доступен для: admin, service.
        Метод доступен для: ApiKey
      operationId: CameraService_GetCameraRtspUrlExternalId
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraRtspUrlExternalIdResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraRtspUrlExternalIdResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraRtspUrlExternalIdResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: externalId
          description: |-
            Идентификатор камеры в vcfront.
            # Тип: 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:
        - camera(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera/{data.cameraUid}/room/{data.orpon}/{data.roomNumber}/attach":
    put:
      summary: |-
        Метод привязки камеры и квартиры.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraService_PutCameraRoomAttach
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomAttachResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomAttachResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomAttachResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: data.cameraUid
          description: Идентификатор камеры
          in: path
          required: true
          schema:
            type: string
        - name: data.orpon
          description: ОРПОН дома
          in: path
          required: true
          schema:
            type: string
            format: int64
        - name: data.roomNumber
          description: |-
            Номер квартиры.
            # Диапазон: 1..4
          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:
        - camera(auth)
      security:
        - oauth2:
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera/{data.cameraUid}/room/{data.orpon}/{data.roomNumber}/detach":
    put:
      summary: |-
        Метод отвязки камеры и квартиры.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraService_PutCameraRoomDetach
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomDetachResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomDetachResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PutCameraRoomDetachResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: data.cameraUid
          description: Идентификатор камеры
          in: path
          required: true
          schema:
            type: string
        - name: data.orpon
          description: ОРПОН дома
          in: path
          required: true
          schema:
            type: string
            format: int64
        - name: data.roomNumber
          description: |-
            Номер квартиры.
            # Диапазон: 1..4
          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:
        - camera(auth)
      security:
        - oauth2:
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera/{uid}":
    get:
      summary: >-
        Метод получения камеры.

        Для owner, employee параметр scope.vc_company_id подставляется из токена.

        Метод доступен для: admin, service, bti, ltp_first, owner, employee
      operationId: CameraService_GetCamera
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: uid
          description: uid камеры
          in: path
          required: true
          schema:
            type: string
        - name: scope.vcCompanyId
          description: Внешний идентификатор компании
          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:
        - camera(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
    delete:
      summary: |-
        Метод удаления камеры.
        Метод доступен для: admin, service, bti
      operationId: CameraService_DeleteCamera
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteCameraResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteCameraResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteCameraResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: uid
          description: |-
            Идентификатор камеры в vcfront.
            # Тип: Guid
          in: path
          required: true
          schema:
            type: string
        - name: isDeletePermanently
          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:
        - camera(auth)
      security:
        - oauth2:
            - vc:edit
          bearerHttp: []
  /vc/api/v1/camera_collection:
    post:
      summary: >-
        Метод создания и изменения коллекции камер.

        При изменении коллекции массив external_camera_ids заменяется полностью.

        Для owner, employee сравнивается COMPANY_ID из токена и company_id коллекции, при несовпадении ошибка доступа.

        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraCollectionService_SaveCameraCollection
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1SaveCameraCollectionResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1SaveCameraCollectionResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1SaveCameraCollectionResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/v1SaveCameraCollectionRequest"
        required: true
      tags:
        - camera_collection(auth)
      security:
        - oauth2:
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
  /vc/api/v1/camera_collection/count:
    get:
      summary: >-
        Метод получения количества коллекций камер.

        Для owner, employee возвращаются только коллекции камер c COMPANY_ID из токена.

        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraCollectionService_GetCameraCollectionCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraCollectionCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraCollectionCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraCollectionCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование.
            # - Описание.
            # - Теги коллекции
          in: query
          required: false
          schema:
            type: string
        - name: filter.tags
          description: |-
            По тегам.
            Диапазон: 0..10
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.companyIds
          description: |-
            По компаниям.
            Диапазон: 0..10
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              format: int64
        - name: filter.isDeleted
          description: >-
            Показывать удаленные.

            Если поле не передано, по умолчанию false, фильтр исключает удаленные
          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:
        - camera_collection(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  /vc/api/v1/camera_collection/list:
    get:
      summary: >-
        Метод получения списка коллекций камер.

        Для owner, employee возвращаются только коллекции камер c COMPANY_ID из токена.

        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraCollectionService_GetCameraCollectionList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetCameraCollectionListResponse"
                  error:
                    $ref: "#/components/schemas/googlerpcStatus"
                title: Поток объектов v1GetCameraCollectionListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: filter.text
          description: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование.
            # - Описание.
            # - Теги коллекции
          in: query
          required: false
          schema:
            type: string
        - name: filter.tags
          description: |-
            По тегам.
            Диапазон: 0..10
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.companyIds
          description: |-
            По компаниям.
            Диапазон: 0..10
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              format: int64
        - name: filter.isDeleted
          description: >-
            Показывать удаленные.

            Если поле не передано, по умолчанию false, фильтр исключает удаленные
          in: query
          required: false
          schema:
            type: boolean
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            По умолчанию: CHANGED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - ID: По идентификатору
             - NAME: По имени
             - CHANGED_AT: По времени изменения
          in: query
          required: false
          schema:
            type: string
            enum:
              - ID
              - NAME
              - CHANGED_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:
        - camera_collection(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera_collection/restore/{id}":
    post:
      summary: >-
        Метод восстановления удаленной коллекции камер.

        Проставляет null в поле deleted_at.

        Для owner, employee сравнивается COMPANY_ID из токена и company_id коллекции, при несовпадении ошибка доступа.

        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraCollectionService_PostCameraCollectionRestore
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCameraCollectionRestoreResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCameraCollectionRestoreResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCameraCollectionRestoreResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      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:
        - camera_collection(auth)
      security:
        - oauth2:
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera_collection/{id}":
    get:
      summary: >-
        Метод получения коллекции камер.

        Для owner, employee возвращаются только коллекции камер c COMPANY_ID из токена.

        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraCollectionService_GetCameraCollection
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraCollectionResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraCollectionResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraCollectionResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      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:
        - camera_collection(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
    delete:
      summary: >-
        Метод удаления коллекции камер.

        Проставляет в поле deleted_at текущую дату.

        Для owner, employee сравнивается COMPANY_ID из токена и company_id коллекции, при несовпадении ошибка доступа.

        Метод доступен для: admin, service, bti, owner, employee
      operationId: CameraCollectionService_DeleteCameraCollection
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteCameraCollectionResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteCameraCollectionResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1DeleteCameraCollectionResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      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:
        - camera_collection(auth)
      security:
        - oauth2:
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/camera_location_data/{uid}":
    get:
      summary: |-
        Метод получения данных o местонахождении камеры.
        Метод доступен для: ApiKey
      operationId: CameraLocationDataService_GetCameraLocationData
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraLocationDataResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraLocationDataResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "404":
          description: Объект не найден
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraLocationDataResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: uid
          description: uid видеопотока камеры
          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:
        - camera_location_data(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  /vc/api/v1/camera_video_data/count:
    get:
      summary: >-
        Метод получения количества камер.

        Для master это камеры, привязанные к пользователю, используем поля токена vc_user_id, user_id, company_id.

        Для owner, employee это камеры, привязанные к компании, используем поле токена company_id.

        Для admin, service, bti, ltp_first это камеры, привязанные к компании, используем поле scope.company_id.

        Для admin, service, bti, ltp_first это камеры, привязанные к пользователю, используем поле scope.user_id.

        Метод доступен для: admin, service, bti, ltp_first, master, owner, employee
      operationId: CameraVideoDataService_GetCameraVideoDataCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraVideoDataCountResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraVideoDataCountResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraVideoDataCountResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: scope.companyId
          description: Идентификатор компании
          in: query
          required: false
          schema:
            type: string
            format: int64
        - name: scope.userId
          description: Идентификатор пользователя
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: filter.uids
          description: |-
            Идентификатор камеры в системе Видеокомфорт.
            Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.title
          description: Наименование камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.mac
          description: MAC-адрес камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.ip
          description: IP камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.serialNumber
          description: Серийный номер камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.category
          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:
        - camera_video_data(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  /vc/api/v1/camera_video_data/list:
    get:
      summary: >-
        Метод получения списка камер.

        Для master это камеры, привязанные к пользователю, используем поля токена vc_user_id, user_id, company_id.

        Для owner, employee это камеры, привязанные к компании, используем поле токена company_id.

        Для admin, service, bti, ltp_first это камеры, привязанные к компании, используем поле scope.company_id.

        Для admin, service, bti, ltp_first это камеры, привязанные к пользователю, используем поле scope.user_id.

        Метод доступен для: admin, service, bti, ltp_first, master, owner, employee
      operationId: CameraVideoDataService_GetCameraVideoDataList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraVideoDataListResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraVideoDataListResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetCameraVideoDataListResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: scope.companyId
          description: Идентификатор компании
          in: query
          required: false
          schema:
            type: string
            format: int64
        - name: scope.userId
          description: Идентификатор пользователя
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: filter.uids
          description: |-
            Идентификатор камеры в системе Видеокомфорт.
            Тип: Guid
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.title
          description: Наименование камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.mac
          description: MAC-адрес камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.ip
          description: IP камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.serialNumber
          description: Серийный номер камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.category
          description: Категория камеры
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            По умолчанию: UID

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - CREATED_AT: По дате создания
          in: query
          required: false
          schema:
            type: string
            enum:
              - 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:
        - camera_video_data(auth)
      security:
        - oauth2:
            - vc:read
            - vc:edit
          bearerHttp: []
  "/vc/api/v1/company/{companyId}/impersonation":
    post:
      summary: >-
        Метод генерации имперсонационной ссылки для владельца компании.

        Возвращает одноразовую ссылку для имперсонации в сервисе inkey-front.

        Сценарий работы метода: https://confluence.rt.ru/pages/viewpage.action?pageId=1013775798.

        Метод доступен для: service, bti, admin
      operationId: CompanyService_PostCompanyImpersonation
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCompanyImpersonationResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCompanyImpersonationResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostCompanyImpersonationResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      parameters:
        - name: companyId
          description: |-
            Идентификатор компании.
            # Диапазон: 1..2147483647
          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
              title: Запрос генерации имперсонационной ссылки для компании
        required: true
      tags:
        - company(auth)
      security:
        - oauth2:
            - vc:edit
          bearerHttp: []
  /vc/api/v1/dictionary/categories:
    get:
      summary: |-
        Метод получения справочника категорий.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: DictionaryService_GetDictionaryCategories
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryCategoriesResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryCategoriesResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryCategoriesResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      tags:
        - dictionary(auth)
      security:
        - oauth2:
            - vc:read
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
  /vc/api/v1/dictionary/roles:
    get:
      summary: |-
        Метод получения справочника ролей.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: DictionaryService_GetDictionaryRoles
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryRolesResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryRolesResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryRolesResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      tags:
        - dictionary(auth)
      security:
        - oauth2:
            - vc:read
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
  /vc/api/v1/dictionary/tariffs:
    get:
      summary: |-
        Метод получения справочника тарифов.
        Метод доступен для: admin, service, bti, owner, employee
      operationId: DictionaryService_GetDictionaryTariffs
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryTariffsResponse"
        "400":
          description: Ошибка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryTariffsResponse"
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDictionaryTariffsResponse"
        default:
          description: Ошибки транспортного слоя
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/googlerpcStatus"
      tags:
        - dictionary(auth)
      security:
        - oauth2:
            - vc:read
            - vc: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, он никогда не
            будет перенаправлен на канареечный деплой
components:
  schemas:
    CameraCollectionSavingError:
      type: object
      properties:
        conflict:
          title: Конфликт версий
          allOf:
            - $ref: "#/components/schemas/SavingErrorConflict"
        wrongCompanyId:
          title: Попытка сохранить коллекцию камер с company_id не своей компании
          allOf:
            - $ref: "#/components/schemas/SavingErrorWrongCompanyId"
      title: Ошибка сохранения
    CameraLocationDataBuilding:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: Идентификатор дома
        rfId:
          type: integer
          format: int32
          title: Идентификатор РФ
        mrfId:
          type: integer
          format: int32
          title: Идентификатор МРФ
        orpon:
          type: string
          format: int64
          title: ОРПОН
        city:
          type: string
          title: Город
        street:
          type: string
          title: Улица
        number:
          type: string
          title: Номер дома
        part:
          type: string
          title: Корпус
        companyId:
          type: integer
          format: int32
          title: Идентификатор компании
        prefix:
          type: string
          title: Префикс
        createdAt:
          type: string
          format: date-time
          title: |-
            Дата создания.
            # Тип: DateTime
          readOnly: true
        deletedAt:
          type: string
          format: date-time
          title: |-
            Дата удаления.
            # Тип: DateTime
          readOnly: true
        flatgrammId:
          type: integer
          format: int32
          title: Идентификатор квартирограммы
        cityOrpon:
          type: string
          format: int64
          title: ОРПОН города, в котором находится дом
        fias:
          type: string
          title: |-
            Идентификатор в федеральной информационной адресной системе.
            Тип: Guid
        district:
          type: string
          title: |-
            Наименования района.
            # Диапазон: 0..200
        unom:
          type: string
          title: |-
            Уникальный номер адреса.
            # Диапазон: 0..9999999999
        regionOrpon:
          type: string
          format: int64
          title: ОРПОН региона
      title: Дом
      required:
        - rfId
        - mrfId
        - orpon
        - city
        - street
        - companyId
        - flatgrammId
    CameraLocationDataCompany:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: |-
            Идентификатор компании.
            # Диапазон: 1..2147483647
        vcCompanyId:
          type: string
          format: int64
          title: Идентификатор компании в системе Видеокомфорт
        name:
          type: string
          title: Наименование компании
        inn:
          type: string
          title: ИНН
        kpp:
          type: string
          title: КПП
        ogrn:
          type: string
          title: ОГРН
      title: Компания
    CameraLocationDataDeviceType:
      type: string
      enum:
        - INTERCOM
        - VIDEOCAMERA
        - BARRIER
        - GATE
        - ACCESS_CONTROL_PANEL
        - OUTDOOR_CAMERA
      description: |-
        - DEVICE_TYPE_UNKNOWN: Значение не указано
         - INTERCOM: Домофон
         - VIDEOCAMERA: Видеокамера
         - BARRIER: Шлагбаум
         - GATE: Калитка
         - ACCESS_CONTROL_PANEL: СКУД
         - OUTDOOR_CAMERA: Наружняя видеокамера
      title: Тип устройства
    CameraLocationDataStatusType:
      type: string
      enum:
        - OFFLINE
        - ONLINE
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано
         - OFFLINE: Не в сети
         - ONLINE: В сети
      title: Справочник статусов устройства
    ErrorOwnerNotFound:
      type: object
      title: Владелец компании не найден
    ErrorUserServiceError:
      type: object
      title: Ошибка взаимодействия с сервисом User
    ErrorVcError:
      type: object
      properties:
        text:
          type: string
          title: Текст ошибки
      title: Ошибка в сервисе ВН
    ErrorVcfrontServiceError:
      type: object
      title: Ошибка взаимодействия с сервисом vcfront
    GetCameraListResponseData:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: "#/components/schemas/v1Camera"
          title: Список Camera
        total:
          type: integer
          format: int32
          title: Всего количество
      title: Список
    GetCameraRtspUrlExternalIdResponseCameraRtspUrl:
      type: object
      properties:
        rtspUrl:
          type: string
          title: RTSP-ссылка
      title: RTSP-ссылка
    GetDictionaryCategoriesResponseCameraCategories:
      type: object
      properties:
        category:
          type: array
          items:
            $ref: "#/components/schemas/vcv1Category"
          title: Категория
      title: Список категорий
    GetDictionaryRolesResponseRoles:
      type: object
      properties:
        roles:
          type: array
          items:
            $ref: "#/components/schemas/v1Role"
          title: Роли
      title: Список ролей
    GetDictionaryTariffsResponseCameraTariffs:
      type: object
      properties:
        tariff:
          type: array
          items:
            $ref: "#/components/schemas/v1Tariff"
          title: Тариф
      title: Список тарифов
    PostCompanyImpersonationResponseCompanyImpersonation:
      type: object
      properties:
        url:
          type: string
          title: Одноразовая ссылка для имперсонации
      title: Имперсонационная ссылка
      required:
        - url
    SavingErrorConflict:
      type: object
      title: |-
        Конфликт версий.
        Причины:
        - В базе хранится другая версия строки, значения changed_at отличаются
    SavingErrorWrongCompanyId:
      type: object
      title: >-
        Попытка сохранить коллекцию камер с company_id не своей компании.

        Для ролей owner, employee сохранение разрешено только с company_id своей компании
    ValidationErrorOneFieldMacOrSerialNumberRequired:
      type: object
      title: |-
        Только одно поле обязательно к заполнению mac или serial_number.
        Для камер с типом VIOLET и DVR
    ValidationErrorRtspUrlRequired:
      type: object
      title: |-
        Поле rtsp_url должно быть заполнено.
        Только для камер с типом ROSE
    VcDictionaryErrorReason:
      type: object
      properties:
        message:
          type: string
          title: Сообщение
      title: Причина
    googlerpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: "#/components/schemas/protobufAny"
      title: Ошибка транспортного слоя в потоковом ответе
    protobufAny:
      type: object
      properties:
        "@type":
          type: string
      additionalProperties: {}
      title: Произвольный JSON
    v1Camera:
      type: object
      properties:
        id:
          type: string
          title: Идентификатор камеры
          readOnly: true
        uid:
          type: string
          title: uid камеры
          readOnly: true
        name:
          type: string
          title: Название камеры
          readOnly: true
        isOnline:
          type: boolean
          title: "Признак: онлайн камера или нет"
          readOnly: true
        isActiveUserCamera:
          type: boolean
          title: "Признак: Есть ли у камеры активный пользователь"
          readOnly: true
        statusChangedAt:
          type: string
          format: date-time
          title: Дата и время изменения статуса камеры
          readOnly: true
        mac:
          type: string
          title: MAC-адрес камеры
        ip:
          type: string
          title: IP камеры
          readOnly: true
        remoteIp:
          type: string
          title: Внешний IP камеры
          readOnly: true
        tariffStartedAt:
          type: string
          format: date-time
          title: Дата начала действия текущего тарифа
          readOnly: true
        tariffEndedAt:
          type: string
          format: date-time
          title: Дата окончания действия текущего тарифа
          readOnly: true
        tariffTitle:
          type: string
          title: Наименование тарифа
          readOnly: true
        type:
          title: Тип камеры
          allOf:
            - $ref: "#/components/schemas/v1CameraType"
        cameraCategoryId:
          type: integer
          format: int32
          title: |-
            Идентификатор категории.
            Камера - 1, домофон - 2, скуд - 3, шлагбаум - 4
        rtspUrl:
          type: string
          title: РТСП-ссылка
        serialNumber:
          type: string
          title: Серийный номер
        companyId:
          type: integer
          format: int32
          title: Идентификатор компании
      title: Камера
    v1CameraCollection:
      type: object
      properties:
        id:
          type: string
          title: |-
            Идентификатор коллекции камер.
            Тип: Guid
        name:
          type: string
          title: |-
            Наименование.
            Диапазон: 3..256
        changedAt:
          type: string
          format: date-time
          title: >-
            Дата изменения коллекции камер.

            Поле используется при редактировании и создании для контроля актуальности изменяемой версии
        companyId:
          type: string
          format: int64
          title: Идентификатор компании
        deletedAt:
          type: string
          format: date-time
          title: |-
            Дата удаления коллекции камер.
            Поле изменяется через методы Delete и Restore
          readOnly: true
        description:
          type: string
          title: |-
            Описание.
            Диапазон: 0..256
        tags:
          type: array
          items:
            type: string
          title: |-
            Теги коллекции.
            Диапазон: 0..10
        externalCameraIds:
          type: array
          items:
            type: string
          title: Привязанные к коллекции камеры
      title: Коллекция камер
      required:
        - name
        - changedAt
        - companyId
    v1CameraCollectionFilter:
      type: object
      properties:
        text:
          type: string
          title: |-
            По тексту.
            Если значение не передано то поиск по нему не производится.
            # Диапазон: 3..64.
            # Поиск производится по полям:
            # - Наименование.
            # - Описание.
            # - Теги коллекции
        tags:
          type: array
          items:
            type: string
          title: |-
            По тегам.
            Диапазон: 0..10
        companyIds:
          type: array
          items:
            type: string
            format: int64
          title: |-
            По компаниям.
            Диапазон: 0..10
        isDeleted:
          type: boolean
          title: >-
            Показывать удаленные.

            Если поле не передано, по умолчанию false, фильтр исключает удаленные
      title: Фильтр коллекций камер
    v1CameraCollectionPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            По умолчанию: CHANGED_AT
          allOf:
            - $ref: "#/components/schemas/v1CameraCollectionPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1CameraCollectionPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            Диапазон: 0..100.
            По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            Диапазон: 0..2147483647
      title: Постраничный вывод
    v1CameraCollectionPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        Тип: byte
    v1CameraCollectionPagingOrderByType:
      type: string
      enum:
        - ID
        - NAME
        - CHANGED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - ID: По идентификатору
         - NAME: По имени
         - CHANGED_AT: По времени изменения
      title: |-
        Справочник типов значений сортировки.
        Тип: byte
    v1CameraFilter:
      type: object
      properties:
        isActive:
          type: boolean
          title: Признак активности камеры
        isChannelAlive:
          type: boolean
          title: Признак активности канала
        isOnline:
          type: boolean
          title: Статус камеры
        cameraType:
          title: Тип камеры
          allOf:
            - $ref: "#/components/schemas/v1CameraType"
      title: Фильтр камер
    v1CameraLocationData:
      type: object
      properties:
        uid:
          type: string
          title: |-
            Идентификатор видеопотока в системе Видеокомфорт.
            Тип: Guid
        deviceType:
          title: |-
            Тип устройства.
            # Тип: byte
          allOf:
            - $ref: "#/components/schemas/CameraLocationDataDeviceType"
        model:
          type: string
          title: Модель устройства
        serialNumber:
          type: string
          title: Серийный номер устройства
        hwVersion:
          type: string
          title: Версия аппаратного обеспечения
        swVersion:
          type: string
          title: Версия программного обеспечения
        mac:
          type: string
          title: |-
            MAC-адрес.
            # Диапазон: 17..17.
            # Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/
        title:
          type: string
          title: |-
            Наименование устройства.
            # Диапазон: 3..256
        host:
          type: string
          title: |-
            Сетевой адрес.
            # Диапазон: 0..250
        statusType:
          title: Статус устройства
          allOf:
            - $ref: "#/components/schemas/CameraLocationDataStatusType"
        entranceNumbers:
          type: array
          items:
            type: integer
            format: int32
          title: |-
            Номер подъезда.
            # Диапазон: 1..100
        flatgrammId:
          type: integer
          format: int32
          title: |-
            Идентификатор квартирограммы.
            # Диапазон: 1..2147483647
        company:
          title: Компания владелец устройства
          allOf:
            - $ref: "#/components/schemas/CameraLocationDataCompany"
        buildings:
          type: array
          items:
            $ref: "#/components/schemas/CameraLocationDataBuilding"
          title: Массив домов камеры
      title: Данные o местонахождении камеры
      required:
        - uid
    v1CameraPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию
          allOf:
            - $ref: "#/components/schemas/v1CameraPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1CameraPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1CameraPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1CameraPagingOrderByType:
      type: string
      enum:
        - UID
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - UID: По идентификатору
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1CameraRoom:
      type: object
      properties:
        cameraUid:
          type: string
          title: Идентификатор камеры
        orpon:
          type: string
          format: int64
          title: ОРПОН дома
        roomNumber:
          type: string
          title: |-
            Номер квартиры.
            # Диапазон: 1..4
      title: Связь камеры и квартиры
      required:
        - cameraUid
        - orpon
        - roomNumber
    v1CameraRoomFilter:
      type: object
      properties:
        cameraUids:
          type: array
          items:
            type: string
          title: |-
            По Идентификаторам камер.
            # Диапазон: 0..100
        orpons:
          type: array
          items:
            type: string
            format: int64
          title: |-
            По ОРПОНам.
            # Диапазон: 0..100
        roomNumbers:
          type: array
          items:
            type: string
          title: |-
            По квартирам.
            # Диапазон: 0..100
      title: >-
        Фильтр связок камеры и квартиры.

        При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.

        При передаче нескольких разных параметров фильтра они работают в выборке через И
    v1CameraRoomPaging:
      type: object
      properties:
        orderByType:
          title: >-
            Тип значения сортировки.

            Если значение не передано, то будет взято значение по умолчанию CAMERA_UID
          allOf:
            - $ref: "#/components/schemas/v1CameraRoomPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1CameraRoomPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1CameraRoomPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1CameraRoomPagingOrderByType:
      type: string
      enum:
        - CAMERA_UID
        - ORPON_ROOM_NUMBER
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CAMERA_UID: По Идентификатору камеры
         - ORPON_ROOM_NUMBER: По ОРПОН и номеру квартиры
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1CameraScope:
      type: object
      properties:
        vcCompanyId:
          type: integer
          format: int32
          title: Внешний идентификатор компании
      title: Ограничение выборки камер
    v1CameraType:
      type: string
      enum:
        - DVR
        - VMS
        - ROSE
        - VIOLET
      description: |-
        - TYPE_UNKNOWN: Значение не указано
         - DVR: Регистратор
         - VMS: Система управления видео
         - ROSE: RTSP-камера
         - VIOLET: IP-камера
      title: Справочник типов камер
    v1CameraValidationError:
      type: object
      properties:
        rtspUrlRequired:
          title: Поле rtsp_url должно быть заполнено
          allOf:
            - $ref: "#/components/schemas/ValidationErrorRtspUrlRequired"
        oneFieldMacOrSerialNumberRequired:
          title: Только одно поле обязательно к заполнению mac или serial_number
          allOf:
            - $ref: "#/components/schemas/ValidationErrorOneFieldMacOrSerialNumberRequired"
      title: Ошибки валидации
    v1CameraVideoData:
      type: object
      properties:
        uid:
          type: string
          title: |-
            Идентификатор камеры в системе Видеокомфорт.
            Тип: Guid
        category:
          title: Категория камеры
          allOf:
            - $ref: "#/components/schemas/v1CameraVideoDataCategory"
        title:
          type: string
          title: Наименование камеры
        serialNumber:
          type: string
          title: Серийный номер камеры
        ip:
          type: string
          title: IP камеры
        streamerUrl:
          type: string
          title: Адрес видео-потока (https соединение)
        mac:
          type: string
          title: MAC-адрес камеры
        model:
          type: string
          title: Модель камеры
        vendor:
          type: string
          title: Производитель камеры
        status:
          title: Статус камеры
          allOf:
            - $ref: "#/components/schemas/v1CameraVideoDataStatus"
        screenshotUrlTemplate:
          type: string
          title: URL скриншотов разных размеров в JPG-формате
        screenshotPreciseUrlTemplate:
          type: string
          title: Шаблон для “точных” скриншотов. Выдаёт скриншоты всех размеров
        userToken:
          type: string
          title: U-Токен, кука, которая выдается Умному Дому
        streamerToken:
          type: string
          title: Токен для воспроизведения видео с камеры
        screenshotToken:
          type: string
          title: Токен для получения контента с cdn (например, файлов изображений)
        archiveLength:
          type: integer
          format: int32
          title: Глубина хранения видео в минутах
        location:
          title: Координаты месторасположения
          allOf:
            - $ref: "#/components/schemas/v1CameraVideoDataLocation"
        createdAt:
          type: string
          format: date-time
          title: Дата создания
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          title: Дата обновления
          readOnly: true
        utcOffset:
          type: integer
          format: int32
          title: |-
            Смещение таймзоны в минутах.
            # Диапазон: -720..840
      title: Камера
      required:
        - uid
        - title
        - serialNumber
        - ip
        - streamerUrl
        - mac
        - status
        - screenshotUrlTemplate
        - screenshotPreciseUrlTemplate
        - userToken
        - streamerToken
        - screenshotToken
    v1CameraVideoDataCategory:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: Идентификатор группы
        type:
          type: string
          title: Тип группы
        title:
          type: string
          title: Имя группы
      title: Категория камеры
      required:
        - id
        - type
        - title
    v1CameraVideoDataFilter:
      type: object
      properties:
        uids:
          type: array
          items:
            type: string
          title: |-
            Идентификатор камеры в системе Видеокомфорт.
            Тип: Guid
        title:
          type: array
          items:
            type: string
          title: Наименование камеры
        mac:
          type: array
          items:
            type: string
          title: MAC-адрес камеры
        ip:
          type: array
          items:
            type: string
          title: IP камеры
        serialNumber:
          type: array
          items:
            type: string
          title: Серийный номер камеры
        category:
          type: array
          items:
            type: string
          title: Категория камеры
      title: Фильтр камер
    v1CameraVideoDataLocation:
      type: object
      properties:
        lat:
          type: number
          format: double
          title: Широта
        lng:
          type: number
          format: double
          title: Долгота
      title: Координаты месторасположения
      required:
        - lat
        - lng
    v1CameraVideoDataPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            Если значение не передано, то будет взято значение по умолчанию.
            По умолчанию: UID
          allOf:
            - $ref: "#/components/schemas/v1CameraVideoDataPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            # По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/v1CameraVideoDataPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Если значение 0 (не передано), то будет взято значение по умолчанию.
            # Диапазон: 0..100.
            # По умолчанию: 20
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            # Диапазон: 0..2147483647
      title: Постраничный вывод
    v1CameraVideoDataPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: |-
        Справочник типов направлений сортировки.
        # Тип: byte
    v1CameraVideoDataPagingOrderByType:
      type: string
      enum:
        - CREATED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CREATED_AT: По дате создания
      title: |-
        Справочник типов значений сортировки.
        # Тип: byte
    v1CameraVideoDataScope:
      type: object
      properties:
        companyId:
          type: string
          format: int64
          title: Идентификатор компании
        userId:
          type: integer
          format: int32
          title: Идентификатор пользователя
      title: Ограничение выборки камер
    v1CameraVideoDataStatus:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: Идентификатор статуса
        type:
          type: string
          title: online/offline
        title:
          type: string
          title: Доступна/Не доступна
      title: Статус камеры
      required:
        - id
        - type
        - title
    v1DeleteCameraCollectionResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1DeleteCameraCollectionResponseError"
      title: Ответ на запрос удаления коллекции камер
    v1DeleteCameraCollectionResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1DeleteCameraResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1DeleteCameraResponseError"
      title: Ответ на запрос удаления камеры
    v1DeleteCameraResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraCollectionCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraCollectionCountResponseError"
      title: Ответ на запрос получения количества коллекций камер
    v1GetCameraCollectionCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraCollectionListResponse:
      type: object
      properties:
        data:
          title: Коллекция камер
          allOf:
            - $ref: "#/components/schemas/v1CameraCollection"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraCollectionListResponseError"
      title: Ответ на запрос получения списка коллекций камер
    v1GetCameraCollectionListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraCollectionResponse:
      type: object
      properties:
        data:
          title: Коллекция камер
          allOf:
            - $ref: "#/components/schemas/v1CameraCollection"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraCollectionResponseError"
      title: Ответ на запрос получения коллекции камер
    v1GetCameraCollectionResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraListResponse:
      type: object
      properties:
        data:
          title: Список
          allOf:
            - $ref: "#/components/schemas/GetCameraListResponseData"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraListResponseError"
      title: Ответ на получение списка камер
    v1GetCameraListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraLocationDataResponse:
      type: object
      properties:
        data:
          title: Данные o местонахождении камеры
          allOf:
            - $ref: "#/components/schemas/v1CameraLocationData"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraLocationDataResponseError"
      title: Ответ на запрос на получение данных o местонахождении камеры
    v1GetCameraLocationDataResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraResponse:
      type: object
      properties:
        data:
          title: Камера
          allOf:
            - $ref: "#/components/schemas/v1Camera"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraResponseError"
      title: Ответ на запрос получения камеры
    v1GetCameraResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraRoomCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего количество
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraRoomCountResponseError"
      title: Ответ получения количества связей камеры и квартиры
    v1GetCameraRoomCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraRoomListResponse:
      type: object
      properties:
        data:
          title: Связь камеры и квартиры
          allOf:
            - $ref: "#/components/schemas/v1CameraRoom"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraRoomListResponseError"
      title: Ответ получения списка связей камеры и квартиры
    v1GetCameraRoomListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraRtspUrlExternalIdResponse:
      type: object
      properties:
        data:
          title: RTSP-ссылка
          allOf:
            - $ref: "#/components/schemas/GetCameraRtspUrlExternalIdResponseCameraRtspUrl"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraRtspUrlExternalIdResponseError"
      title: Ответ на запрос получения RTSP-ссылки по идентификатору камеры в vcfront
    v1GetCameraRtspUrlExternalIdResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса получения списка камер
    v1GetCameraVideoDataCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего количество
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraVideoDataCountResponseError"
      title: Ответ на получение количества камер
    v1GetCameraVideoDataCountResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetCameraVideoDataListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/v1CameraVideoData"
          title: Камера
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetCameraVideoDataListResponseError"
      title: Ответ на получение списка камер
    v1GetCameraVideoDataListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1GetDictionaryCategoriesResponse:
      type: object
      properties:
        data:
          title: Список категорий
          allOf:
            - $ref: "#/components/schemas/GetDictionaryCategoriesResponseCameraCategories"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetDictionaryCategoriesResponseError"
      title: Ответ на запрос получения справочника категорий
    v1GetDictionaryCategoriesResponseError:
      type: object
      properties:
        vcDictionaryError:
          title: Ошибка VCfront
          allOf:
            - $ref: "#/components/schemas/v1VcDictionaryError"
      title: Ошибка запроса
    v1GetDictionaryRolesResponse:
      type: object
      properties:
        data:
          title: Список ролей
          allOf:
            - $ref: "#/components/schemas/GetDictionaryRolesResponseRoles"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetDictionaryRolesResponseError"
      title: Ответ на запрос получения справочника ролей
    v1GetDictionaryRolesResponseError:
      type: object
      properties:
        vcDictionaryError:
          title: Ошибка VCfront
          allOf:
            - $ref: "#/components/schemas/v1VcDictionaryError"
      title: Ошибка запроса
    v1GetDictionaryTariffsResponse:
      type: object
      properties:
        data:
          title: Список тарифов
          allOf:
            - $ref: "#/components/schemas/GetDictionaryTariffsResponseCameraTariffs"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1GetDictionaryTariffsResponseError"
      title: Ответ на запрос получения справочника тарифов
    v1GetDictionaryTariffsResponseError:
      type: object
      properties:
        vcDictionaryError:
          title: Ошибка VCfront
          allOf:
            - $ref: "#/components/schemas/v1VcDictionaryError"
      title: Ошибка запроса
    v1PostCameraCollectionRestoreResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostCameraCollectionRestoreResponseError"
      title: Ответ на запрос восстановления удаленной коллекции камер
    v1PostCameraCollectionRestoreResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1PostCameraRequest:
      type: object
      properties:
        data:
          title: Камера
          allOf:
            - $ref: "#/components/schemas/v1Camera"
      title: Запрос создания камеры
      required:
        - data
    v1PostCameraResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostCameraResponseError"
      title: Ответ на запрос создания камеры
    v1PostCameraResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
        cameraValidation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/v1CameraValidationError"
        vc:
          title: Ошибка в сервисе ВН
          allOf:
            - $ref: "#/components/schemas/ErrorVcError"
      title: Ошибка запроса
    v1PostCompanyImpersonationResponse:
      type: object
      properties:
        data:
          title: Имперсонационная ссылка
          allOf:
            - $ref: "#/components/schemas/PostCompanyImpersonationResponseCompanyImpersonatio\
                n"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PostCompanyImpersonationResponseError"
      title: Ответ на запрос генерации имперсонационной ссылки для компании
    v1PostCompanyImpersonationResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
        ownerNotFound:
          title: Владелец компании не найден
          allOf:
            - $ref: "#/components/schemas/ErrorOwnerNotFound"
        userServiceError:
          title: Ошибка взаимодействия с сервисом User
          allOf:
            - $ref: "#/components/schemas/ErrorUserServiceError"
        vcfrontServiceError:
          title: Ошибка взаимодействия с сервисом vcfront
          allOf:
            - $ref: "#/components/schemas/ErrorVcfrontServiceError"
      title: Ошибка генерации имперсонационной ссылки для компании
    v1PutCameraRoomAttachListRequest:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/v1CameraRoom"
          title: Массив связей Camera и Room
      title: Запрос пакетной привязки камер и квартир
    v1PutCameraRoomAttachListResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PutCameraRoomAttachListResponseError"
      title: Ответ на запрос пакетной привязки камер и квартир
    v1PutCameraRoomAttachListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1PutCameraRoomAttachResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PutCameraRoomAttachResponseError"
      title: Ответ привязки камеры и квартиры
    v1PutCameraRoomAttachResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1PutCameraRoomDetachListRequest:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/v1CameraRoom"
          title: Массив связей Camera и Room
      title: Запрос пакетной отвязки камер и квартир
    v1PutCameraRoomDetachListResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PutCameraRoomDetachListResponseError"
      title: Ответ на запрос пакетной отвязки камер и квартир
    v1PutCameraRoomDetachListResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1PutCameraRoomDetachResponse:
      type: object
      properties:
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1PutCameraRoomDetachResponseError"
      title: Ответ отвязки камеры и квартиры
    v1PutCameraRoomDetachResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
      title: Ошибка запроса
    v1Role:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: Идентификатор
        title:
          type: string
          title: Наименование
        permissions:
          type: array
          items:
            type: string
          title: Доступы
        isGlobal:
          type: boolean
          title: Является ли роль глобальной
      title: Роль
    v1SaveCameraCollectionRequest:
      type: object
      properties:
        data:
          title: Коллекция камер
          allOf:
            - $ref: "#/components/schemas/v1CameraCollection"
      title: Запрос на создание коллекции камер
      required:
        - data
    v1SaveCameraCollectionResponse:
      type: object
      properties:
        data:
          title: Коллекция камер
          allOf:
            - $ref: "#/components/schemas/v1CameraCollection"
        error:
          title: Ошибка
          allOf:
            - $ref: "#/components/schemas/v1SaveCameraCollectionResponseError"
      title: Ответ на запрос на создание коллекции камер
    v1SaveCameraCollectionResponseError:
      type: object
      properties:
        validation:
          title: Ошибка валидации
          allOf:
            - $ref: "#/components/schemas/vcv1ValidationError"
        saving:
          title: Ошибка сохранения
          allOf:
            - $ref: "#/components/schemas/CameraCollectionSavingError"
      title: Ошибка запроса создания
    v1Tariff:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: Идентификатор
        title:
          type: string
          title: Наименование
        slug:
          type: string
          title: Параметр slug
        statusKind:
          type: string
          title: Тип статуса
        fromAt:
          type: string
          format: date-time
          title: |-
            Дата действия от.
            # Тип: DateTime
        toAt:
          type: string
          format: date-time
          title: |-
            Дата действия до.
            # Тип: DateTime
      title: Тариф
    v1VcDictionaryError:
      type: object
      properties:
        service:
          type: string
          title: Сервис
        product:
          type: string
          title: Продукт
        message:
          type: string
          title: Сообщение
        reasons:
          type: array
          items:
            $ref: "#/components/schemas/VcDictionaryErrorReason"
          title: Причины
      title: Ошибка VCfront
    vcv1Category:
      type: object
      properties:
        id:
          type: integer
          format: int32
          title: Идентификатор
        title:
          type: string
          title: Наименование
        kind:
          type: string
          title: Тип
      title: Категория
    vcv1ValidationError:
      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:
            vc:edit: Предоставляет полный доступ в сервис vc
            vc:read: Предоставляет доступ на чтение данных из сервиса vc
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
