openapi: 3.0.3
info:
  title: telemetry_metric
  version: 1.0.1782373519755
  description: Сервис telemetry_metric
  license:
    name: CC BY-NC-ND 4.0
    url: https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md
tags:
  - name: measurement(auth)
    description: Методы measurement. Требуют авторизацию. Доступны из интернета
  - name: system(public)
    description: Методы system. Не требуют авторизацию. Доступны из интернета
paths:
  /telemetry_metric/api/v1/measurement:
    post:
      summary: |-
        Метод сохранения измерений.
        Метод доступен для: service, application(telemetry:edit)
      operationId: MeasurementService_PostMeasurement
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1PostMeasurementResponse"
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "409":
          description: В базе данных хранится более новая версия объекта
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: data.indicatorId
          description: Идентификатор
          in: query
          required: true
          schema:
            type: integer
            format: int32
        - name: data.value
          description: Значение
          in: query
          required: true
          schema:
            type: number
            format: float
        - name: data.syncedAt
          description: |-
            Временная метка сбора счётчиком.
            Если не передано берётся серверное время
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: data.fiasId
          description: ФИАС
          in: query
          required: false
          schema:
            type: string
        - name: data.deviceId
          description: Идентификатор устройства
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: data.deviceParentId
          description: Идентификатор родительского устройства
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: data.deviceModel
          description: Модель устройства
          in: query
          required: false
          schema:
            type: string
        - name: data.deviceType
          description: >-
            Тип устройства

             - DEVICE_TYPE_UNKNOWN: Значение не указано
             - HUB: Коммуникационный модуль
             - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор
             - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN
             - METERING_DEVICE: Прибор учета расхода коммунальных услуг
             - INTERFACE_CONVERTER: Конвертер интерфейсов
             - M_BUS_HUB: M-BUS концентратор
             - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN
             - BASE_LR: Базовая станция LoRaWAN
          in: query
          required: false
          schema:
            type: string
            enum:
              - HUB
              - PULSE_COUNTER_RECORDER
              - PULSE_COUNTER_RECORDER_LR
              - METERING_DEVICE
              - INTERFACE_CONVERTER
              - M_BUS_HUB
              - COMMUNICATION_MODULE_LR
              - BASE_LR
        - name: data.metricType
          description: |-
            Тип энергоресурса

             - METRIC_TYPE_UNKNOWN: Значение не указано
             - HOT_WATER: Горячая вода
             - COLD_WATER: Холодная вода
             - HEAT: Теплоэнергия
             - GAS: Газ
             - ELECTRICITY: Электроэнергия
          in: query
          required: false
          schema:
            type: string
            enum:
              - HOT_WATER
              - COLD_WATER
              - HEAT
              - GAS
              - ELECTRICITY
        - name: data.changedAt
          description: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            Заполняется при создании и изменении.
            Является версией объекта
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: data.utcOffset
          description: Сдвиг таймзоны относительно UTC для даты synced_at
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: data.unitType
          description: |-
            Тип единицы измерения, в которой представлено, получаемое измерение

             - UNIT_TYPE_UNKNOWN: Значение не указано
             - PERCENT: Процент
             - C: Градус по Цельсию
             - WT: Ватт
             - GKAL: Гигакалория
             - VALUE: Количество
             - KWH: Киловaтт-час
             - KG_CM2: Килограмм на квадратный сантиметр
             - KGF_CM2: Килограмм-сила на квадратный сантиметр
             - M3: Кубический метр
             - M3_H: Кубический метр в час
             - MPA: Мегапаскаль
             - MS: Миллисекунда
             - BOOLEAN: Флаг состояния
             - T: Тонна
             - T_H: Тонна в час
             - H: Час
             - NON_MEASURABLE: Безразмерная величина
             - IMP: Импульс
             - J: Джоуль
             - KJ: Килоджоуль
             - GJ: Гигаджоуль
             - WTH: Ватт-час
             - KWT: Киловатт
             - MIN: Минута
             - S: Секунда
          in: query
          required: false
          schema:
            type: string
            enum:
              - PERCENT
              - C
              - WT
              - GKAL
              - VALUE
              - KWH
              - KG_CM2
              - KGF_CM2
              - M3
              - M3_H
              - MPA
              - MS
              - BOOLEAN
              - T
              - T_H
              - H
              - NON_MEASURABLE
              - IMP
              - J
              - KJ
              - GJ
              - WTH
              - KWT
              - MIN
              - S
        - 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:
        - measurement(auth)
      security:
        - oauth2:
            - telemetry_metric:edit
          bearerHttp: []
  /telemetry_metric/api/v1/measurement/converted/count:
    get:
      summary: >-
        Метод получения количества преобразованных измерений.

        Метод доступен для: service, application(telemetry:read или telemetry:edit)
      operationId: MeasurementService_GetMeasurementConvertedCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetMeasurementConvertedCountResponse"
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.fiasIds
          description: По ФИАСам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceIds
          description: По идентификаторам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.indicatorIds
          description: По идентификаторам индикаторов
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.beginSyncedAt
          description: От даты синхронизации включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endSyncedAt
          description: До даты синхронизации (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.deviceModels
          description: По моделям устройств
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceTypes
          description: >-
            По типам устройств

             - DEVICE_TYPE_UNKNOWN: Значение не указано
             - HUB: Коммуникационный модуль
             - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор
             - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN
             - METERING_DEVICE: Прибор учета расхода коммунальных услуг
             - INTERFACE_CONVERTER: Конвертер интерфейсов
             - M_BUS_HUB: M-BUS концентратор
             - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN
             - BASE_LR: Базовая станция LoRaWAN
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HUB
                - PULSE_COUNTER_RECORDER
                - PULSE_COUNTER_RECORDER_LR
                - METERING_DEVICE
                - INTERFACE_CONVERTER
                - M_BUS_HUB
                - COMMUNICATION_MODULE_LR
                - BASE_LR
        - name: filter.metricTypes
          description: |-
            По типам измерений

             - METRIC_TYPE_UNKNOWN: Значение не указано
             - HOT_WATER: Горячая вода
             - COLD_WATER: Холодная вода
             - HEAT: Теплоэнергия
             - GAS: Газ
             - ELECTRICITY: Электроэнергия
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HOT_WATER
                - COLD_WATER
                - HEAT
                - GAS
                - ELECTRICITY
        - name: filter.isBorderMeasurementsOnly
          description: >-
            Ограничение результатов только пограничными значениями для периода.

            Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.

            Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.

            Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.

            Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
          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:
        - measurement(auth)
      security:
        - oauth2:
            - telemetry_metric:read
            - telemetry_metric:edit
          bearerHttp: []
  /telemetry_metric/api/v1/measurement/converted/list:
    get:
      summary: >-
        Метод получения списка преобразованных измерений.

        Метод доступен для: service, application(telemetry:read или telemetry:edit)
      operationId: MeasurementService_GetMeasurementConvertedList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetMeasurementConvertedListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetMeasurementConvertedListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.fiasIds
          description: По ФИАСам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceIds
          description: По идентификаторам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.indicatorIds
          description: По идентификаторам индикаторов
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.beginSyncedAt
          description: От даты синхронизации включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endSyncedAt
          description: До даты синхронизации (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.deviceModels
          description: По моделям устройств
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceTypes
          description: >-
            По типам устройств

             - DEVICE_TYPE_UNKNOWN: Значение не указано
             - HUB: Коммуникационный модуль
             - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор
             - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN
             - METERING_DEVICE: Прибор учета расхода коммунальных услуг
             - INTERFACE_CONVERTER: Конвертер интерфейсов
             - M_BUS_HUB: M-BUS концентратор
             - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN
             - BASE_LR: Базовая станция LoRaWAN
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HUB
                - PULSE_COUNTER_RECORDER
                - PULSE_COUNTER_RECORDER_LR
                - METERING_DEVICE
                - INTERFACE_CONVERTER
                - M_BUS_HUB
                - COMMUNICATION_MODULE_LR
                - BASE_LR
        - name: filter.metricTypes
          description: |-
            По типам измерений

             - METRIC_TYPE_UNKNOWN: Значение не указано
             - HOT_WATER: Горячая вода
             - COLD_WATER: Холодная вода
             - HEAT: Теплоэнергия
             - GAS: Газ
             - ELECTRICITY: Электроэнергия
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HOT_WATER
                - COLD_WATER
                - HEAT
                - GAS
                - ELECTRICITY
        - name: filter.isBorderMeasurementsOnly
          description: >-
            Ограничение результатов только пограничными значениями для периода.

            Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.

            Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.

            Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.

            Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
          in: query
          required: false
          schema:
            type: boolean
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            По умолчанию: SYNCED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - INDICATOR_ID: По идентификатору индикатора
             - SYNCED_AT: По дате synced_at
          in: query
          required: false
          schema:
            type: string
            enum:
              - INDICATOR_ID
              - SYNCED_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: |-
            Количество записей на страницу.
            Минимальное значение: 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:
        - measurement(auth)
      security:
        - oauth2:
            - telemetry_metric:read
            - telemetry_metric:edit
          bearerHttp: []
  /telemetry_metric/api/v1/measurement/count:
    get:
      summary: >-
        Метод получения количества измерений.

        Метод доступен для: service, application(telemetry:read или telemetry:edit)
      operationId: MeasurementService_GetMeasurementCount
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/v1GetMeasurementCountResponse"
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.fiasIds
          description: По ФИАСам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceIds
          description: По идентификаторам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.indicatorIds
          description: По идентификаторам индикаторов
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.beginSyncedAt
          description: От даты синхронизации включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endSyncedAt
          description: До даты синхронизации (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.deviceModels
          description: По моделям устройств
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceTypes
          description: >-
            По типам устройств

             - DEVICE_TYPE_UNKNOWN: Значение не указано
             - HUB: Коммуникационный модуль
             - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор
             - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN
             - METERING_DEVICE: Прибор учета расхода коммунальных услуг
             - INTERFACE_CONVERTER: Конвертер интерфейсов
             - M_BUS_HUB: M-BUS концентратор
             - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN
             - BASE_LR: Базовая станция LoRaWAN
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HUB
                - PULSE_COUNTER_RECORDER
                - PULSE_COUNTER_RECORDER_LR
                - METERING_DEVICE
                - INTERFACE_CONVERTER
                - M_BUS_HUB
                - COMMUNICATION_MODULE_LR
                - BASE_LR
        - name: filter.metricTypes
          description: |-
            По типам измерений

             - METRIC_TYPE_UNKNOWN: Значение не указано
             - HOT_WATER: Горячая вода
             - COLD_WATER: Холодная вода
             - HEAT: Теплоэнергия
             - GAS: Газ
             - ELECTRICITY: Электроэнергия
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HOT_WATER
                - COLD_WATER
                - HEAT
                - GAS
                - ELECTRICITY
        - name: filter.isBorderMeasurementsOnly
          description: >-
            Ограничение результатов только пограничными значениями для периода.

            Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.

            Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.

            Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.

            Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
          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:
        - measurement(auth)
      security:
        - oauth2:
            - telemetry_metric:read
            - telemetry_metric:edit
          bearerHttp: []
  /telemetry_metric/api/v1/measurement/list:
    get:
      summary: >-
        Метод получения списка измерений.

        Метод доступен для: service, application(telemetry:read или telemetry:edit)
      operationId: MeasurementService_GetMeasurementList
      responses:
        "200":
          description: Успешный ответ
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: "#/components/schemas/v1GetMeasurementListResponse"
                  error:
                    $ref: "#/components/schemas/rpcStatus"
                title: Поток объектов v1GetMeasurementListResponse
        "400":
          description: Ошибка
        "401":
          description: Запрос не авторизован
        "403":
          description: В доступе отказано
        "500":
          description: Внутренняя ошибка сервиса
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/rpcStatus"
      parameters:
        - name: filter.fiasIds
          description: По ФИАСам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceIds
          description: По идентификаторам
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.indicatorIds
          description: По идентификаторам индикаторов
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: integer
              format: int32
        - name: filter.beginSyncedAt
          description: От даты синхронизации включительно (>=)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.endSyncedAt
          description: До даты синхронизации (<)
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: filter.deviceModels
          description: По моделям устройств
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: filter.deviceTypes
          description: >-
            По типам устройств

             - DEVICE_TYPE_UNKNOWN: Значение не указано
             - HUB: Коммуникационный модуль
             - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор
             - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN
             - METERING_DEVICE: Прибор учета расхода коммунальных услуг
             - INTERFACE_CONVERTER: Конвертер интерфейсов
             - M_BUS_HUB: M-BUS концентратор
             - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN
             - BASE_LR: Базовая станция LoRaWAN
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HUB
                - PULSE_COUNTER_RECORDER
                - PULSE_COUNTER_RECORDER_LR
                - METERING_DEVICE
                - INTERFACE_CONVERTER
                - M_BUS_HUB
                - COMMUNICATION_MODULE_LR
                - BASE_LR
        - name: filter.metricTypes
          description: |-
            По типам измерений

             - METRIC_TYPE_UNKNOWN: Значение не указано
             - HOT_WATER: Горячая вода
             - COLD_WATER: Холодная вода
             - HEAT: Теплоэнергия
             - GAS: Газ
             - ELECTRICITY: Электроэнергия
          in: query
          required: false
          explode: true
          schema:
            type: array
            items:
              type: string
              enum:
                - HOT_WATER
                - COLD_WATER
                - HEAT
                - GAS
                - ELECTRICITY
        - name: filter.isBorderMeasurementsOnly
          description: >-
            Ограничение результатов только пограничными значениями для периода.

            Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.

            Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.

            Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.

            Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
          in: query
          required: false
          schema:
            type: boolean
        - name: paging.orderByType
          description: |-
            Тип значения сортировки.
            По умолчанию: SYNCED_AT

             - ORDER_BY_TYPE_UNKNOWN: Значение не указано
             - INDICATOR_ID: По идентификатору индикатора
             - SYNCED_AT: По дате synced_at
          in: query
          required: false
          schema:
            type: string
            enum:
              - INDICATOR_ID
              - SYNCED_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: |-
            Количество записей на страницу.
            Минимальное значение: 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:
        - measurement(auth)
      security:
        - oauth2:
            - telemetry_metric:read
            - telemetry_metric:edit
          bearerHttp: []
  /telemetry_metric/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:
    MeasurementDeviceType:
      type: string
      enum:
        - HUB
        - PULSE_COUNTER_RECORDER
        - PULSE_COUNTER_RECORDER_LR
        - METERING_DEVICE
        - INTERFACE_CONVERTER
        - M_BUS_HUB
        - COMMUNICATION_MODULE_LR
        - BASE_LR
      description: |-
        - DEVICE_TYPE_UNKNOWN: Значение не указано
         - HUB: Коммуникационный модуль
         - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор
         - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN
         - METERING_DEVICE: Прибор учета расхода коммунальных услуг
         - INTERFACE_CONVERTER: Конвертер интерфейсов
         - M_BUS_HUB: M-BUS концентратор
         - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN
         - BASE_LR: Базовая станция LoRaWAN
      title: Справочник типов устройств
    MeasurementMetricType:
      type: string
      enum:
        - HOT_WATER
        - COLD_WATER
        - HEAT
        - GAS
        - ELECTRICITY
      description: |-
        - METRIC_TYPE_UNKNOWN: Значение не указано
         - HOT_WATER: Горячая вода
         - COLD_WATER: Холодная вода
         - HEAT: Теплоэнергия
         - GAS: Газ
         - ELECTRICITY: Электроэнергия
      title: Справочние типов энергоресурсов
    MeasurementPagingDirectionType:
      type: string
      enum:
        - DESC
        - ASC
      description: |-
        - DIRECTION_TYPE_UNKNOWN: Значение не указано
         - DESC: От большего к меньшему
         - ASC: От меньшего к большему
      title: Справочник типов направлений сортировки
    MeasurementPagingOrderByType:
      type: string
      enum:
        - INDICATOR_ID
        - SYNCED_AT
      description: |-
        - ORDER_BY_TYPE_UNKNOWN: Значение не указано
         - INDICATOR_ID: По идентификатору индикатора
         - SYNCED_AT: По дате synced_at
      title: Справочник типов значений сортировки
    MeasurementUnitType:
      type: string
      enum:
        - PERCENT
        - C
        - WT
        - GKAL
        - VALUE
        - KWH
        - KG_CM2
        - KGF_CM2
        - M3
        - M3_H
        - MPA
        - MS
        - BOOLEAN
        - T
        - T_H
        - H
        - NON_MEASURABLE
        - IMP
        - J
        - KJ
        - GJ
        - WTH
        - KWT
        - MIN
        - S
      description: |-
        - UNIT_TYPE_UNKNOWN: Значение не указано
         - PERCENT: Процент
         - C: Градус по Цельсию
         - WT: Ватт
         - GKAL: Гигакалория
         - VALUE: Количество
         - KWH: Киловaтт-час
         - KG_CM2: Килограмм на квадратный сантиметр
         - KGF_CM2: Килограмм-сила на квадратный сантиметр
         - M3: Кубический метр
         - M3_H: Кубический метр в час
         - MPA: Мегапаскаль
         - MS: Миллисекунда
         - BOOLEAN: Флаг состояния
         - T: Тонна
         - T_H: Тонна в час
         - H: Час
         - NON_MEASURABLE: Безразмерная величина
         - IMP: Импульс
         - J: Джоуль
         - KJ: Килоджоуль
         - GJ: Гигаджоуль
         - WTH: Ватт-час
         - KWT: Киловатт
         - MIN: Минута
         - S: Секунда
      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: Ошибка транспортного слоя
    v1GetMeasurementConvertedCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего измерений
      title: Ответ на запрос получения количества преобразованных измерений
    v1GetMeasurementConvertedListResponse:
      type: object
      properties:
        data:
          title: Значение измерения
          allOf:
            - $ref: "#/components/schemas/v1Measurement"
      title: Ответ на запрос получения списка преобразованных измерений
    v1GetMeasurementCountResponse:
      type: object
      properties:
        data:
          type: integer
          format: int32
          title: Всего измерений
      title: Ответ на запрос получения количества измерений
    v1GetMeasurementListResponse:
      type: object
      properties:
        data:
          title: Значение измерения
          allOf:
            - $ref: "#/components/schemas/v1Measurement"
      title: Ответ на запрос получения списка измерений
    v1GetSystemStatusResponse:
      type: object
      title: Ответ на запрос проверки доступности сервиса
    v1Measurement:
      type: object
      properties:
        indicatorId:
          type: integer
          format: int32
          title: Идентификатор
        value:
          type: number
          format: float
          title: Значение
        syncedAt:
          type: string
          format: date-time
          title: |-
            Временная метка сбора счётчиком.
            Если не передано берётся серверное время
        fiasId:
          type: string
          title: ФИАС
        deviceId:
          type: integer
          format: int32
          title: Идентификатор устройства
        deviceParentId:
          type: integer
          format: int32
          title: Идентификатор родительского устройства
        deviceModel:
          type: string
          title: Модель устройства
        deviceType:
          title: Тип устройства
          allOf:
            - $ref: "#/components/schemas/MeasurementDeviceType"
        metricType:
          title: Тип энергоресурса
          allOf:
            - $ref: "#/components/schemas/MeasurementMetricType"
        changedAt:
          type: string
          format: date-time
          title: |-
            Дата последнего изменения.
            Заполняется и обновляется сервером.
            Заполняется при создании и изменении.
            Является версией объекта
          readOnly: true
        utcOffset:
          type: integer
          format: int32
          title: Сдвиг таймзоны относительно UTC для даты synced_at
        unitType:
          title: Тип единицы измерения, в которой представлено, получаемое измерение
          allOf:
            - $ref: "#/components/schemas/MeasurementUnitType"
      title: |-
        Измерение.
        Очередь key.telemetry_consumer.measurement_stream_request.v1
      required:
        - indicatorId
        - value
    v1MeasurementFilter:
      type: object
      properties:
        fiasIds:
          type: array
          items:
            type: string
          title: По ФИАСам
        deviceIds:
          type: array
          items:
            type: integer
            format: int32
          title: По идентификаторам
        indicatorIds:
          type: array
          items:
            type: integer
            format: int32
          title: По идентификаторам индикаторов
        beginSyncedAt:
          type: string
          format: date-time
          title: От даты синхронизации включительно (>=)
        endSyncedAt:
          type: string
          format: date-time
          title: До даты синхронизации (<)
        deviceModels:
          type: array
          items:
            type: string
          title: По моделям устройств
        deviceTypes:
          type: array
          items:
            $ref: "#/components/schemas/MeasurementDeviceType"
          title: По типам устройств
        metricTypes:
          type: array
          items:
            $ref: "#/components/schemas/MeasurementMetricType"
          title: По типам измерений
        isBorderMeasurementsOnly:
          type: boolean
          title: >-
            Ограничение результатов только пограничными значениями для периода.

            Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).

            Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.

            Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.

            Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.

            Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
      title: >-
        Фильтр измерений.

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

        При передаче нескольких разных параметров фильтра они работают в выборке через И
    v1MeasurementPaging:
      type: object
      properties:
        orderByType:
          title: |-
            Тип значения сортировки.
            По умолчанию: SYNCED_AT
          allOf:
            - $ref: "#/components/schemas/MeasurementPagingOrderByType"
        directionType:
          title: |-
            Тип направления сортировки.
            По умолчанию: DESC
          allOf:
            - $ref: "#/components/schemas/MeasurementPagingDirectionType"
        limit:
          type: integer
          format: int32
          title: |-
            Количество записей на страницу.
            Минимальное значение: 1.
            Максимальное значение: 100.
            По умолчанию: 20.
            Если значение 0 (не передано), то выставляем значение по умолчанию
        offset:
          type: integer
          format: int32
          title: |-
            Сдвиг.
            По умолчанию: 0
      title: Параметры пагинации измерений
    v1PostMeasurementHalfDuplexResponse:
      type: object
      title: Ответ на запрос сохранения потока измерений
    v1PostMeasurementResponse:
      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_metric:edit: Предоставляет полный доступ в сервис telemetry_metric
            telemetry_metric:read: Предоставляет доступ на чтение данных из сервиса telemetry_metric
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
