{
  "files": [
    {
      "name": "keyapis/telemetry_metric/v1/keyapis_telemetry_metric_measurement_v1.proto",
      "description": "Сервис реализует функционал управления измерениями",
      "package": "keyapis.telemetry_metric.v1",
      "hasEnums": false,
      "hasExtensions": false,
      "hasMessages": true,
      "hasServices": true,
      "enums": [
        {
          "name": "DeviceType",
          "longName": "Measurement.DeviceType",
          "fullName": "keyapis.telemetry_metric.v1.Measurement.DeviceType",
          "description": "Справочник типов устройств",
          "values": [
            {
              "name": "DEVICE_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "HUB",
              "number": "1",
              "description": "Коммуникационный модуль"
            },
            {
              "name": "PULSE_COUNTER_RECORDER",
              "number": "2",
              "description": "Счетчик импульсов - регистратор"
            },
            {
              "name": "PULSE_COUNTER_RECORDER_LR",
              "number": "3",
              "description": "Счетчик импульсов - регистратор LoRaWAN"
            },
            {
              "name": "METERING_DEVICE",
              "number": "4",
              "description": "Прибор учета расхода коммунальных услуг"
            },
            {
              "name": "INTERFACE_CONVERTER",
              "number": "5",
              "description": "Конвертер интерфейсов"
            },
            {
              "name": "M_BUS_HUB",
              "number": "6",
              "description": "M-BUS концентратор"
            },
            {
              "name": "COMMUNICATION_MODULE_LR",
              "number": "7",
              "description": "Модуль связи LoRaWAN"
            },
            {
              "name": "BASE_LR",
              "number": "8",
              "description": "Базовая станция LoRaWAN"
            }
          ]
        },
        {
          "name": "MetricType",
          "longName": "Measurement.MetricType",
          "fullName": "keyapis.telemetry_metric.v1.Measurement.MetricType",
          "description": "Справочние типов энергоресурсов",
          "values": [
            {
              "name": "METRIC_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "HOT_WATER",
              "number": "1",
              "description": "Горячая вода"
            },
            {
              "name": "COLD_WATER",
              "number": "2",
              "description": "Холодная вода"
            },
            {
              "name": "HEAT",
              "number": "3",
              "description": "Теплоэнергия"
            },
            {
              "name": "GAS",
              "number": "4",
              "description": "Газ"
            },
            {
              "name": "ELECTRICITY",
              "number": "5",
              "description": "Электроэнергия"
            }
          ]
        },
        {
          "name": "UnitType",
          "longName": "Measurement.UnitType",
          "fullName": "keyapis.telemetry_metric.v1.Measurement.UnitType",
          "description": "Справочник типов единиц измерений",
          "values": [
            {
              "name": "UNIT_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "PERCENT",
              "number": "1",
              "description": "Процент"
            },
            {
              "name": "C",
              "number": "2",
              "description": "Градус по Цельсию"
            },
            {
              "name": "WT",
              "number": "3",
              "description": "Ватт"
            },
            {
              "name": "GKAL",
              "number": "4",
              "description": "Гигакалория"
            },
            {
              "name": "VALUE",
              "number": "5",
              "description": "Количество"
            },
            {
              "name": "KWH",
              "number": "6",
              "description": "Киловaтт-час"
            },
            {
              "name": "KG_CM2",
              "number": "7",
              "description": "Килограмм на квадратный сантиметр"
            },
            {
              "name": "KGF_CM2",
              "number": "8",
              "description": "Килограмм-сила на квадратный сантиметр"
            },
            {
              "name": "M3",
              "number": "9",
              "description": "Кубический метр"
            },
            {
              "name": "M3_H",
              "number": "10",
              "description": "Кубический метр в час"
            },
            {
              "name": "MPA",
              "number": "11",
              "description": "Мегапаскаль"
            },
            {
              "name": "MS",
              "number": "12",
              "description": "Миллисекунда"
            },
            {
              "name": "BOOLEAN",
              "number": "13",
              "description": "Флаг состояния"
            },
            {
              "name": "T",
              "number": "14",
              "description": "Тонна"
            },
            {
              "name": "T_H",
              "number": "15",
              "description": "Тонна в час"
            },
            {
              "name": "H",
              "number": "16",
              "description": "Час"
            },
            {
              "name": "NON_MEASURABLE",
              "number": "17",
              "description": "Безразмерная величина"
            },
            {
              "name": "IMP",
              "number": "18",
              "description": "Импульс"
            },
            {
              "name": "J",
              "number": "19",
              "description": "Джоуль"
            },
            {
              "name": "KJ",
              "number": "20",
              "description": "Килоджоуль"
            },
            {
              "name": "GJ",
              "number": "21",
              "description": "Гигаджоуль"
            },
            {
              "name": "WTH",
              "number": "22",
              "description": "Ватт-час"
            },
            {
              "name": "KWT",
              "number": "23",
              "description": "Киловатт"
            },
            {
              "name": "MIN",
              "number": "24",
              "description": "Минута"
            },
            {
              "name": "S",
              "number": "25",
              "description": "Секунда"
            }
          ]
        },
        {
          "name": "DirectionType",
          "longName": "MeasurementPaging.DirectionType",
          "fullName": "keyapis.telemetry_metric.v1.MeasurementPaging.DirectionType",
          "description": "Справочник типов направлений сортировки",
          "values": [
            {
              "name": "DIRECTION_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "DESC",
              "number": "1",
              "description": "От большего к меньшему"
            },
            {
              "name": "ASC",
              "number": "2",
              "description": "От меньшего к большему"
            }
          ]
        },
        {
          "name": "OrderByType",
          "longName": "MeasurementPaging.OrderByType",
          "fullName": "keyapis.telemetry_metric.v1.MeasurementPaging.OrderByType",
          "description": "Справочник типов значений сортировки",
          "values": [
            {
              "name": "ORDER_BY_TYPE_UNKNOWN",
              "number": "0",
              "description": "Значение не указано"
            },
            {
              "name": "INDICATOR_ID",
              "number": "1",
              "description": "По идентификатору индикатора"
            },
            {
              "name": "SYNCED_AT",
              "number": "2",
              "description": "По дате synced_at"
            }
          ]
        }
      ],
      "extensions": [],
      "messages": [
        {
          "name": "GetMeasurementConvertedCountRequest",
          "longName": "GetMeasurementConvertedCountRequest",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementConvertedCountRequest",
          "description": "Запрос получения количества преобразованных измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Параметры фильтрации измерений",
              "label": "",
              "type": "MeasurementFilter",
              "longType": "MeasurementFilter",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetMeasurementConvertedCountResponse",
          "longName": "GetMeasurementConvertedCountResponse",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementConvertedCountResponse",
          "description": "Ответ на запрос получения количества преобразованных измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Всего измерений",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetMeasurementConvertedListRequest",
          "longName": "GetMeasurementConvertedListRequest",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementConvertedListRequest",
          "description": "Запрос получения списка преобразованных измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Параметры фильтрации измерений",
              "label": "",
              "type": "MeasurementFilter",
              "longType": "MeasurementFilter",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "paging",
              "description": "Параметры пагинации по измерениям",
              "label": "",
              "type": "MeasurementPaging",
              "longType": "MeasurementPaging",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementPaging",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "pagination",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "GetMeasurementConvertedListResponse",
          "longName": "GetMeasurementConvertedListResponse",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementConvertedListResponse",
          "description": "Ответ на запрос получения списка преобразованных измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Значение измерения",
              "label": "",
              "type": "Measurement",
              "longType": "Measurement",
              "fullType": "keyapis.telemetry_metric.v1.Measurement",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetMeasurementCountRequest",
          "longName": "GetMeasurementCountRequest",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementCountRequest",
          "description": "Запрос получения количества измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Параметры фильтрации измерений",
              "label": "",
              "type": "MeasurementFilter",
              "longType": "MeasurementFilter",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetMeasurementCountResponse",
          "longName": "GetMeasurementCountResponse",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementCountResponse",
          "description": "Ответ на запрос получения количества измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Всего измерений",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "GetMeasurementListRequest",
          "longName": "GetMeasurementListRequest",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementListRequest",
          "description": "Запрос получения списка измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "filter",
              "description": "Параметры фильтрации измерений",
              "label": "",
              "type": "MeasurementFilter",
              "longType": "MeasurementFilter",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementFilter",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "paging",
              "description": "Параметры пагинации по измерениям",
              "label": "",
              "type": "MeasurementPaging",
              "longType": "MeasurementPaging",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementPaging",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "pagination",
              "defaultValue": "",
              "number": 2
            }
          ]
        },
        {
          "name": "GetMeasurementListResponse",
          "longName": "GetMeasurementListResponse",
          "fullName": "keyapis.telemetry_metric.v1.GetMeasurementListResponse",
          "description": "Ответ на запрос получения списка измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": true,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Значение измерения",
              "label": "",
              "type": "Measurement",
              "longType": "Measurement",
              "fullType": "keyapis.telemetry_metric.v1.Measurement",
              "ismap": false,
              "isoneof": true,
              "oneofdecl": "type",
              "defaultValue": "",
              "number": 1
            }
          ]
        },
        {
          "name": "Measurement",
          "longName": "Measurement",
          "fullName": "keyapis.telemetry_metric.v1.Measurement",
          "description": "Измерение.\nОчередь key.telemetry_consumer.measurement_stream_request.v1",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "indicator_id",
              "description": "Идентификатор",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            },
            {
              "name": "value",
              "description": "Значение",
              "label": "",
              "type": "float",
              "longType": "float",
              "fullType": "float",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 2
            },
            {
              "name": "synced_at",
              "description": "Временная метка сбора счётчиком.\nЕсли не передано берётся серверное время",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "fias_id",
              "description": "ФИАС",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "device_id",
              "description": "Идентификатор устройства",
              "label": "",
              "type": "Int32Value",
              "longType": "google.protobuf.Int32Value",
              "fullType": "google.protobuf.Int32Value",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "device_parent_id",
              "description": "Идентификатор родительского устройства",
              "label": "",
              "type": "Int32Value",
              "longType": "google.protobuf.Int32Value",
              "fullType": "google.protobuf.Int32Value",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "device_model",
              "description": "Модель устройства",
              "label": "",
              "type": "StringValue",
              "longType": "google.protobuf.StringValue",
              "fullType": "google.protobuf.StringValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "device_type",
              "description": "Тип устройства",
              "label": "",
              "type": "DeviceType",
              "longType": "Measurement.DeviceType",
              "fullType": "keyapis.telemetry_metric.v1.Measurement.DeviceType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "metric_type",
              "description": "Тип энергоресурса",
              "label": "",
              "type": "MetricType",
              "longType": "Measurement.MetricType",
              "fullType": "keyapis.telemetry_metric.v1.Measurement.MetricType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            },
            {
              "name": "changed_at",
              "description": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "OUTPUT_ONLY"
                  ]
                }
              },
              "number": 10
            },
            {
              "name": "utc_offset",
              "description": "Сдвиг таймзоны относительно UTC для даты synced_at",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 11
            },
            {
              "name": "unit_type",
              "description": "Тип единицы измерения, в которой представлено, получаемое измерение",
              "label": "",
              "type": "UnitType",
              "longType": "Measurement.UnitType",
              "fullType": "keyapis.telemetry_metric.v1.Measurement.UnitType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 12
            }
          ]
        },
        {
          "name": "MeasurementFilter",
          "longName": "MeasurementFilter",
          "fullName": "keyapis.telemetry_metric.v1.MeasurementFilter",
          "description": "Фильтр измерений.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "fias_ids",
              "description": "По ФИАСам",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "device_ids",
              "description": "По идентификаторам",
              "label": "repeated",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "indicator_ids",
              "description": "По идентификаторам индикаторов",
              "label": "repeated",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "begin_synced_at",
              "description": "От даты синхронизации включительно (\u003e=)",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            },
            {
              "name": "end_synced_at",
              "description": "До даты синхронизации (\u003c)",
              "label": "",
              "type": "Timestamp",
              "longType": "google.protobuf.Timestamp",
              "fullType": "google.protobuf.Timestamp",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 5
            },
            {
              "name": "device_models",
              "description": "По моделям устройств",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 6
            },
            {
              "name": "device_types",
              "description": "По типам устройств",
              "label": "repeated",
              "type": "DeviceType",
              "longType": "Measurement.DeviceType",
              "fullType": "keyapis.telemetry_metric.v1.Measurement.DeviceType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 7
            },
            {
              "name": "metric_types",
              "description": "По типам измерений",
              "label": "repeated",
              "type": "MetricType",
              "longType": "Measurement.MetricType",
              "fullType": "keyapis.telemetry_metric.v1.Measurement.MetricType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 8
            },
            {
              "name": "is_border_measurements_only",
              "description": "Ограничение результатов только пограничными значениями для периода.\nЕсли border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).\nЕсли border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).\nЕсли заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.\nЕсли заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.\nЕсли заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.\nЕсли заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров",
              "label": "",
              "type": "BoolValue",
              "longType": "google.protobuf.BoolValue",
              "fullType": "google.protobuf.BoolValue",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 9
            }
          ]
        },
        {
          "name": "MeasurementPaging",
          "longName": "MeasurementPaging",
          "fullName": "keyapis.telemetry_metric.v1.MeasurementPaging",
          "description": "Параметры пагинации измерений",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "order_by_type",
              "description": "Тип значения сортировки.\nПо умолчанию: SYNCED_AT",
              "label": "",
              "type": "OrderByType",
              "longType": "MeasurementPaging.OrderByType",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementPaging.OrderByType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 1
            },
            {
              "name": "direction_type",
              "description": "Тип направления сортировки.\nПо умолчанию: DESC",
              "label": "",
              "type": "DirectionType",
              "longType": "MeasurementPaging.DirectionType",
              "fullType": "keyapis.telemetry_metric.v1.MeasurementPaging.DirectionType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 2
            },
            {
              "name": "limit",
              "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 3
            },
            {
              "name": "offset",
              "description": "Сдвиг.\nПо умолчанию: 0",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "number": 4
            }
          ]
        },
        {
          "name": "PostMeasurementHalfDuplexRequest",
          "longName": "PostMeasurementHalfDuplexRequest",
          "fullName": "keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexRequest",
          "description": "Запрос сохранения потока измерения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Измерение",
              "label": "",
              "type": "Measurement",
              "longType": "Measurement",
              "fullType": "keyapis.telemetry_metric.v1.Measurement",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "PostMeasurementHalfDuplexResponse",
          "longName": "PostMeasurementHalfDuplexResponse",
          "fullName": "keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexResponse",
          "description": "Ответ на запрос сохранения потока измерений",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "PostMeasurementRequest",
          "longName": "PostMeasurementRequest",
          "fullName": "keyapis.telemetry_metric.v1.PostMeasurementRequest",
          "description": "Запрос сохранения измерения",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "Измерение",
              "label": "",
              "type": "Measurement",
              "longType": "Measurement",
              "fullType": "keyapis.telemetry_metric.v1.Measurement",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": "",
              "options": {
                "google.api.field_behavior": {
                  "options": [
                    "REQUIRED"
                  ]
                }
              },
              "number": 1
            }
          ]
        },
        {
          "name": "PostMeasurementResponse",
          "longName": "PostMeasurementResponse",
          "fullName": "keyapis.telemetry_metric.v1.PostMeasurementResponse",
          "description": "Ответ на запрос сохранения измерения",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        }
      ],
      "services": [
        {
          "name": "MeasurementService",
          "longName": "MeasurementService",
          "fullName": "keyapis.telemetry_metric.v1.MeasurementService",
          "description": "Сервис измерений",
          "methods": [
            {
              "name": "PostMeasurement",
              "description": "Метод сохранения измерений.\nМетод доступен для: service, application(telemetry:edit)",
              "requestType": "PostMeasurementRequest",
              "requestLongType": "PostMeasurementRequest",
              "requestFullType": "keyapis.telemetry_metric.v1.PostMeasurementRequest",
              "requestStreaming": false,
              "responseType": "PostMeasurementResponse",
              "responseLongType": "PostMeasurementResponse",
              "responseFullType": "keyapis.telemetry_metric.v1.PostMeasurementResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "POST",
                      "pattern": "/telemetry_metric/api/v1/measurement"
                    }
                  ]
                }
              }
            },
            {
              "name": "PostMeasurementHalfDuplex",
              "description": "Полудуплексный метод сохранения потока измерений.\nМетод доступен для: service, application(telemetry:edit)",
              "requestType": "PostMeasurementHalfDuplexRequest",
              "requestLongType": "PostMeasurementHalfDuplexRequest",
              "requestFullType": "keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexRequest",
              "requestStreaming": true,
              "responseType": "PostMeasurementHalfDuplexResponse",
              "responseLongType": "PostMeasurementHalfDuplexResponse",
              "responseFullType": "keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexResponse",
              "responseStreaming": false
            },
            {
              "name": "GetMeasurementList",
              "description": "Метод получения списка измерений.\nМетод доступен для: service, application(telemetry:read или telemetry:edit)",
              "requestType": "GetMeasurementListRequest",
              "requestLongType": "GetMeasurementListRequest",
              "requestFullType": "keyapis.telemetry_metric.v1.GetMeasurementListRequest",
              "requestStreaming": false,
              "responseType": "GetMeasurementListResponse",
              "responseLongType": "GetMeasurementListResponse",
              "responseFullType": "keyapis.telemetry_metric.v1.GetMeasurementListResponse",
              "responseStreaming": true,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/telemetry_metric/api/v1/measurement/list"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetMeasurementCount",
              "description": "Метод получения количества измерений.\nМетод доступен для: service, application(telemetry:read или telemetry:edit)",
              "requestType": "GetMeasurementCountRequest",
              "requestLongType": "GetMeasurementCountRequest",
              "requestFullType": "keyapis.telemetry_metric.v1.GetMeasurementCountRequest",
              "requestStreaming": false,
              "responseType": "GetMeasurementCountResponse",
              "responseLongType": "GetMeasurementCountResponse",
              "responseFullType": "keyapis.telemetry_metric.v1.GetMeasurementCountResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/telemetry_metric/api/v1/measurement/count"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetMeasurementConvertedList",
              "description": "Метод получения списка преобразованных измерений.\nМетод доступен для: service, application(telemetry:read или telemetry:edit)",
              "requestType": "GetMeasurementConvertedListRequest",
              "requestLongType": "GetMeasurementConvertedListRequest",
              "requestFullType": "keyapis.telemetry_metric.v1.GetMeasurementConvertedListRequest",
              "requestStreaming": false,
              "responseType": "GetMeasurementConvertedListResponse",
              "responseLongType": "GetMeasurementConvertedListResponse",
              "responseFullType": "keyapis.telemetry_metric.v1.GetMeasurementConvertedListResponse",
              "responseStreaming": true,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/telemetry_metric/api/v1/measurement/converted/list"
                    }
                  ]
                }
              }
            },
            {
              "name": "GetMeasurementConvertedCount",
              "description": "Метод получения количества преобразованных измерений.\nМетод доступен для: service, application(telemetry:read или telemetry:edit)",
              "requestType": "GetMeasurementConvertedCountRequest",
              "requestLongType": "GetMeasurementConvertedCountRequest",
              "requestFullType": "keyapis.telemetry_metric.v1.GetMeasurementConvertedCountRequest",
              "requestStreaming": false,
              "responseType": "GetMeasurementConvertedCountResponse",
              "responseLongType": "GetMeasurementConvertedCountResponse",
              "responseFullType": "keyapis.telemetry_metric.v1.GetMeasurementConvertedCountResponse",
              "responseStreaming": false,
              "options": {
                "google.api.http": {
                  "rules": [
                    {
                      "method": "GET",
                      "pattern": "/telemetry_metric/api/v1/measurement/converted/count"
                    }
                  ]
                }
              }
            }
          ]
        }
      ],
      "syntax": "proto3"
    }
  ],
  "scalarValueTypes": [
    {
      "protoType": "double",
      "notes": "",
      "cppType": "double",
      "csType": "double",
      "goType": "float64",
      "javaType": "double",
      "phpType": "float",
      "pythonType": "float",
      "rubyType": "Float"
    },
    {
      "protoType": "float",
      "notes": "",
      "cppType": "float",
      "csType": "float",
      "goType": "float32",
      "javaType": "float",
      "phpType": "float",
      "pythonType": "float",
      "rubyType": "Float"
    },
    {
      "protoType": "int32",
      "notes": "Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "int64",
      "notes": "Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "uint32",
      "notes": "Uses variable-length encoding.",
      "cppType": "uint32",
      "csType": "uint",
      "goType": "uint32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int/long",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "uint64",
      "notes": "Uses variable-length encoding.",
      "cppType": "uint64",
      "csType": "ulong",
      "goType": "uint64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sint32",
      "notes": "Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sint64",
      "notes": "Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "fixed32",
      "notes": "Always four bytes. More efficient than uint32 if values are often greater than 2^28.",
      "cppType": "uint32",
      "csType": "uint",
      "goType": "uint32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "fixed64",
      "notes": "Always eight bytes. More efficient than uint64 if values are often greater than 2^56.",
      "cppType": "uint64",
      "csType": "ulong",
      "goType": "uint64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "sfixed32",
      "notes": "Always four bytes.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sfixed64",
      "notes": "Always eight bytes.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "bool",
      "notes": "",
      "cppType": "bool",
      "csType": "bool",
      "goType": "bool",
      "javaType": "boolean",
      "phpType": "boolean",
      "pythonType": "boolean",
      "rubyType": "TrueClass/FalseClass"
    },
    {
      "protoType": "string",
      "notes": "A string must always contain UTF-8 encoded or 7-bit ASCII text.",
      "cppType": "string",
      "csType": "string",
      "goType": "string",
      "javaType": "String",
      "phpType": "string",
      "pythonType": "str/unicode",
      "rubyType": "String (UTF-8)"
    },
    {
      "protoType": "bytes",
      "notes": "May contain any arbitrary sequence of bytes.",
      "cppType": "string",
      "csType": "ByteString",
      "goType": "[]byte",
      "javaType": "ByteString",
      "phpType": "string",
      "pythonType": "str",
      "rubyType": "String (ASCII-8BIT)"
    }
  ]
}