openapi: 3.0.3
info:
  title: telemetry_status
  version: 1.0.1779962204526
  description: Сервис telemetry_status
  license:
    name: CC BY-NC-ND 4.0
    url: https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md
tags:
  - name: device_status(auth)
    description: Методы device_status. Требуют авторизацию. Доступны из интернета
  - name: system(public)
    description: Методы system. Не требуют авторизацию. Доступны из интернета
paths:
  /telemetry_status/api/v1/device_status/count:
    get:
      summary: >-
        Метод получения количества статусов доступности устройств.

        Метод доступен для: Token: service, admin. Без учета разрешений.

        Метод доступен для: ApiKey: Разрешения: telemetry_status:device_status:list
      operationId: DeviceStatusService_GetDeviceStatusCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetDeviceStatusCountResponse"
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.deviceIds
          description: По списку приборов учета
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.statusTypes
          description: |-
            По cтатусам доступности

             - STATUS_TYPE_UNKNOWN: Значение не указано.
            Проверка доступности не выполнялась
             - OFFLINE: Не доступен
             - ONLINE: Доступен
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - OFFLINE
                - ONLINE
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - device_status(auth)
      security:
        - oauth2:
            - telemetry_status:read
            - telemetry_status:edit
          bearerHttp: []
  /telemetry_status/api/v1/device_status/list:
    get:
      summary: >-
        Метод получения списка статусов доступности устройств.

        Метод доступен для: Token: service, admin. Без учета разрешений.

        Метод доступен для: ApiKey: Разрешения: telemetry_status:device_status:list
      operationId: DeviceStatusService_GetDeviceStatusList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetDeviceStatusListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetDeviceStatusListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.deviceIds
          description: По списку приборов учета
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.statusTypes
          description: |-
            По cтатусам доступности

             - STATUS_TYPE_UNKNOWN: Значение не указано.
            Проверка доступности не выполнялась
             - OFFLINE: Не доступен
             - ONLINE: Доступен
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - OFFLINE
                - ONLINE
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            По умолчанию: CHECKED_AT

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

             - DIRECTION_TYPE_UNKNOWN: Значение не указано
             - DESC: От большего к меньшему
             - ASC: От меньшего к большему
          in: query
          required: false
          schema:
            type: string
            enum:
              - DESC
              - ASC
        - name: paging.limit
          description: |-
            Количество записей на страницу.
            Минимальное значение: 1.
            Максимальное значение: 100.
            По умолчанию: 20.
            Если значение 0 (не передано), то выставляем значение по умолчанию
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: paging.offset
          description: |-
            Сдвиг.
            По умолчанию: 0
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
      tags:
        - device_status(auth)
      security:
        - oauth2:
            - telemetry_status:read
            - telemetry_status:edit
          bearerHttp: []
  /telemetry_status/api/v1/system/status:
    get:
      summary: |-
        Метод проверки доступности по порту из интернета.
        Не требует авторизации
      operationId: SystemService_GetSystemStatus
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetSystemStatusResponse"
        "400":
          description: Ошибка
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      tags:
        - system(public)
      parameters:
        - in: header
          name: X-Request-Id
          schema:
            type: string
            format: uuid
          description: Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос
        - in: header
          name: X-Device-Id
          schema:
            type: string
          description: Уникальный идентификатор устройства. Создаётся клиентом при первом
            запуске приложения. Если есть способ однозначно узнать идентификатор
            устройства, то создаётся на основе него и остаётся неизменным после
            переустановки приложения
        - in: header
          name: X-Api-Key
          schema:
            type: string
          description: Уникальный ключ для партнера. Создается администратором и
            передается партнерам.
        - in: header
          name: Canary
          schema:
            type: string
          description: Параметр балансировки запроса. Если для заголовка запроса
            установлено значение always, он будет перенаправлен на канареечный
            деплой. Если для заголовка установлено значение never, он никогда не
            будет перенаправлен на канареечный деплой
components:
  schemas:
    DeviceStatusPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: Справочник типов направлений сортировки
    DeviceStatusPagingOrderByType:
      type: string
      enum:
        - CHECKED_AT
        - DEVICE_ID
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - CHECKED_AT: По дате проверки
         - DEVICE_ID: По идентификатору
      title: Справочник типов значений сортировки
    DeviceStatusStatusType:
      type: string
      enum:
        - OFFLINE
        - ONLINE
      description: |-
        - STATUS_TYPE_UNKNOWN: Значение не указано.
        Проверка доступности не выполнялась
         - OFFLINE: Не доступен
         - ONLINE: Доступен
      title: Справочник типов статусов
    protobufAny:
      type: object
      properties:
        "@type":
          type: string
      additionalProperties: {}
      title: Произвольный JSON
    rpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: "#/components/schemas/protobufAny"
      title: Ошибка транспортного слоя
    v1DeviceStatus:
      type: object
      properties:
        deviceId:
          type: integer
          format: int32
          title: Идентификатор устройства
        ip:
          type: string
          title: IP-адрес устройства
          readOnly: true
        checkedAt:
          type: string
          format: date-time
          title: Момент проверки статуса
          readOnly: true
        statusType:
          title: Тип статуса
          readOnly: true
          allOf:
            - $ref: "#/components/schemas/DeviceStatusStatusType"
      title: Статус доступности устройства
      required:
        - deviceId
    v1DeviceStatusFilter:
      type: object
      properties:
        deviceIds:
          type: array
          items:
            type: integer
            format: int32
          title: По списку приборов учета
        statusTypes:
          type: array
          items:
            $ref: "#/components/schemas/DeviceStatusStatusType"
          title: По cтатусам доступности
      title: >-
        Фильтр для запроса статусов доступности устройств.

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

        При передаче нескольких разных параметров фильтра они работают в выборке через И
    v1DeviceStatusPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            По умолчанию: CHECKED_AT
          allOf:
            - $ref: "#/components/schemas/DeviceStatusPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/DeviceStatusPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Минимальное значение: 1.
            Максимальное значение: 100.
            По умолчанию: 20.
            Если значение 0 (не передано), то выставляем значение по умолчанию
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            По умолчанию: 0
      title: Пагинация статусов сетевой доступности
    v1GetDeviceStatusCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего записей
      title: Ответ на запрос получения количества записей
    v1GetDeviceStatusListResponse:
      type: object
      properties:
        data:
          title: Статус доступности устройства
          allOf:
            - $ref: "#/components/schemas/v1DeviceStatus"
      title: Ответ на запрос получения списка статусов доступности устройств
    v1GetSystemStatusResponse:
      type: object
      title: Ответ на запрос проверки доступности сервиса
  securitySchemes:
    bearerHttp:
      type: http
      scheme: bearer
      bearerFormat: JWT
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://oauth2-staging.k8s.key.rt.ru/oauth2/token
          scopes:
            telemetry_status:edit: Предоставляет полный доступ в сервис telemetry_status
            telemetry_status:read: Предоставляет доступ на чтение данных из сервиса telemetry_status
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
