{
  "openapi": "3.0.3",
  "info": {
    "title": "telemetry_control",
    "version": "1.0.1775813760260",
    "description": "Сервис telemetry_control",
    "license": {
      "name": "CC BY-NC-ND 4.0",
      "url": "https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md"
    }
  },
  "tags": [
    {
      "name": "building(auth)",
      "description": "Методы building. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "device(auth)",
      "description": "Методы device. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "dictionary(auth)",
      "description": "Методы dictionary. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "metric_point(auth)",
      "description": "Методы metric_point. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "template(auth)",
      "description": "Методы template. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "system(public)",
      "description": "Методы system. Не требуют авторизацию. Доступны из интернета"
    }
  ],
  "paths": {
    "/telemetry_control/api/v1/building": {
      "post": {
        "summary": "Метод сохранения объекта строительства.\nПоддерживает создание и обновление.\nРазрешения: telemetry_control:building:save, telemetry_control:building:save:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений",
        "operationId": "BuildingService_PostBuilding",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBuildingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostBuildingRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/count": {
      "get": {
        "summary": "Метод получения количества объектов строительства.\nРазрешения: telemetry_control:building:list, telemetry_control:building:list:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "BuildingService_GetBuildingCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.fiasId",
            "description": "По ФИАС",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.title",
            "description": "По заголовку",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.afterCreatedAt",
            "description": "По нижней границе дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.beforeCreatedAt",
            "description": "По верхней границе дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.mrfTypes",
            "description": "По МРФ (Макрорегион)\n\n - MRF_TYPE_UNKNOWN: Значение не указано\n - TSENTR: Центр\n - YUG: Юг\n - URAL: Урал\n - SIBIR: Сибирь\n - SEVERO_ZAPAD: Северо-Запад\n - DALNIY_VOSTOK: Дальний Восток\n - VOLGA: Волга",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "TSENTR",
                  "YUG",
                  "URAL",
                  "SIBIR",
                  "SEVERO_ZAPAD",
                  "DALNIY_VOSTOK",
                  "VOLGA"
                ]
              }
            }
          },
          {
            "name": "filter.rfTypes",
            "description": "По РФ (Регион)\n\n - RF_TYPE_UNKNOWN: Значение не указано\n - UFA: Республика Башкортостан\n - KIROV: Кировская область\n - IVANOVO: Ивановский филиал\n - KALUGA: Калужский филиал\n - KOSTROMA: Костромской филиал\n - KURSK: Курский филиал\n - LIPETSK: Липецкий филиал\n - MOSOBLAST: Московская область\n - OREL: Орловский филиал\n - RYAZAN: Рязанский филиал\n - TAMBOV: Тамбовский филиал\n - TVER: Тверской филиал\n - YAROSLAVL: Ярославский филиал\n - SMOLENSK: Смоленский филиал\n - TULA: Тульский филиал\n - MOSCOW: Москва\n - EAO: ЕАО\n - KURGAN: Филиал в Тюменской и Курганской областях\n - TUMEN: Филиал в Тюменской и Курганской областях\n - HANTY: Ханты-Мансийский филиал\n - AMUR: Амурская область\n - KAMCHATKA: Камчатский край\n - MAGADAN: Магаданская область\n - PRIMORYE: Приморский край\n - SAKHALIN: Сахалинская область\n - KHABAROVSK: Хабаровский край\n - CHITA: Забайкальский край\n - CHUKOTKA: ЧАО\n - ARCHANGELSK: Архангельск\n - VOLOGDA: Вологда\n - KALININGRAD: Калининград\n - KARELIA: Карелия\n - KOMI: Коми\n - LENOBLAST: Лен область\n - MURMANSK: Мурманск\n - NOVGOROD: Новгород\n - PSKOV: Псков\n - SPB: СПб\n - ALTAI: Алтайский филиал\n - BURYATIYA: Бурятский филиал\n - IRKUTSK: Иркутский филиал\n - KEMEROVO: Кемеровский филиал\n - KRASNOYARSK: Красноярский филиал\n - OMSK: Омский филиал\n - HAKASIYA: Республика Хакасия\n - RALTAY: Республика Алтай\n - TUVA: Республика Тыва\n - TOMSK: Томский филиал\n - ORENBURG: Оренбургская область\n - BELGOROD: Белгородский филиал\n - SAKHA: Саха\n - EKT: Екатеринбургский филиал\n - VOLGOGRAD: Волгоградский филиал\n - YAMAL: Ямало-Ненецкий филиал\n - CHELYABINSK: Челябинский филиал\n - PERM: Пермский филиал ПАО \"Ростелеком\"\n - MARYEL: Республика Марий Эл\n - PENZA: Пензенская область\n - INGUSHETIA: Ингушский филиал\n - NALCHIK: Кабардино-Балкарский филиал\n - ELISTA: Калмыцкий филиал\n - ROSTOV: Ростовский филиал\n - MAHACHKALA: Дагестанский филиал\n - MORDOVIYA: Республика Мордовия\n - KAZAN: Республика Татарстан (Татарстан)\n - SAMARA: Самарская область\n - SARATOV: Саратовская область\n - UDMURTIYA: Удмуртская Республика\n - ULYANOVSK: Ульяновская область\n - CHUVASHIYA: Чувашская Республика - Чувашия\n - NNOVGOROD: Нижегородская область\n - BRYANSK: Брянский филиал\n - VLADIMIR: Владимирский филиал\n - VORONEZH: Воронежский филиал\n - VLADIKAVKAZ: Северо-Осетинский филиал\n - STAVROPOL: Ставропольский филиал\n - CHERKESSK: Республика Карачаево-Черкесская\n - MAYKOP: Республика Адыгея\n - ASTRAKHAN: Астраханский филиал\n - KRASNODAR: Краснодарский филиал\n - TEST: Тестовый\n - NOVOSIBIRSK: Новосибирский филиал",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "UFA",
                  "KIROV",
                  "IVANOVO",
                  "KALUGA",
                  "KOSTROMA",
                  "KURSK",
                  "LIPETSK",
                  "MOSOBLAST",
                  "OREL",
                  "RYAZAN",
                  "TAMBOV",
                  "TVER",
                  "YAROSLAVL",
                  "SMOLENSK",
                  "TULA",
                  "MOSCOW",
                  "EAO",
                  "KURGAN",
                  "TUMEN",
                  "HANTY",
                  "AMUR",
                  "KAMCHATKA",
                  "MAGADAN",
                  "PRIMORYE",
                  "SAKHALIN",
                  "KHABAROVSK",
                  "CHITA",
                  "CHUKOTKA",
                  "ARCHANGELSK",
                  "VOLOGDA",
                  "KALININGRAD",
                  "KARELIA",
                  "KOMI",
                  "LENOBLAST",
                  "MURMANSK",
                  "NOVGOROD",
                  "PSKOV",
                  "SPB",
                  "ALTAI",
                  "BURYATIYA",
                  "IRKUTSK",
                  "KEMEROVO",
                  "KRASNOYARSK",
                  "OMSK",
                  "HAKASIYA",
                  "RALTAY",
                  "TUVA",
                  "TOMSK",
                  "ORENBURG",
                  "BELGOROD",
                  "SAKHA",
                  "EKT",
                  "VOLGOGRAD",
                  "YAMAL",
                  "CHELYABINSK",
                  "PERM",
                  "MARYEL",
                  "PENZA",
                  "INGUSHETIA",
                  "NALCHIK",
                  "ELISTA",
                  "ROSTOV",
                  "MAHACHKALA",
                  "MORDOVIYA",
                  "KAZAN",
                  "SAMARA",
                  "SARATOV",
                  "UDMURTIYA",
                  "ULYANOVSK",
                  "CHUVASHIYA",
                  "NNOVGOROD",
                  "BRYANSK",
                  "VLADIMIR",
                  "VORONEZH",
                  "VLADIKAVKAZ",
                  "STAVROPOL",
                  "CHERKESSK",
                  "MAYKOP",
                  "ASTRAKHAN",
                  "KRASNODAR",
                  "TEST",
                  "NOVOSIBIRSK"
                ]
              }
            }
          },
          {
            "name": "filter.statusTypes",
            "description": "По статусам объекта строительства\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - BUILDING: СМР\n - ACCEPTANCE: Реализован\n - ACTIVE: Обслуживание\n - ARCHIVE: Снят с обслуживания\n - CANCELLED: Отказ от заключения договора\n - TEST_STATUS_TYPE: Тестовый",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "BUILDING",
                  "ACCEPTANCE",
                  "ACTIVE",
                  "ARCHIVE",
                  "CANCELLED",
                  "TEST_STATUS_TYPE"
                ]
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/group/count": {
      "get": {
        "summary": "Метод получения количества связей объектов строительства и группы пользователя.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "BuildingService_GetBuildingGroupCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingGroupCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.groupIds",
            "description": "По Идентификатору группы пользователя",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По Объекту строительства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/group/list": {
      "get": {
        "summary": "Метод получения списка связей объектов строительства и группы пользователя.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "BuildingService_GetBuildingGroupList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetBuildingGroupListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetBuildingGroupListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.groupIds",
            "description": "По Идентификатору группы пользователя",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По Объекту строительства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - GROUP_ID: По Идентификатору группы пользователя\n - BUILDING_ID: По Объекту строительства",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "GROUP_ID",
                "BUILDING_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 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": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/list": {
      "get": {
        "summary": "Метод получения списка объектов строительства.\nРазрешения: telemetry_control:building:list, telemetry_control:building:list:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "BuildingService_GetBuildingList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetBuildingListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetBuildingListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.fiasId",
            "description": "По ФИАС",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.title",
            "description": "По заголовку",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.afterCreatedAt",
            "description": "По нижней границе дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.beforeCreatedAt",
            "description": "По верхней границе дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "filter.mrfTypes",
            "description": "По МРФ (Макрорегион)\n\n - MRF_TYPE_UNKNOWN: Значение не указано\n - TSENTR: Центр\n - YUG: Юг\n - URAL: Урал\n - SIBIR: Сибирь\n - SEVERO_ZAPAD: Северо-Запад\n - DALNIY_VOSTOK: Дальний Восток\n - VOLGA: Волга",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "TSENTR",
                  "YUG",
                  "URAL",
                  "SIBIR",
                  "SEVERO_ZAPAD",
                  "DALNIY_VOSTOK",
                  "VOLGA"
                ]
              }
            }
          },
          {
            "name": "filter.rfTypes",
            "description": "По РФ (Регион)\n\n - RF_TYPE_UNKNOWN: Значение не указано\n - UFA: Республика Башкортостан\n - KIROV: Кировская область\n - IVANOVO: Ивановский филиал\n - KALUGA: Калужский филиал\n - KOSTROMA: Костромской филиал\n - KURSK: Курский филиал\n - LIPETSK: Липецкий филиал\n - MOSOBLAST: Московская область\n - OREL: Орловский филиал\n - RYAZAN: Рязанский филиал\n - TAMBOV: Тамбовский филиал\n - TVER: Тверской филиал\n - YAROSLAVL: Ярославский филиал\n - SMOLENSK: Смоленский филиал\n - TULA: Тульский филиал\n - MOSCOW: Москва\n - EAO: ЕАО\n - KURGAN: Филиал в Тюменской и Курганской областях\n - TUMEN: Филиал в Тюменской и Курганской областях\n - HANTY: Ханты-Мансийский филиал\n - AMUR: Амурская область\n - KAMCHATKA: Камчатский край\n - MAGADAN: Магаданская область\n - PRIMORYE: Приморский край\n - SAKHALIN: Сахалинская область\n - KHABAROVSK: Хабаровский край\n - CHITA: Забайкальский край\n - CHUKOTKA: ЧАО\n - ARCHANGELSK: Архангельск\n - VOLOGDA: Вологда\n - KALININGRAD: Калининград\n - KARELIA: Карелия\n - KOMI: Коми\n - LENOBLAST: Лен область\n - MURMANSK: Мурманск\n - NOVGOROD: Новгород\n - PSKOV: Псков\n - SPB: СПб\n - ALTAI: Алтайский филиал\n - BURYATIYA: Бурятский филиал\n - IRKUTSK: Иркутский филиал\n - KEMEROVO: Кемеровский филиал\n - KRASNOYARSK: Красноярский филиал\n - OMSK: Омский филиал\n - HAKASIYA: Республика Хакасия\n - RALTAY: Республика Алтай\n - TUVA: Республика Тыва\n - TOMSK: Томский филиал\n - ORENBURG: Оренбургская область\n - BELGOROD: Белгородский филиал\n - SAKHA: Саха\n - EKT: Екатеринбургский филиал\n - VOLGOGRAD: Волгоградский филиал\n - YAMAL: Ямало-Ненецкий филиал\n - CHELYABINSK: Челябинский филиал\n - PERM: Пермский филиал ПАО \"Ростелеком\"\n - MARYEL: Республика Марий Эл\n - PENZA: Пензенская область\n - INGUSHETIA: Ингушский филиал\n - NALCHIK: Кабардино-Балкарский филиал\n - ELISTA: Калмыцкий филиал\n - ROSTOV: Ростовский филиал\n - MAHACHKALA: Дагестанский филиал\n - MORDOVIYA: Республика Мордовия\n - KAZAN: Республика Татарстан (Татарстан)\n - SAMARA: Самарская область\n - SARATOV: Саратовская область\n - UDMURTIYA: Удмуртская Республика\n - ULYANOVSK: Ульяновская область\n - CHUVASHIYA: Чувашская Республика - Чувашия\n - NNOVGOROD: Нижегородская область\n - BRYANSK: Брянский филиал\n - VLADIMIR: Владимирский филиал\n - VORONEZH: Воронежский филиал\n - VLADIKAVKAZ: Северо-Осетинский филиал\n - STAVROPOL: Ставропольский филиал\n - CHERKESSK: Республика Карачаево-Черкесская\n - MAYKOP: Республика Адыгея\n - ASTRAKHAN: Астраханский филиал\n - KRASNODAR: Краснодарский филиал\n - TEST: Тестовый\n - NOVOSIBIRSK: Новосибирский филиал",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "UFA",
                  "KIROV",
                  "IVANOVO",
                  "KALUGA",
                  "KOSTROMA",
                  "KURSK",
                  "LIPETSK",
                  "MOSOBLAST",
                  "OREL",
                  "RYAZAN",
                  "TAMBOV",
                  "TVER",
                  "YAROSLAVL",
                  "SMOLENSK",
                  "TULA",
                  "MOSCOW",
                  "EAO",
                  "KURGAN",
                  "TUMEN",
                  "HANTY",
                  "AMUR",
                  "KAMCHATKA",
                  "MAGADAN",
                  "PRIMORYE",
                  "SAKHALIN",
                  "KHABAROVSK",
                  "CHITA",
                  "CHUKOTKA",
                  "ARCHANGELSK",
                  "VOLOGDA",
                  "KALININGRAD",
                  "KARELIA",
                  "KOMI",
                  "LENOBLAST",
                  "MURMANSK",
                  "NOVGOROD",
                  "PSKOV",
                  "SPB",
                  "ALTAI",
                  "BURYATIYA",
                  "IRKUTSK",
                  "KEMEROVO",
                  "KRASNOYARSK",
                  "OMSK",
                  "HAKASIYA",
                  "RALTAY",
                  "TUVA",
                  "TOMSK",
                  "ORENBURG",
                  "BELGOROD",
                  "SAKHA",
                  "EKT",
                  "VOLGOGRAD",
                  "YAMAL",
                  "CHELYABINSK",
                  "PERM",
                  "MARYEL",
                  "PENZA",
                  "INGUSHETIA",
                  "NALCHIK",
                  "ELISTA",
                  "ROSTOV",
                  "MAHACHKALA",
                  "MORDOVIYA",
                  "KAZAN",
                  "SAMARA",
                  "SARATOV",
                  "UDMURTIYA",
                  "ULYANOVSK",
                  "CHUVASHIYA",
                  "NNOVGOROD",
                  "BRYANSK",
                  "VLADIMIR",
                  "VORONEZH",
                  "VLADIKAVKAZ",
                  "STAVROPOL",
                  "CHERKESSK",
                  "MAYKOP",
                  "ASTRAKHAN",
                  "KRASNODAR",
                  "TEST",
                  "NOVOSIBIRSK"
                ]
              }
            }
          },
          {
            "name": "filter.statusTypes",
            "description": "По статусам объекта строительства\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - BUILDING: СМР\n - ACCEPTANCE: Реализован\n - ACTIVE: Обслуживание\n - ARCHIVE: Снят с обслуживания\n - CANCELLED: Отказ от заключения договора\n - TEST_STATUS_TYPE: Тестовый",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "BUILDING",
                  "ACCEPTANCE",
                  "ACTIVE",
                  "ARCHIVE",
                  "CANCELLED",
                  "TEST_STATUS_TYPE"
                ]
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По уникальному ключу\n - TITLE: По наименованию\n - CREATED_AT: По дате создания\n - CHANGED_AT: По дате изменения\n - FIAS_ID: По ФИАС",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "TITLE",
                "CREATED_AT",
                "CHANGED_AT",
                "FIAS_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 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": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/{buildingGroup.buildingId}/group/{buildingGroup.groupId}/attach": {
      "put": {
        "summary": "Метод сохранения связей объектов строительства и группы пользователя.\nПоддерживает только создание.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "BuildingService_PutBuildingGroupAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutBuildingGroupAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "buildingGroup.buildingId",
            "description": "Идентификатор объекта строительства.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingGroup.groupId",
            "description": "Идентификатор группы.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/{buildingGroup.buildingId}/group/{buildingGroup.groupId}/detach": {
      "put": {
        "summary": "Метод удаления связей объектов строительства и группы пользователя.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "BuildingService_PutBuildingGroupDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutBuildingGroupDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "buildingGroup.buildingId",
            "description": "Идентификатор объекта строительства.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "buildingGroup.groupId",
            "description": "Идентификатор группы.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/building/{id}": {
      "get": {
        "summary": "Метод получения объекта строительства.\nРазрешения: telemetry_control:building:card, telemetry_control:building:card:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "BuildingService_GetBuilding",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор объекта строительства",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления объекта строительства.\nРазрешения: telemetry_control:building:remove, telemetry_control:building:remove:own.\nМетод доступен для: admin, service, bti, seller, application, owner, employee. При наличии разрешений",
        "operationId": "BuildingService_DeleteBuilding",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteBuildingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device": {
      "post": {
        "summary": "Метод сохранения прибора учета.\nПоддерживает создание и обновление.\nРазрешения: telemetry_control:device:save, telemetry_control:device:save:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений",
        "operationId": "DeviceService_PostDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostDeviceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/count": {
      "get": {
        "summary": "Метод получения количества приборов учета.\nРазрешения: telemetry_control:device:list, telemetry_control:device:list:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "DeviceService_GetDeviceCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.fiasIds",
            "description": "По ФИАС",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.types",
            "description": "По типам приборов учета\n\n - TYPE_UNKNOWN: Значение не указано\n - HUB: Коммуникационный модуль\n - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор\n - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN\n - METERING_DEVICE: Прибор учета расхода коммунальных услуг\n - INTERFACE_CONVERTER: Конвертер интерфейсов\n - M_BUS_HUB: M-BUS концентратор\n - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN\n - 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.statusTypes",
            "description": "По типам статусов\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - RECEIVED: Получен клиентом, еще не сконфигурирован\n - ACTIVE: Сконфигурирован клиентом, активен\n - WRONG: Обработан клиентом, возникла ошибка\n - ARCHIVE: Переведен в архивный статус\n - DELETE: Удален\n - UNLINK: Отсоединен",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "RECEIVED",
                  "ACTIVE",
                  "WRONG",
                  "ARCHIVE",
                  "DELETE",
                  "UNLINK"
                ]
              }
            }
          },
          {
            "name": "filter.models",
            "description": "По модели счетчика",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.metricPointMetricTypes",
            "description": "По типам метрик\n\n - METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "HOT_WATER",
                  "COLD_WATER",
                  "HEAT",
                  "GAS",
                  "ELECTRICITY"
                ]
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам помещений точек учета, привязанных через индикаторы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomLabels",
            "description": "По лейблам помещений точек учета, привязанных через индикаторы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.parentIds",
            "description": "По идентификаторам хабов",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По идентификатору объекта строительства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.serialNumbers",
            "description": "По серийным номерам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.metricPointIds",
            "description": "По ID точек учета, привязанных через индикаторы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.serialIds",
            "description": "Смешанный поиск по полям serial_number, dev_eui, MAC-адрес, model, external_id",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/group/count": {
      "get": {
        "summary": "Метод получения количества связей ПУ и группы пользователя.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceGroupCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceGroupCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.groupIds",
            "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"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/group/list": {
      "get": {
        "summary": "Метод получения списка связей ПУ и группы пользователя.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceGroupList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDeviceGroupListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDeviceGroupListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.groupIds",
            "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": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: GROUP_ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - GROUP_ID: По Идентификатору группы пользователя\n - DEVICE_ID: По ПУ",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "GROUP_ID",
                "DEVICE_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 0",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator": {
      "post": {
        "summary": "Метод сохранения индикатора.\nПоддерживает создание и обновление.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_PostDeviceIndicator",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceIndicatorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceIndicatorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceIndicatorResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostDeviceIndicatorRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/count": {
      "get": {
        "summary": "Метод получения количества индикаторов.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceIndicatorCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceIndicatorCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceIndicatorCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceIndicatorCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceIds",
            "description": "По списку приборов учета",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.signTypes",
            "description": "По типам измерений\n\n - SIGN_TYPE_UNKNOWN: Значение не указано\n - ABSOLUTE_DS: Абсолютный показатель\n - ABSOLUTE_RC: Абсолютный расход ресурса\n - INTERVAL_DS: Интервальный показатель состояния\n - INTERVAL_RC: Интервальный расход ресурса\n - CURRENT_DS: Текущее состояние\n - CURRENT_RS: Текущее состояние ресурса\n - VOLUME: Объём\n - PARAMETER: Параметр конфигурации\n - FLAG: Флаг состояния",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ABSOLUTE_DS",
                  "ABSOLUTE_RC",
                  "INTERVAL_DS",
                  "INTERVAL_RC",
                  "CURRENT_DS",
                  "CURRENT_RS",
                  "VOLUME",
                  "PARAMETER",
                  "FLAG"
                ]
              }
            }
          },
          {
            "name": "filter.deviceSerialNumbers",
            "description": "По серийным номерам привязанных ПУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По идентификаторам объектов строительства, привязанных ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По Номерам помещений, привязанных ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomLabels",
            "description": "По Лейблам помещений, привязанных ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.metricPointIds",
            "description": "По ID привязанных точек учета",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/list": {
      "get": {
        "summary": "Метод получения списка индикаторов.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceIndicatorList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDeviceIndicatorListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDeviceIndicatorListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceIds",
            "description": "По списку приборов учета",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.signTypes",
            "description": "По типам измерений\n\n - SIGN_TYPE_UNKNOWN: Значение не указано\n - ABSOLUTE_DS: Абсолютный показатель\n - ABSOLUTE_RC: Абсолютный расход ресурса\n - INTERVAL_DS: Интервальный показатель состояния\n - INTERVAL_RC: Интервальный расход ресурса\n - CURRENT_DS: Текущее состояние\n - CURRENT_RS: Текущее состояние ресурса\n - VOLUME: Объём\n - PARAMETER: Параметр конфигурации\n - FLAG: Флаг состояния",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ABSOLUTE_DS",
                  "ABSOLUTE_RC",
                  "INTERVAL_DS",
                  "INTERVAL_RC",
                  "CURRENT_DS",
                  "CURRENT_RS",
                  "VOLUME",
                  "PARAMETER",
                  "FLAG"
                ]
              }
            }
          },
          {
            "name": "filter.deviceSerialNumbers",
            "description": "По серийным номерам привязанных ПУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По идентификаторам объектов строительства, привязанных ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По Номерам помещений, привязанных ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomLabels",
            "description": "По Лейблам помещений, привязанных ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.metricPointIds",
            "description": "По ID привязанных точек учета",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По уникальному ключу\n - SIGN_TYPE: По типу измерений\n - DEVICE_ID: По Прибору учета\n - CREATED_AT: По Дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "SIGN_TYPE",
                "DEVICE_ID",
                "CREATED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 0",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/metric_point/count": {
      "get": {
        "summary": "Метод получения количества связей индикаторов и ТУ.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceIndicatorMetricPointCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceIndicatorMetricPointCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.indicatorId",
            "description": "По Идентификатору индикатора",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.metricPointId",
            "description": "По Идентификатору ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/metric_point/list": {
      "get": {
        "summary": "Метод получения списка связей индикаторов и ТУ.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceIndicatorMetricPointList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDeviceIndicatorMetricPointListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDeviceIndicatorMetricPointListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.indicatorId",
            "description": "По Идентификатору индикатора",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.metricPointId",
            "description": "По Идентификатору ТУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - INDICATOR_ID: По Идентификатору индикатора\n - METRIC_POINT_ID: По По Идентификатору ТУ",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "INDICATOR_ID",
                "METRIC_POINT_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 0",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/{deviceIndicatorMetricPoint.indicatorId}/metric_point/{deviceIndicatorMetricPoint.metricPointId}/attach": {
      "put": {
        "summary": "Метод сохранения связи индикаторов и ТУ.\nПоддерживает только создание связи.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_PutDeviceIndicatorMetricPointAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutDeviceIndicatorMetricPointAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "deviceIndicatorMetricPoint.indicatorId",
            "description": "Идентификатор индикатора.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deviceIndicatorMetricPoint.metricPointId",
            "description": "Идентификатору ТУ.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/{deviceIndicatorMetricPoint.indicatorId}/metric_point/{deviceIndicatorMetricPoint.metricPointId}/detach": {
      "put": {
        "summary": "Метод удаления связи индикаторов и ТУ.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_PutDeviceIndicatorMetricPointDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutDeviceIndicatorMetricPointDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "deviceIndicatorMetricPoint.indicatorId",
            "description": "Идентификатор индикатора.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deviceIndicatorMetricPoint.metricPointId",
            "description": "Идентификатору ТУ.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/indicator/{id}": {
      "get": {
        "summary": "Метод получения индикатора.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_GetDeviceIndicator",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceIndicatorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор индикатора",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления индикаторa.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "DeviceService_DeleteDeviceIndicator",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteDeviceIndicatorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/list": {
      "get": {
        "summary": "Метод получения списка приборов учета.\nРазрешения: telemetry_control:device:list, telemetry_control:device:list:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "DeviceService_GetDeviceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDeviceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDeviceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.fiasIds",
            "description": "По ФИАС",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.types",
            "description": "По типам приборов учета\n\n - TYPE_UNKNOWN: Значение не указано\n - HUB: Коммуникационный модуль\n - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор\n - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN\n - METERING_DEVICE: Прибор учета расхода коммунальных услуг\n - INTERFACE_CONVERTER: Конвертер интерфейсов\n - M_BUS_HUB: M-BUS концентратор\n - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN\n - 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.statusTypes",
            "description": "По типам статусов\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - RECEIVED: Получен клиентом, еще не сконфигурирован\n - ACTIVE: Сконфигурирован клиентом, активен\n - WRONG: Обработан клиентом, возникла ошибка\n - ARCHIVE: Переведен в архивный статус\n - DELETE: Удален\n - UNLINK: Отсоединен",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "RECEIVED",
                  "ACTIVE",
                  "WRONG",
                  "ARCHIVE",
                  "DELETE",
                  "UNLINK"
                ]
              }
            }
          },
          {
            "name": "filter.models",
            "description": "По модели счетчика",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.metricPointMetricTypes",
            "description": "По типам метрик\n\n - METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "HOT_WATER",
                  "COLD_WATER",
                  "HEAT",
                  "GAS",
                  "ELECTRICITY"
                ]
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам помещений точек учета, привязанных через индикаторы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomLabels",
            "description": "По лейблам помещений точек учета, привязанных через индикаторы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.parentIds",
            "description": "По идентификаторам хабов",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По идентификатору объекта строительства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.serialNumbers",
            "description": "По серийным номерам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.metricPointIds",
            "description": "По ID точек учета, привязанных через индикаторы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.serialIds",
            "description": "Смешанный поиск по полям serial_number, dev_eui, MAC-адрес, model, external_id",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 0",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/replace": {
      "post": {
        "summary": "Метод замены прибора учета.\nСоздает ПУ и привязывает его индикаторы к ТУ исходного ПУ.\nРазрешения: telemetry_control:device:save, telemetry_control:device:save:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений",
        "operationId": "DeviceService_PostDeviceReplace",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReplaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReplaceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDeviceReplaceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostDeviceReplaceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/{deviceGroup.deviceId}/group/{deviceGroup.groupId}/attach": {
      "put": {
        "summary": "Метод сохранения связей ПУ и группы пользователя.\nПоддерживает только создание.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "DeviceService_PutDeviceGroupAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutDeviceGroupAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "deviceGroup.deviceId",
            "description": "Идентификатор ПУ.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deviceGroup.groupId",
            "description": "Идентификатор группы.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/{deviceGroup.deviceId}/group/{deviceGroup.groupId}/detach": {
      "put": {
        "summary": "Метод удаления связей ПУ и группы пользователя.\nМетод доступен для: Token: admin, service, bti, seller. Без учета разрешений",
        "operationId": "DeviceService_PutDeviceGroupDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutDeviceGroupDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "deviceGroup.deviceId",
            "description": "Идентификатор ПУ.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deviceGroup.groupId",
            "description": "Идентификатор группы.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/device/{id}": {
      "get": {
        "summary": "Метод получения ПУ.\nРазрешения: telemetry_control:device:card, telemetry_control:device:card:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "DeviceService_GetDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор ПУ",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления прибора учета.\nРазрешения: telemetry_control:device:remove, telemetry_control:device:remove:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений",
        "operationId": "DeviceService_DeleteDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "device(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/device_model": {
      "post": {
        "summary": "Метод сохранения модели ПУ.\nПоддерживает создание и обновление.\nМетод доступен для: Token: admin, service, application. Без учета разрешений",
        "operationId": "DictionaryService_PostDictionaryDeviceModel",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostDictionaryDeviceModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostDictionaryDeviceModelRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/device_model/count": {
      "get": {
        "summary": "Метод получения количества моделей ПУ.\nМетод доступен для: Token: admin, service, application, bti, owner, employee, seller. Без учета разрешений",
        "operationId": "DictionaryService_GetDictionaryDeviceModelCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDictionaryDeviceModelCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.titles",
            "description": "По заголовку элемента",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.modelKinds",
            "description": "По типам модели",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/device_model/list": {
      "get": {
        "summary": "Метод получения списка моделей ПУ.\nМетод доступен для: Token: admin, service, application, bti, owner, employee, seller. Без учета разрешений",
        "operationId": "DictionaryService_GetDictionaryDeviceModelList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDictionaryDeviceModelListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDictionaryDeviceModelListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.titles",
            "description": "По заголовку элемента",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.modelKinds",
            "description": "По типам модели",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - TITLE: По заголовку элемента",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "TITLE"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 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": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/device_model/{id}": {
      "delete": {
        "summary": "Метод удаления модели ПУ.\nМетод доступен для: Token: admin, service, application. Без учета разрешений",
        "operationId": "DictionaryService_DeleteDictionaryDeviceModel",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteDictionaryDeviceModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/mrf/count": {
      "get": {
        "summary": "Метод получения количества элементов справочника Макрорегионы (МРФ).\nМетод доступен для: Token: admin, service, application, bti, owner, employee, seller. Без учета разрешений",
        "operationId": "DictionaryService_GetDictionaryMrfCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDictionaryMrfCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/mrf/list": {
      "get": {
        "summary": "Метод получения списка элементов справочника Макрорегионы (МРФ).\nМетод доступен для: Token: admin, service, application, bti, owner, employee, seller. Без учета разрешений",
        "operationId": "DictionaryService_GetDictionaryMrfList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDictionaryMrfListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDictionaryMrfListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/rf/count": {
      "get": {
        "summary": "Метод получения количества элементов справочника Регионы (РФ).\nМетод доступен для: Token: admin, service, application, bti, owner, employee, seller. Без учета разрешений",
        "operationId": "DictionaryService_GetDictionaryRfCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetDictionaryRfCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/dictionary/rf/list": {
      "get": {
        "summary": "Метод получения списка элементов справочника Регионы (РФ).\nМетод доступен для: Token: admin, service, application, bti, owner, employee, seller. Без учета разрешений",
        "operationId": "DictionaryService_GetDictionaryRfList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetDictionaryRfListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetDictionaryRfListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "dictionary(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/metric_point": {
      "post": {
        "summary": "Метод сохранения ТУ.\nПоддерживает создание и обновление.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "MetricPointService_PostMetricPoint",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostMetricPointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostMetricPointResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostMetricPointResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostMetricPointRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "metric_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/metric_point/count": {
      "get": {
        "summary": "Метод получения количества ТУ.\nРазрешения: telemetry_control:metric_point:list, telemetry_control:metric_point:list:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "MetricPointService_GetMetricPointCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetMetricPointCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetMetricPointCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetMetricPointCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceMetricPointMetricTypes",
            "description": "По типу энергоресурса\n\n - METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "HOT_WATER",
                  "COLD_WATER",
                  "HEAT",
                  "GAS",
                  "ELECTRICITY"
                ]
              }
            }
          },
          {
            "name": "filter.deviceMetricPointStatusTypes",
            "description": "По типу статуса\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - ACTIVE: Активная\n - ARCHIVE: Архивная",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "ARCHIVE"
                ]
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По Номеру помещения",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomLabels",
            "description": "По Лейблу помещения",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По идентификаторам объекта строительства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.fiasIds",
            "description": "По ФИАС",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По ID привязанных через индикаторы ПУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.deviceSerialNumbers",
            "description": "По серийным номерам привязанных через индикаторы ПУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "metric_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/metric_point/list": {
      "get": {
        "summary": "Метод получения списка ТУ.\nРазрешения: telemetry_control:metric_point:list, telemetry_control:metric_point:list:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "MetricPointService_GetMetricPointList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetMetricPointListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetMetricPointListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.deviceMetricPointMetricTypes",
            "description": "По типу энергоресурса\n\n - METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "HOT_WATER",
                  "COLD_WATER",
                  "HEAT",
                  "GAS",
                  "ELECTRICITY"
                ]
              }
            }
          },
          {
            "name": "filter.deviceMetricPointStatusTypes",
            "description": "По типу статуса\n\n - STATUS_TYPE_UNKNOWN: Значение не указано\n - ACTIVE: Активная\n - ARCHIVE: Архивная",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "ARCHIVE"
                ]
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По Номеру помещения",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.roomLabels",
            "description": "По Лейблу помещения",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.buildingIds",
            "description": "По идентификаторам объекта строительства",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.fiasIds",
            "description": "По ФИАС",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По ID привязанных через индикаторы ПУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.deviceSerialNumbers",
            "description": "По серийным номерам привязанных через индикаторы ПУ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - METRIC_TYPE: По типу энергоресурса\n - STATUS_TYPE: По типу статуса\n - ROOM_NUMBER: По Номеру помещения\n - ROOM_LABEL: По Лейблу помещения\n - BUILDING_ID: По идентификатору объекта строительства",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "METRIC_TYPE",
                "STATUS_TYPE",
                "ROOM_NUMBER",
                "ROOM_LABEL",
                "BUILDING_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 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": [
          "metric_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/metric_point/{id}": {
      "get": {
        "summary": "Метод получения ТУ.\nРазрешения: telemetry_control:metric_point:card, telemetry_control:metric_point:card:own.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.\nМетод доступен для: ApiKey: При наличии разрешений",
        "operationId": "MetricPointService_GetMetricPoint",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetMetricPointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор ТУ",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "metric_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления ТУ.\nМетод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений",
        "operationId": "MetricPointService_DeleteMetricPoint",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteMetricPointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "metric_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/system/status": {
      "get": {
        "summary": "Метод проверки доступности по порту из интернета.\nНе требует авторизации",
        "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, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/device": {
      "post": {
        "summary": "Метод сохранения шаблона ПУ.\nПоддерживает создание и обновление.\nМетод доступен для: Token: admin, service, application. Без учета разрешений",
        "operationId": "TemplateService_PostTemplateDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTemplateDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTemplateDeviceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTemplateDeviceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostTemplateDeviceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/device/count": {
      "get": {
        "summary": "Метод получения количества шаблонов ПУ.\nМетод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений",
        "operationId": "TemplateService_GetTemplateDeviceCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateDeviceCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateDeviceCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateDeviceCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.metricTypes",
            "description": "По типу энергоресурса\n\n - METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "HOT_WATER",
                  "COLD_WATER",
                  "HEAT",
                  "GAS",
                  "ELECTRICITY"
                ]
              }
            }
          },
          {
            "name": "filter.modelIds",
            "description": "По ID модели счетчика",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.planTypes",
            "description": "По типу тарифного плана. Для ПУ электроэнергии\n\n - PLAN_TYPE_UNKNOWN: Значение не указано\n - SINGLE: Однотарифный\n - DOUBLE: Двухтарифный\n - TRIPLE: Трёхтарифный",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "SINGLE",
                  "DOUBLE",
                  "TRIPLE"
                ]
              }
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "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": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/device/list": {
      "get": {
        "summary": "Метод получения списка шаблонов ПУ.\nМетод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений",
        "operationId": "TemplateService_GetTemplateDeviceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetTemplateDeviceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetTemplateDeviceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.metricTypes",
            "description": "По типу энергоресурса\n\n - METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "HOT_WATER",
                  "COLD_WATER",
                  "HEAT",
                  "GAS",
                  "ELECTRICITY"
                ]
              }
            }
          },
          {
            "name": "filter.modelIds",
            "description": "По ID модели счетчика",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.planTypes",
            "description": "По типу тарифного плана. Для ПУ электроэнергии\n\n - PLAN_TYPE_UNKNOWN: Значение не указано\n - SINGLE: Однотарифный\n - DOUBLE: Двухтарифный\n - TRIPLE: Трёхтарифный",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "SINGLE",
                  "DOUBLE",
                  "TRIPLE"
                ]
              }
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - METRIC_TYPE: По типу энергоресурса\n - MODEL: По модели счетчика",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "METRIC_TYPE",
                "MODEL"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 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": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/device/{id}": {
      "get": {
        "summary": "Метод получения шаблона ПУ.\nМетод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений",
        "operationId": "TemplateService_GetTemplateDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор шаблона ПУ",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления шаблона ПУ.\nМетод доступен для: Token: admin, service, application. Без учета разрешений",
        "operationId": "TemplateService_DeleteTemplateDevice",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteTemplateDeviceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/indicator": {
      "post": {
        "summary": "Метод сохранения шаблонов индикатора.\nПоддерживает создание и обновление.\nМетод доступен для: Token: admin, service, application. Без учета разрешений",
        "operationId": "TemplateService_PostTemplateIndicator",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTemplateIndicatorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTemplateIndicatorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostTemplateIndicatorResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostTemplateIndicatorRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/indicator/count": {
      "get": {
        "summary": "Метод получения количества шаблонов индикаторов.\nМетод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений",
        "operationId": "TemplateService_GetTemplateIndicatorCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateIndicatorCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateIndicatorCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateIndicatorCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.signTypes",
            "description": "По типу измерений\n\n - SIGN_TYPE_UNKNOWN: Значение не указано\n - ABSOLUTE_DS: Абсолютный показатель\n - ABSOLUTE_RC: Абсолютный расход ресурса\n - INTERVAL_DS: Интервальный показатель состояния\n - INTERVAL_RC: Интервальный расход ресурса\n - CURRENT_DS: Текущее состояние\n - CURRENT_RS: Текущее состояние ресурса\n - VOLUME: Объём\n - PARAMETER: Параметр конфигурации\n - FLAG: Флаг состояния",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ABSOLUTE_DS",
                  "ABSOLUTE_RC",
                  "INTERVAL_DS",
                  "INTERVAL_RC",
                  "CURRENT_DS",
                  "CURRENT_RS",
                  "VOLUME",
                  "PARAMETER",
                  "FLAG"
                ]
              }
            }
          },
          {
            "name": "filter.archiveTypes",
            "description": "По типу архивности показаний\n\n - ARCHIVE_TYPE_UNKNOWN: Значение не указано\n - CURRENT: Текущие показания\n - HALFHOUR: За 30 мин\n - HOUR: За час\n - DAY: За суток\n - MONTH: За месяц\n - YEAR: За год",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CURRENT",
                  "HALFHOUR",
                  "HOUR",
                  "DAY",
                  "MONTH",
                  "YEAR"
                ]
              }
            }
          },
          {
            "name": "filter.isIndividual",
            "description": "По флагу видимости индикатора для клиента ФЛ",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.title",
            "description": "По шаблонному названию индикатора.\nПоиск производится по подстроке",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "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": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/indicator/list": {
      "get": {
        "summary": "Метод получения списка шаблонов индикаторов.\nМетод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений",
        "operationId": "TemplateService_GetTemplateIndicatorList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetTemplateIndicatorListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetTemplateIndicatorListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.signTypes",
            "description": "По типу измерений\n\n - SIGN_TYPE_UNKNOWN: Значение не указано\n - ABSOLUTE_DS: Абсолютный показатель\n - ABSOLUTE_RC: Абсолютный расход ресурса\n - INTERVAL_DS: Интервальный показатель состояния\n - INTERVAL_RC: Интервальный расход ресурса\n - CURRENT_DS: Текущее состояние\n - CURRENT_RS: Текущее состояние ресурса\n - VOLUME: Объём\n - PARAMETER: Параметр конфигурации\n - FLAG: Флаг состояния",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ABSOLUTE_DS",
                  "ABSOLUTE_RC",
                  "INTERVAL_DS",
                  "INTERVAL_RC",
                  "CURRENT_DS",
                  "CURRENT_RS",
                  "VOLUME",
                  "PARAMETER",
                  "FLAG"
                ]
              }
            }
          },
          {
            "name": "filter.archiveTypes",
            "description": "По типу архивности показаний\n\n - ARCHIVE_TYPE_UNKNOWN: Значение не указано\n - CURRENT: Текущие показания\n - HALFHOUR: За 30 мин\n - HOUR: За час\n - DAY: За суток\n - MONTH: За месяц\n - YEAR: За год",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CURRENT",
                  "HALFHOUR",
                  "HOUR",
                  "DAY",
                  "MONTH",
                  "YEAR"
                ]
              }
            }
          },
          {
            "name": "filter.isIndividual",
            "description": "По флагу видимости индикатора для клиента ФЛ",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.title",
            "description": "По шаблонному названию индикатора.\nПоиск производится по подстроке",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.indicatorVendorTypes",
            "description": "По посреднику получения показаний\n\n - VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ENVIRO",
                  "LARTECH",
                  "RTK"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - SIGN_TYPE: По типу измерений\n - ARCHIVE_TYPE: По типу архивности показаний",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "SIGN_TYPE",
                "ARCHIVE_TYPE"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\nПо умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\nПо умолчанию: 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": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/telemetry_control/api/v1/template/indicator/{id}": {
      "get": {
        "summary": "Метод получения шаблона индикатора.\nМетод доступен для: Token: service, application, admin, owner, employee, bti, seller. Без учета разрешений",
        "operationId": "TemplateService_GetTemplateIndicator",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetTemplateIndicatorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор шаблона индикатора",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:read",
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления шаблона шаблона индикатора.\nМетод доступен для: Token: admin, service, application. Без учета разрешений",
        "operationId": "TemplateService_DeleteTemplateIndicator",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteTemplateIndicatorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "template(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "telemetry_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "DeviceMetricPoint": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор"
          },
          "metricType": {
            "title": "Тип энергоресурса",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPointMetricType"
              }
            ]
          },
          "roomNumber": {
            "type": "string",
            "title": "Номер помещения"
          },
          "roomLabel": {
            "type": "string",
            "title": "Лейбл помещения"
          },
          "zoneLabel": {
            "type": "string",
            "title": "Зона"
          },
          "statusType": {
            "title": "Тип статуса",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPointStatusType"
              }
            ]
          },
          "accountingType": {
            "title": "Тип учёта",
            "allOf": [
              {
                "$ref": "#/components/schemas/MetricPointAccountingType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "primaryCurrentType": {
            "title": "Тип номинала первичного тока",
            "allOf": [
              {
                "$ref": "#/components/schemas/MetricPointPrimaryCurrentType"
              }
            ]
          },
          "secondaryCurrentType": {
            "title": "Тип номинала вторичной обмотки",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceSecondaryCurrentType"
              }
            ]
          },
          "buildingId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор объекта строительства"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата изменения",
            "readOnly": true
          },
          "buildingLevel": {
            "type": "integer",
            "format": "int32",
            "title": "Уровень"
          },
          "buildingSection": {
            "type": "integer",
            "format": "int32",
            "title": "Секция"
          }
        },
        "title": "Точка учета",
        "required": [
          "metricType",
          "roomNumber",
          "roomLabel",
          "statusType",
          "accountingType",
          "buildingId"
        ]
      },
      "DeviceMetricPointMetricType": {
        "type": "string",
        "enum": [
          "HOT_WATER",
          "COLD_WATER",
          "HEAT",
          "GAS",
          "ELECTRICITY"
        ],
        "description": "- METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
        "title": "Справочние типов энергоресурсов"
      },
      "DeviceMetricPointStatusType": {
        "type": "string",
        "enum": [
          "ACTIVE",
          "ARCHIVE"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - ACTIVE: Активная\n - ARCHIVE: Архивная",
        "title": "Справочник типов статусов"
      },
      "DevicePipeType": {
        "type": "string",
        "enum": [
          "INFEED",
          "CIRCULATING"
        ],
        "description": "- PIPE_TYPE_UNKNOWN: Значение не указано\n - INFEED: Подающий\n - CIRCULATING: Циркуляционный",
        "title": "Справочник типов трубопроводов"
      },
      "DeviceSecondaryCurrentType": {
        "type": "string",
        "enum": [
          "TT1A",
          "TT2A",
          "TT5A"
        ],
        "description": "- SECONDARY_CURRENT_TYPE_UNKNOWN: Значение не указано\n - TT1A: 1 (А)\n - TT2A: 2 (А)\n - TT5A: 5 (А)",
        "title": "Справочник типов номинальных нагрузок вторичных обмоток.\nУ трансформаторов тока (В*А)"
      },
      "ErrorCreateIndicatorsFail": {
        "type": "object",
        "title": "Не удалось создать индикаторы нового ПУ"
      },
      "ErrorIpError": {
        "type": "object",
        "title": "Причины:\n - Устройство не найденно на данном IP адресе"
      },
      "ErrorMetricPointNotFound": {
        "type": "object",
        "title": "Заменяемый ПУ не привязан к ТУ"
      },
      "ErrorMultiLinkedMetricPoint": {
        "type": "object",
        "title": "Попытка замены ПУ, привязанного ко многим ТУ"
      },
      "ErrorNetworkAddressError": {
        "type": "object",
        "title": "Причины:\n - Неверный сетевой адрес"
      },
      "ErrorPortError": {
        "type": "object",
        "title": "Причины:\n - Устройство отсутствует на порту"
      },
      "ErrorReplaceDeviceNotFound": {
        "type": "object",
        "title": "Не найден заменяемый ПУ"
      },
      "ErrorWrongBuilding": {
        "type": "object",
        "title": "Заменяющий ПУ не привязан к дому заменяемого ПУ"
      },
      "MetricPointAccountingType": {
        "type": "string",
        "enum": [
          "COMMERCIAL",
          "TECHNICAL"
        ],
        "description": "- ACCOUNTING_TYPE_UNKNOWN: Значение не указано\n - COMMERCIAL: Коммерческий учёт\n - TECHNICAL: Технический учёт",
        "title": "Справочник типов учёта"
      },
      "MetricPointPrimaryCurrentType": {
        "type": "string",
        "enum": [
          "TT1A",
          "TT5A",
          "TT10A",
          "TT15A",
          "TT20A",
          "TT30A",
          "TT40A",
          "TT50A",
          "TT75A",
          "TT80A",
          "TT100A",
          "TT150A",
          "TT200A",
          "TT300A",
          "TT400A",
          "TT500A",
          "TT600A",
          "TT750A",
          "TT800A",
          "TT1000A",
          "TT1200A",
          "TT1500A",
          "TT2000A"
        ],
        "description": "- PRIMARY_CURRENT_TYPE_UNKNOWN: Значение не указано\n - TT1A: 1 (А)\n - TT5A: 5 (А)\n - TT10A: 10 (А)\n - TT15A: 15 (А)\n - TT20A: 20 (А)\n - TT30A: 30 (А)\n - TT40A: 40 (А)\n - TT50A: 50 (А)\n - TT75A: 75 (А)\n - TT80A: 80 (А)\n - TT100A: 100 (А)\n - TT150A: 150 (А)\n - TT200A: 200 (А)\n - TT300A: 300 (А)\n - TT400A: 400 (А)\n - TT500A: 500 (А)\n - TT600A: 600 (А)\n - TT750A: 750 (А)\n - TT800A: 800 (А)\n - TT1000A: 1000 (А)\n - TT1200A: 1200 (А)\n - TT1500A: 1500 (А)\n - TT2000A: 2000 (А)",
        "title": "Справочник типов номиналов первичных токов.\nУ выпускаемых трансформаторов тока (А)"
      },
      "PostBuildingFullDuplexRequestBuildingAsyncStatus": {
        "type": "object",
        "properties": {
          "buildingId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор объекта строительства"
          },
          "data": {
            "title": "Успех",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostBuildingFullDuplexRequestBuildingAsyncStatusSuccess"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostBuildingFullDuplexRequestBuildingAsyncStatusError"
              }
            ]
          }
        },
        "title": "Результат обработки объекта строительства на клиенте",
        "required": [
          "buildingId"
        ]
      },
      "PostBuildingFullDuplexRequestBuildingAsyncStatusError": {
        "type": "object",
        "properties": {
          "unknown": {
            "title": "Неизвестная ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostBuildingFullDuplexRequestBuildingAsyncStatusErrorUnknownError"
              }
            ]
          }
        },
        "title": "Ошибки обработки объекта строительства на клиенте"
      },
      "PostBuildingFullDuplexRequestBuildingAsyncStatusErrorUnknownError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "title": "Произвольный текст ошибки на стороне клиента.\nОтправляется в случае если в спецификации нет подходящей ошибки.\nПосле анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку"
          }
        },
        "title": "Неизвестная ошибка на стороне клиента",
        "required": [
          "message"
        ]
      },
      "PostBuildingFullDuplexRequestBuildingAsyncStatusSuccess": {
        "type": "object",
        "title": "Команда принята"
      },
      "PostBuildingFullDuplexResponseRemoveBuildingEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор объекта строительства"
          }
        },
        "title": "Событие удаления объекта строительства",
        "required": [
          "id"
        ]
      },
      "PostBuildingFullDuplexResponseUpsertBuildingEvent": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Объект строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          }
        },
        "title": "Событие создания/обновления объекта строительства",
        "required": [
          "data"
        ]
      },
      "PostDeviceFullDuplexRequestDeviceAsyncStatus": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор ПУ"
          },
          "data": {
            "title": "Успех",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDeviceFullDuplexRequestDeviceAsyncStatusSuccess"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDeviceFullDuplexRequestDeviceAsyncStatusError"
              }
            ]
          }
        },
        "title": "Результат обработки устройства на клиенте",
        "required": [
          "deviceId"
        ]
      },
      "PostDeviceFullDuplexRequestDeviceAsyncStatusError": {
        "type": "object",
        "properties": {
          "postDeviceRequestUnknown": {
            "title": "Неизвестная ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostDeviceFullDuplexRequestDeviceAsyncStatusErrorUnknownError"
              }
            ]
          },
          "postDeviceRequestIp": {
            "title": "Неверный IP",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorIpError"
              }
            ]
          },
          "postDeviceRequestPort": {
            "title": "Неверный порт",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorPortError"
              }
            ]
          },
          "postDeviceRequestNetworkAddress": {
            "title": "Неверный сетевой адрес",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorNetworkAddressError"
              }
            ]
          }
        },
        "title": "Ошибки обработки устройства на клиенте"
      },
      "PostDeviceFullDuplexRequestDeviceAsyncStatusErrorUnknownError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "title": "Произвольный текст ошибки на стороне клиента.\nОтправляется в случае если в спецификации нет подходящей ошибки.\nПосле анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку"
          }
        },
        "title": "Неизвестная ошибка на стороне клиента",
        "required": [
          "message"
        ]
      },
      "PostDeviceFullDuplexRequestDeviceAsyncStatusSuccess": {
        "type": "object",
        "title": "Команда принята"
      },
      "PostResourceFullDuplexRequestResourceAsyncStatus": {
        "type": "object",
        "properties": {
          "resourceId": {
            "title": "Идентификатор ресурса",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ResourceId"
              }
            ]
          },
          "data": {
            "title": "Успех",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostResourceFullDuplexRequestResourceAsyncStatusSuccess"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostResourceFullDuplexRequestResourceAsyncStatusError"
              }
            ]
          }
        },
        "title": "Результат обработки ресурса на клиенте",
        "required": [
          "resourceId"
        ]
      },
      "PostResourceFullDuplexRequestResourceAsyncStatusError": {
        "type": "object",
        "properties": {
          "unknown": {
            "title": "Неизвестная ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostResourceFullDuplexRequestResourceAsyncStatusErrorUnknownError"
              }
            ]
          }
        },
        "title": "Ошибки обработки ресурса на клиенте"
      },
      "PostResourceFullDuplexRequestResourceAsyncStatusErrorUnknownError": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "title": "Произвольный текст ошибки на стороне клиента.\nОтправляется в случае если в спецификации нет подходящей ошибки.\nПосле анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку"
          }
        },
        "title": "Неизвестная ошибка на стороне клиента",
        "required": [
          "message"
        ]
      },
      "PostResourceFullDuplexRequestResourceAsyncStatusSuccess": {
        "type": "object",
        "title": "Команда принята"
      },
      "PostResourceFullDuplexResponseRemoveResourceEvent": {
        "type": "object",
        "properties": {
          "resourceId": {
            "title": "Идентификатор ресурса",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ResourceId"
              }
            ]
          }
        },
        "title": "Событие удаления ресурса",
        "required": [
          "resourceId"
        ]
      },
      "PostResourceFullDuplexResponseUpsertResourceEvent": {
        "type": "object",
        "properties": {
          "resource": {
            "title": "Ресурс",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Resource"
              }
            ]
          }
        },
        "title": "Событие создания/обновления ресурса",
        "required": [
          "resource"
        ]
      },
      "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": "Ошибка транспортного слоя"
      },
      "telemetry_controlv1ValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1Building": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "title": {
            "type": "string",
            "title": "Наименование объекта строительства"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
            "readOnly": true
          },
          "utcOffset": {
            "type": "integer",
            "format": "int32",
            "title": "Смещение временной зоны объекта строительства от UTC в минутах"
          },
          "fiasId": {
            "type": "string",
            "title": "ФИАС"
          },
          "mrfType": {
            "title": "Принадлежность объекта строительства к МРФ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingMrfType"
              }
            ]
          },
          "rfType": {
            "title": "Принадлежность объекта строительства к РФ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingRfType"
              }
            ]
          },
          "statusType": {
            "title": "Статус объекта строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingStatusType"
              }
            ]
          },
          "fullAddress": {
            "type": "string",
            "title": "Адрес объекта строительства"
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН"
          }
        },
        "title": "Объект строительства",
        "required": [
          "utcOffset"
        ]
      },
      "v1BuildingFilter": {
        "type": "object",
        "properties": {
          "fiasId": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По ФИАС"
          },
          "title": {
            "type": "string",
            "title": "По заголовку"
          },
          "afterCreatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "По нижней границе дате создания"
          },
          "beforeCreatedAt": {
            "type": "string",
            "format": "date-time",
            "title": "По верхней границе дате создания"
          },
          "mrfTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1BuildingMrfType"
            },
            "title": "По МРФ (Макрорегион)"
          },
          "rfTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1BuildingRfType"
            },
            "title": "По РФ (Регион)"
          },
          "statusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1BuildingStatusType"
            },
            "title": "По статусам объекта строительства"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          }
        },
        "title": "Фильтр для запроса объектов строительства.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1BuildingGroup": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "title": "Идентификатор группы.\n# Тип: Guid"
          },
          "buildingId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор объекта строительства.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Связка объекта строительства и группы пользователя.\nЗадает область ресурсов (resource scope), доступную пользователю.\nИспользуется для контроля доступа к объекту строительства",
        "required": [
          "groupId",
          "buildingId"
        ]
      },
      "v1BuildingGroupFilter": {
        "type": "object",
        "properties": {
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Идентификатору группы пользователя"
          },
          "buildingIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По Объекту строительства"
          }
        },
        "title": "Фильтр для запроса связей объектов строительства и группы пользователя.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1BuildingGroupPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingGroupPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingGroupPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация связей объектов строительства и группы пользователя"
      },
      "v1BuildingGroupPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1BuildingGroupPagingOrderByType": {
        "type": "string",
        "enum": [
          "GROUP_ID",
          "BUILDING_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - GROUP_ID: По Идентификатору группы пользователя\n - BUILDING_ID: По Объекту строительства",
        "title": "Справочник типов сортировки"
      },
      "v1BuildingMrfType": {
        "type": "string",
        "enum": [
          "TSENTR",
          "YUG",
          "URAL",
          "SIBIR",
          "SEVERO_ZAPAD",
          "DALNIY_VOSTOK",
          "VOLGA"
        ],
        "description": "- MRF_TYPE_UNKNOWN: Значение не указано\n - TSENTR: Центр\n - YUG: Юг\n - URAL: Урал\n - SIBIR: Сибирь\n - SEVERO_ZAPAD: Северо-Запад\n - DALNIY_VOSTOK: Дальний Восток\n - VOLGA: Волга",
        "title": "Справочник МРФ (Макрорегионы)"
      },
      "v1BuildingPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация объектов строительства"
      },
      "v1BuildingPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1BuildingPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "TITLE",
          "CREATED_AT",
          "CHANGED_AT",
          "FIAS_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По уникальному ключу\n - TITLE: По наименованию\n - CREATED_AT: По дате создания\n - CHANGED_AT: По дате изменения\n - FIAS_ID: По ФИАС",
        "title": "Справочник типов сортировки"
      },
      "v1BuildingRfType": {
        "type": "string",
        "enum": [
          "UFA",
          "KIROV",
          "IVANOVO",
          "KALUGA",
          "KOSTROMA",
          "KURSK",
          "LIPETSK",
          "MOSOBLAST",
          "OREL",
          "RYAZAN",
          "TAMBOV",
          "TVER",
          "YAROSLAVL",
          "SMOLENSK",
          "TULA",
          "MOSCOW",
          "EAO",
          "KURGAN",
          "TUMEN",
          "HANTY",
          "AMUR",
          "KAMCHATKA",
          "MAGADAN",
          "PRIMORYE",
          "SAKHALIN",
          "KHABAROVSK",
          "CHITA",
          "CHUKOTKA",
          "ARCHANGELSK",
          "VOLOGDA",
          "KALININGRAD",
          "KARELIA",
          "KOMI",
          "LENOBLAST",
          "MURMANSK",
          "NOVGOROD",
          "PSKOV",
          "SPB",
          "ALTAI",
          "BURYATIYA",
          "IRKUTSK",
          "KEMEROVO",
          "KRASNOYARSK",
          "OMSK",
          "HAKASIYA",
          "RALTAY",
          "TUVA",
          "TOMSK",
          "ORENBURG",
          "BELGOROD",
          "SAKHA",
          "EKT",
          "VOLGOGRAD",
          "YAMAL",
          "CHELYABINSK",
          "PERM",
          "MARYEL",
          "PENZA",
          "INGUSHETIA",
          "NALCHIK",
          "ELISTA",
          "ROSTOV",
          "MAHACHKALA",
          "MORDOVIYA",
          "KAZAN",
          "SAMARA",
          "SARATOV",
          "UDMURTIYA",
          "ULYANOVSK",
          "CHUVASHIYA",
          "NNOVGOROD",
          "BRYANSK",
          "VLADIMIR",
          "VORONEZH",
          "VLADIKAVKAZ",
          "STAVROPOL",
          "CHERKESSK",
          "MAYKOP",
          "ASTRAKHAN",
          "KRASNODAR",
          "TEST",
          "NOVOSIBIRSK"
        ],
        "description": "- RF_TYPE_UNKNOWN: Значение не указано\n - UFA: Республика Башкортостан\n - KIROV: Кировская область\n - IVANOVO: Ивановский филиал\n - KALUGA: Калужский филиал\n - KOSTROMA: Костромской филиал\n - KURSK: Курский филиал\n - LIPETSK: Липецкий филиал\n - MOSOBLAST: Московская область\n - OREL: Орловский филиал\n - RYAZAN: Рязанский филиал\n - TAMBOV: Тамбовский филиал\n - TVER: Тверской филиал\n - YAROSLAVL: Ярославский филиал\n - SMOLENSK: Смоленский филиал\n - TULA: Тульский филиал\n - MOSCOW: Москва\n - EAO: ЕАО\n - KURGAN: Филиал в Тюменской и Курганской областях\n - TUMEN: Филиал в Тюменской и Курганской областях\n - HANTY: Ханты-Мансийский филиал\n - AMUR: Амурская область\n - KAMCHATKA: Камчатский край\n - MAGADAN: Магаданская область\n - PRIMORYE: Приморский край\n - SAKHALIN: Сахалинская область\n - KHABAROVSK: Хабаровский край\n - CHITA: Забайкальский край\n - CHUKOTKA: ЧАО\n - ARCHANGELSK: Архангельск\n - VOLOGDA: Вологда\n - KALININGRAD: Калининград\n - KARELIA: Карелия\n - KOMI: Коми\n - LENOBLAST: Лен область\n - MURMANSK: Мурманск\n - NOVGOROD: Новгород\n - PSKOV: Псков\n - SPB: СПб\n - ALTAI: Алтайский филиал\n - BURYATIYA: Бурятский филиал\n - IRKUTSK: Иркутский филиал\n - KEMEROVO: Кемеровский филиал\n - KRASNOYARSK: Красноярский филиал\n - OMSK: Омский филиал\n - HAKASIYA: Республика Хакасия\n - RALTAY: Республика Алтай\n - TUVA: Республика Тыва\n - TOMSK: Томский филиал\n - ORENBURG: Оренбургская область\n - BELGOROD: Белгородский филиал\n - SAKHA: Саха\n - EKT: Екатеринбургский филиал\n - VOLGOGRAD: Волгоградский филиал\n - YAMAL: Ямало-Ненецкий филиал\n - CHELYABINSK: Челябинский филиал\n - PERM: Пермский филиал ПАО \"Ростелеком\"\n - MARYEL: Республика Марий Эл\n - PENZA: Пензенская область\n - INGUSHETIA: Ингушский филиал\n - NALCHIK: Кабардино-Балкарский филиал\n - ELISTA: Калмыцкий филиал\n - ROSTOV: Ростовский филиал\n - MAHACHKALA: Дагестанский филиал\n - MORDOVIYA: Республика Мордовия\n - KAZAN: Республика Татарстан (Татарстан)\n - SAMARA: Самарская область\n - SARATOV: Саратовская область\n - UDMURTIYA: Удмуртская Республика\n - ULYANOVSK: Ульяновская область\n - CHUVASHIYA: Чувашская Республика - Чувашия\n - NNOVGOROD: Нижегородская область\n - BRYANSK: Брянский филиал\n - VLADIMIR: Владимирский филиал\n - VORONEZH: Воронежский филиал\n - VLADIKAVKAZ: Северо-Осетинский филиал\n - STAVROPOL: Ставропольский филиал\n - CHERKESSK: Республика Карачаево-Черкесская\n - MAYKOP: Республика Адыгея\n - ASTRAKHAN: Астраханский филиал\n - KRASNODAR: Краснодарский филиал\n - TEST: Тестовый\n - NOVOSIBIRSK: Новосибирский филиал",
        "title": "Справочник РФ (Регионы)"
      },
      "v1BuildingStatusType": {
        "type": "string",
        "enum": [
          "BUILDING",
          "ACCEPTANCE",
          "ACTIVE",
          "ARCHIVE",
          "CANCELLED",
          "TEST_STATUS_TYPE"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - BUILDING: СМР\n - ACCEPTANCE: Реализован\n - ACTIVE: Обслуживание\n - ARCHIVE: Снят с обслуживания\n - CANCELLED: Отказ от заключения договора\n - TEST_STATUS_TYPE: Тестовый",
        "title": "Статусы объектов строительства"
      },
      "v1DeleteBuildingResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления объекта строительства"
      },
      "v1DeleteDeviceIndicatorResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления индикатора"
      },
      "v1DeleteDeviceResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления прибора учета"
      },
      "v1DeleteDictionaryDeviceModelResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления модели ПУ"
      },
      "v1DeleteMetricPointResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления ТУ"
      },
      "v1DeleteTemplateDeviceResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления шаблона ПУ"
      },
      "v1DeleteTemplateIndicatorResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления шаблона индикатора"
      },
      "v1Device": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "indicators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1Indicator"
            },
            "title": "Индикаторы",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
            "readOnly": true
          },
          "type": {
            "title": "Тип прибора учёта(ПУ)",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceType"
              }
            ]
          },
          "serialNumber": {
            "type": "string",
            "title": "Серийный номер"
          },
          "model": {
            "type": "string",
            "title": "Производитель и модель счетчика"
          },
          "statusType": {
            "title": "Тип статуса",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceStatusType"
              }
            ]
          },
          "installedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата установки"
          },
          "removedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата удаления"
          },
          "checkAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата предыдущей поверки счетчика"
          },
          "nextCheckAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата следующей поверки счетчика"
          },
          "externalId": {
            "type": "string",
            "title": "Внешний дентификатор прибора учёта(ПУ)"
          },
          "planType": {
            "title": "Тип тарифного плана",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePlanType"
              }
            ]
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор хаба"
          },
          "pipeType": {
            "title": "Тип трубопровода",
            "allOf": [
              {
                "$ref": "#/components/schemas/DevicePipeType"
              }
            ]
          },
          "devEui": {
            "type": "string",
            "title": "Идентификатор модуля LoraWan"
          },
          "mac": {
            "type": "string",
            "title": "MAC-адрес"
          },
          "port": {
            "type": "integer",
            "format": "int32",
            "title": "Номер порта"
          },
          "networkAddress": {
            "type": "string",
            "title": "Сетевой адрес"
          },
          "commChannel": {
            "type": "string",
            "title": "Канал связи.\nДля станции LoraWan"
          },
          "simNumber": {
            "type": "string",
            "title": "MSISDN SIM-карты.\nНомер телефона"
          },
          "simSerial": {
            "type": "string",
            "title": "Серийный номер SIM-карты"
          },
          "ipAddressSim": {
            "type": "string",
            "title": "IP адрес SIM-карты"
          },
          "placement": {
            "type": "string",
            "title": "Размещение"
          },
          "installationPlace": {
            "type": "string",
            "title": "Место установки"
          },
          "protocolTypeLabel": {
            "type": "string",
            "title": "Тип протокола"
          },
          "wireInterface": {
            "type": "string",
            "title": "Тип проводного интерфейса"
          },
          "buildingId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор объекта строительства"
          },
          "manufactureYear": {
            "type": "integer",
            "format": "int32",
            "title": "Год выпуска счётчика"
          },
          "indicatorVendorType": {
            "title": "Посредник получения показаний",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorVendorType"
              }
            ]
          }
        },
        "title": "Прибор учёта",
        "required": [
          "type",
          "serialNumber",
          "model"
        ]
      },
      "v1DeviceFilter": {
        "type": "object",
        "properties": {
          "fiasIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По ФИАС"
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceType"
            },
            "title": "По типам приборов учета"
          },
          "statusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1DeviceStatusType"
            },
            "title": "По типам статусов"
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По модели счетчика"
          },
          "metricPointMetricTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceMetricPointMetricType"
            },
            "title": "По типам метрик"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам помещений точек учета, привязанных через индикаторы"
          },
          "roomLabels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По лейблам помещений точек учета, привязанных через индикаторы"
          },
          "parentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам хабов"
          },
          "buildingIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификатору объекта строительства"
          },
          "serialNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По серийным номерам"
          },
          "metricPointIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По ID точек учета, привязанных через индикаторы"
          },
          "serialIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Смешанный поиск по полям serial_number, dev_eui, MAC-адрес, model, external_id"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "indicatorVendorTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1IndicatorVendorType"
            },
            "title": "По посреднику получения показаний"
          }
        },
        "title": "Фильтр для запроса приборов учета.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1DeviceFilterValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1DeviceGroup": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "title": "Идентификатор группы.\n# Тип: Guid"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор ПУ.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Связка ПУ и группы пользователя.\nЗадает область ресурсов (resource scope), доступную пользователю.\nИспользуется для контроля доступа к ПУ",
        "required": [
          "groupId",
          "deviceId"
        ]
      },
      "v1DeviceGroupFilter": {
        "type": "object",
        "properties": {
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Идентификатору группы пользователя"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По ПУ"
          }
        },
        "title": "Фильтр для запроса связей ПУ и группы пользователя.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1DeviceGroupPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: GROUP_ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceGroupPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceGroupPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация связей ПУ и группы пользователя"
      },
      "v1DeviceGroupPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1DeviceGroupPagingOrderByType": {
        "type": "string",
        "enum": [
          "GROUP_ID",
          "DEVICE_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - GROUP_ID: По Идентификатору группы пользователя\n - DEVICE_ID: По ПУ",
        "title": "Справочник типов сортировки"
      },
      "v1DeviceIndicatorMetricPoint": {
        "type": "object",
        "properties": {
          "indicatorId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор индикатора.\n# Диапазон: 0..2147483647"
          },
          "metricPointId": {
            "type": "string",
            "title": "Идентификатору ТУ.\n# Тип: Guid"
          }
        },
        "title": "Связка индикатора и ТУ",
        "required": [
          "indicatorId",
          "metricPointId"
        ]
      },
      "v1DeviceIndicatorMetricPointFilter": {
        "type": "object",
        "properties": {
          "indicatorId": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По Идентификатору индикатора"
          },
          "metricPointId": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Идентификатору ТУ"
          }
        },
        "title": "Фильтр для запроса индикаторов и ТУ.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1DeviceIndicatorMetricPointPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceIndicatorMetricPointPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceIndicatorMetricPointPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация связей индикаторов и ТУ"
      },
      "v1DeviceIndicatorMetricPointPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1DeviceIndicatorMetricPointPagingOrderByType": {
        "type": "string",
        "enum": [
          "INDICATOR_ID",
          "METRIC_POINT_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - INDICATOR_ID: По Идентификатору индикатора\n - METRIC_POINT_ID: По По Идентификатору ТУ",
        "title": "Справочник типов сортировки"
      },
      "v1DevicePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация устройств"
      },
      "v1DevicePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1DevicePagingOrderByType": {
        "type": "string",
        "enum": [
          "ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору",
        "title": "Справочник типов значений сортировки"
      },
      "v1DevicePagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по ПУ.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1DevicePagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1DevicePagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1DevicePlanType": {
        "type": "string",
        "enum": [
          "SINGLE",
          "DOUBLE",
          "TRIPLE"
        ],
        "description": "- PLAN_TYPE_UNKNOWN: Значение не указано\n - SINGLE: Однотарифный\n - DOUBLE: Двухтарифный\n - TRIPLE: Трёхтарифный",
        "title": "Справочник типов тарифных планов"
      },
      "v1DeviceStatusType": {
        "type": "string",
        "enum": [
          "RECEIVED",
          "ACTIVE",
          "WRONG",
          "ARCHIVE",
          "DELETE",
          "UNLINK"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - RECEIVED: Получен клиентом, еще не сконфигурирован\n - ACTIVE: Сконфигурирован клиентом, активен\n - WRONG: Обработан клиентом, возникла ошибка\n - ARCHIVE: Переведен в архивный статус\n - DELETE: Удален\n - UNLINK: Отсоединен",
        "title": "Справочник типов статусов"
      },
      "v1DeviceType": {
        "type": "string",
        "enum": [
          "HUB",
          "PULSE_COUNTER_RECORDER",
          "PULSE_COUNTER_RECORDER_LR",
          "METERING_DEVICE",
          "INTERFACE_CONVERTER",
          "M_BUS_HUB",
          "COMMUNICATION_MODULE_LR",
          "BASE_LR"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - HUB: Коммуникационный модуль\n - PULSE_COUNTER_RECORDER: Счетчик импульсов - регистратор\n - PULSE_COUNTER_RECORDER_LR: Счетчик импульсов - регистратор LoRaWAN\n - METERING_DEVICE: Прибор учета расхода коммунальных услуг\n - INTERFACE_CONVERTER: Конвертер интерфейсов\n - M_BUS_HUB: M-BUS концентратор\n - COMMUNICATION_MODULE_LR: Модуль связи LoRaWAN\n - BASE_LR: Базовая станция LoRaWAN",
        "title": "Справочник типов приборов учёта(ПУ)"
      },
      "v1DeviceValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1DictionaryDeviceModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "title": "Модель счетчика"
          },
          "protocol": {
            "type": "string",
            "title": "Протокол счетчика"
          },
          "modelKind": {
            "type": "string",
            "title": "Тип модели"
          }
        },
        "title": "Элемент справочника моделей ПУ"
      },
      "v1DictionaryDeviceModelFilter": {
        "type": "object",
        "properties": {
          "titles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По заголовку элемента"
          },
          "modelKinds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По типам модели"
          }
        },
        "title": "Фильтр для запроса моделей приборов учета.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1DictionaryDeviceModelPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryDeviceModelPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryDeviceModelPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация"
      },
      "v1DictionaryDeviceModelPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\nПо умолчанию: ASC"
      },
      "v1DictionaryDeviceModelPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "TITLE"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - TITLE: По заголовку элемента",
        "title": "Справочник типов значений сортировки"
      },
      "v1DictionaryMrf": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "title": "Локализованный заголовок элемента"
          },
          "code": {
            "type": "string",
            "title": "Техническое наименование элемента"
          }
        },
        "title": "Элемент справочника Макрорегионы (МРФ)"
      },
      "v1DictionaryRf": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор",
            "readOnly": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "title": "Локализованный заголовок элемента"
          },
          "code": {
            "type": "string",
            "title": "Техническое наименование элемента"
          },
          "mrfId": {
            "type": "integer",
            "format": "int32",
            "title": "Принадлежность региона к Макрорегиону (МРФ)"
          }
        },
        "title": "Элемент справочника Регионы (РФ)",
        "required": [
          "mrfId"
        ]
      },
      "v1GetBuildingCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего индикаторов"
          }
        },
        "title": "Ответ на запрос получения количества объектов строительства"
      },
      "v1GetBuildingGroupCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего связей объектов строительства и группы пользователя"
          }
        },
        "title": "Ответ на запрос получения количества связей объектов строительства и группы пользователя"
      },
      "v1GetBuildingGroupListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связь объекта строительства и группы пользователя",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingGroup"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка связей объектов строительства и группы пользователя"
      },
      "v1GetBuildingListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Индикатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка объектов строительства"
      },
      "v1GetBuildingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Объект строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения объекта строительства"
      },
      "v1GetDeviceCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего устройств"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества устройств"
      },
      "v1GetDeviceCountResponseError": {
        "type": "object",
        "properties": {
          "deviceFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества устройств"
      },
      "v1GetDeviceGroupCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего связей ПУ и группы пользователя"
          }
        },
        "title": "Ответ на запрос получения количества связей ПУ и группы пользователя"
      },
      "v1GetDeviceGroupListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связь ПУ и группы пользователя",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceGroup"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка связей ПУ и группы пользователя"
      },
      "v1GetDeviceIndicatorCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего индикаторов"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceIndicatorCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества индикаторов"
      },
      "v1GetDeviceIndicatorCountResponseError": {
        "type": "object",
        "properties": {
          "deviceFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества индикаторов"
      },
      "v1GetDeviceIndicatorListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Индикатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Indicator"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceIndicatorListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка индикаторов"
      },
      "v1GetDeviceIndicatorListResponseError": {
        "type": "object",
        "properties": {
          "deviceFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorFilterValidationError"
              }
            ]
          },
          "devicePagingValidation": {
            "title": "Ошибка пагинации  по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorPagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка индикаторов"
      },
      "v1GetDeviceIndicatorMetricPointCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего связей индикаторов и ТУ"
          }
        },
        "title": "Ответ на запрос получения количества связей индикаторов и ТУ"
      },
      "v1GetDeviceIndicatorMetricPointListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связь индикатора и ТУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceIndicatorMetricPoint"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка связей индикаторов и ТУ"
      },
      "v1GetDeviceIndicatorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Индикатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Indicator"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения индикатора"
      },
      "v1GetDeviceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Прибор учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetDeviceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка приборов учета"
      },
      "v1GetDeviceListResponseError": {
        "type": "object",
        "properties": {
          "deviceFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceFilterValidationError"
              }
            ]
          },
          "devicePagingValidation": {
            "title": "Ошибка пагинации  по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DevicePagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка приборов учета"
      },
      "v1GetDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Прибор учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения ПУ"
      },
      "v1GetDictionaryDeviceModelCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего моделей приборов учета"
          }
        },
        "title": "Ответ на запрос получения количества моделей приборов учета"
      },
      "v1GetDictionaryDeviceModelListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Элемент справочника моделей ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryDeviceModel"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка моделей приборов учета"
      },
      "v1GetDictionaryMrfCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего элементов справочника Макрорегионы (МРФ)"
          }
        },
        "title": "Ответ на запрос получения количества элементов справочника Макрорегионы (МРФ)"
      },
      "v1GetDictionaryMrfListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Элемент справочника Макрорегионы (МРФ)",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryMrf"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения элементов справочника Макрорегионы (МРФ)"
      },
      "v1GetDictionaryRfCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего элементов справочника Регионы (РФ)"
          }
        },
        "title": "Ответ на запрос получения количества элементов справочника Регионы (РФ)"
      },
      "v1GetDictionaryRfListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Элемент справочника Регионы (РФ)",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryRf"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения элементов справочника Регионы (РФ)"
      },
      "v1GetMetricPointCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего ТУ"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetMetricPointCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества ТУ"
      },
      "v1GetMetricPointCountResponseError": {
        "type": "object",
        "properties": {
          "metricPointFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества ТУ"
      },
      "v1GetMetricPointListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPoint"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetMetricPointListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка ТУ"
      },
      "v1GetMetricPointListResponseError": {
        "type": "object",
        "properties": {
          "metricPointFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointFilterValidationError"
              }
            ]
          },
          "metricPointPagingValidation": {
            "title": "Ошибка пагинации  по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointPagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка ТУ"
      },
      "v1GetMetricPointResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPoint"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения ТУ"
      },
      "v1GetSystemStatusResponse": {
        "type": "object",
        "title": "Ответ на запрос проверки доступности сервиса"
      },
      "v1GetTemplateDeviceCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего шаблонов приборов учета"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTemplateDeviceCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества шаблонов приборов учета"
      },
      "v1GetTemplateDeviceCountResponseError": {
        "type": "object",
        "properties": {
          "templateDeviceFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDeviceFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества шаблонов приборов учета"
      },
      "v1GetTemplateDeviceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevice"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTemplateDeviceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка шаблонов приборов учета"
      },
      "v1GetTemplateDeviceListResponseError": {
        "type": "object",
        "properties": {
          "templateDeviceFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDeviceFilterValidationError"
              }
            ]
          },
          "templateDevicePagingValidation": {
            "title": "Ошибка пагинации  по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevicePagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка шаблонов приборов учета"
      },
      "v1GetTemplateDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevice"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения шаблона ПУ"
      },
      "v1GetTemplateIndicatorCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего шаблонов индикаторов"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTemplateIndicatorCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества шаблонов индикаторов"
      },
      "v1GetTemplateIndicatorCountResponseError": {
        "type": "object",
        "properties": {
          "templateIndicatorFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества шаблонов индикаторов"
      },
      "v1GetTemplateIndicatorListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон индикатора",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicator"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetTemplateIndicatorListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка шаблонов индикаторов"
      },
      "v1GetTemplateIndicatorListResponseError": {
        "type": "object",
        "properties": {
          "templateIndicatorFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorFilterValidationError"
              }
            ]
          },
          "templateIndicatorPagingValidation": {
            "title": "Ошибка пагинации  по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorPagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка шаблонов индикаторов"
      },
      "v1GetTemplateIndicatorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ндикатора",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicator"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения шаблона индикатора"
      },
      "v1Indicator": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор прибора учета(ПУ)"
          },
          "title": {
            "type": "string",
            "title": "Название"
          },
          "unitType": {
            "title": "Тип единицы измерения, в которой интерпретировано, получаемое измерение",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorUnitType"
              }
            ]
          },
          "signType": {
            "title": "Тип измерения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorSignType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
            "readOnly": true
          },
          "isIndividual": {
            "type": "boolean",
            "title": "Флаг видимости индикатора для клиента"
          },
          "compatibilityCode": {
            "type": "string",
            "title": "Код для совместимости с поставщиком метрик"
          },
          "archiveType": {
            "title": "Тип архивности показаний",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorArchiveType"
              }
            ]
          },
          "presentationUnitType": {
            "title": "Тип единицы измерения для отображения измерения.\nПри UNIT_TYPE_UNKNOWN отображаемые единицы совпадают с единицами источников значений, преобразования единиц не происходит.\nПрименяется после коэффициента",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorUnitType"
              }
            ]
          },
          "coefficient": {
            "type": "number",
            "format": "float",
            "title": "Коэффициент, на который умножается отображаемое значение.\nПрименяется перед преобразованием единиц измерений к presentation_unit_type и после применения поправки"
          },
          "shift": {
            "type": "number",
            "format": "float",
            "title": "Величина поправки к отображаемому значению.\nПрименяется перед применением коэффициента"
          },
          "roundDecimalDigits": {
            "type": "integer",
            "format": "int32",
            "title": "Количество возвращаемых десятичных знаков при округлении итогового значения.\nПри пустом параметре округления не происходит.\nПрименяется после преобразования единиц измерения"
          },
          "metricExpectedFreq": {
            "type": "integer",
            "format": "int32",
            "title": "Ожидаемая частота поступления показаний в днях"
          },
          "channelNumber": {
            "type": "string",
            "title": "Номер канала для многоканального ПУ"
          },
          "channelOrder": {
            "type": "integer",
            "format": "int32",
            "title": "Порядковый номер канала для многоканального ПУ"
          },
          "vendorType": {
            "title": "Посредник получения показаний",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorVendorType"
              }
            ]
          }
        },
        "title": "Индикатор",
        "required": [
          "deviceId",
          "title",
          "unitType",
          "signType"
        ]
      },
      "v1IndicatorArchiveType": {
        "type": "string",
        "enum": [
          "CURRENT",
          "HALFHOUR",
          "HOUR",
          "DAY",
          "MONTH",
          "YEAR"
        ],
        "description": "- ARCHIVE_TYPE_UNKNOWN: Значение не указано\n - CURRENT: Текущие показания\n - HALFHOUR: За 30 мин\n - HOUR: За час\n - DAY: За сутки\n - MONTH: За месяц\n - YEAR: За год",
        "title": "Справочник типа архивности показаний.\nИспользуется для указания за какой период произошло измерение.\nПо умолчанию CURRENT"
      },
      "v1IndicatorFilter": {
        "type": "object",
        "properties": {
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По списку приборов учета"
          },
          "signTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1IndicatorSignType"
            },
            "title": "По типам измерений"
          },
          "deviceSerialNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По серийным номерам привязанных ПУ"
          },
          "buildingIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам объектов строительства, привязанных ТУ"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Номерам помещений, привязанных ТУ"
          },
          "roomLabels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Лейблам помещений, привязанных ТУ"
          },
          "metricPointIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По ID привязанных точек учета"
          },
          "indicatorVendorTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1IndicatorVendorType"
            },
            "title": "По посреднику получения показаний"
          }
        },
        "title": "Фильтр для запроса индикаторов.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1IndicatorFilterValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1IndicatorPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация индикаторов"
      },
      "v1IndicatorPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1IndicatorPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "SIGN_TYPE",
          "DEVICE_ID",
          "CREATED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По уникальному ключу\n - SIGN_TYPE: По типу измерений\n - DEVICE_ID: По Прибору учета\n - CREATED_AT: По Дате создания",
        "title": "Справочник типов сортировки"
      },
      "v1IndicatorPagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorPagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorPagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по индикаторам.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1IndicatorPagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1IndicatorPagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1IndicatorSignType": {
        "type": "string",
        "enum": [
          "ABSOLUTE_DS",
          "ABSOLUTE_RC",
          "INTERVAL_DS",
          "INTERVAL_RC",
          "CURRENT_DS",
          "CURRENT_RS",
          "VOLUME",
          "PARAMETER",
          "FLAG"
        ],
        "description": "- SIGN_TYPE_UNKNOWN: Значение не указано\n - ABSOLUTE_DS: Абсолютный показатель\n - ABSOLUTE_RC: Абсолютный расход ресурса\n - INTERVAL_DS: Интервальный показатель состояния\n - INTERVAL_RC: Интервальный расход ресурса\n - CURRENT_DS: Текущее состояние\n - CURRENT_RS: Текущее состояние ресурса\n - VOLUME: Объём\n - PARAMETER: Параметр конфигурации\n - FLAG: Флаг состояния",
        "title": "Справочник типов измерений"
      },
      "v1IndicatorUnitType": {
        "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: Значение не указано\n - PERCENT: Процент\n - C: Градус по Цельсию\n - WT: Ватт\n - GKAL: Гигакалория\n - VALUE: Количество\n - KWH: Киловaтт-час\n - KG_CM2: Килограмм на квадратный сантиметр\n - KGF_CM2: Килограмм-сила на квадратный сантиметр\n - M3: Кубический метр\n - M3_H: Кубический метр в час\n - MPA: Мегапаскаль\n - MS: Миллисекунда\n - BOOLEAN: Флаг состояния\n - T: Тонна\n - T_H: Тонна в час\n - H: Час\n - NON_MEASURABLE: Безразмерная величина\n - IMP: Импульс\n - J: Джоуль\n - KJ: Килоджоуль\n - GJ: Гигаджоуль\n - WTH: Ватт-час\n - KWT: Киловатт\n - MIN: Минута\n - S: Секунда",
        "title": "Справочник типов единиц измерений"
      },
      "v1IndicatorValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1IndicatorVendorType": {
        "type": "string",
        "enum": [
          "ENVIRO",
          "LARTECH",
          "RTK"
        ],
        "description": "- VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
        "title": "Посредники получения показаний"
      },
      "v1MetricPointFilter": {
        "type": "object",
        "properties": {
          "deviceMetricPointMetricTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceMetricPointMetricType"
            },
            "title": "По типу энергоресурса"
          },
          "deviceMetricPointStatusTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceMetricPointStatusType"
            },
            "title": "По типу статуса"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Номеру помещения"
          },
          "roomLabels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По Лейблу помещения"
          },
          "buildingIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам объекта строительства"
          },
          "fiasIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По ФИАС"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По ID привязанных через индикаторы ПУ"
          },
          "deviceSerialNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По серийным номерам привязанных через индикаторы ПУ"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          }
        },
        "title": "Фильтр для запроса точек учета.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1MetricPointFilterValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1MetricPointPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация"
      },
      "v1MetricPointPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1MetricPointPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "METRIC_TYPE",
          "STATUS_TYPE",
          "ROOM_NUMBER",
          "ROOM_LABEL",
          "BUILDING_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - METRIC_TYPE: По типу энергоресурса\n - STATUS_TYPE: По типу статуса\n - ROOM_NUMBER: По Номеру помещения\n - ROOM_LABEL: По Лейблу помещения\n - BUILDING_ID: По идентификатору объекта строительства",
        "title": "Справочник типов значений сортировки"
      },
      "v1MetricPointPagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointPagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1MetricPointPagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по ТУ.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1MetricPointPagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1MetricPointPagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1PostBuildingFullDuplexResponse": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "title": "Идентификатор запроса"
          },
          "upsertBuildingEvent": {
            "title": "Событие создания/обновления объекта строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostBuildingFullDuplexResponseUpsertBuildingEvent"
              }
            ]
          },
          "removeBuildingEvent": {
            "title": "Событие удаления объекта строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostBuildingFullDuplexResponseRemoveBuildingEvent"
              }
            ]
          }
        },
        "title": "Событие создания/изменения объекта строительства на сервера",
        "required": [
          "requestId"
        ]
      },
      "v1PostBuildingRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Объект строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          }
        },
        "title": "Запрос сохранения объекта строительства",
        "required": [
          "data"
        ]
      },
      "v1PostBuildingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Объект строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения объекта строительства"
      },
      "v1PostDeviceFullDuplexResponse": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "title": "Идентификатор запроса"
          },
          "postDevice": {
            "title": "Измененние ПУ на сервере",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceResponse"
              }
            ]
          }
        },
        "title": "Событие изменения ПУ на сервера",
        "required": [
          "requestId"
        ]
      },
      "v1PostDeviceIndicatorRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Индикатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Indicator"
              }
            ]
          }
        },
        "title": "Запрос сохранения индикатора",
        "required": [
          "data"
        ]
      },
      "v1PostDeviceIndicatorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Индикатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Indicator"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceIndicatorResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения индикатора"
      },
      "v1PostDeviceIndicatorResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1IndicatorValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения индикатора"
      },
      "v1PostDeviceReplaceRequest": {
        "type": "object",
        "properties": {
          "replaceDeviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор заменяемого прибора учета"
          },
          "device": {
            "title": "Создаваемый прибор учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          }
        },
        "title": "Запрос замены прибора учета",
        "required": [
          "replaceDeviceId",
          "device"
        ]
      },
      "v1PostDeviceReplaceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Созданный на замену ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceReplaceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на замену прибора учета"
      },
      "v1PostDeviceReplaceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceValidationError"
              }
            ]
          },
          "replaceDeviceNotFound": {
            "title": "Не найден заменяемый ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorReplaceDeviceNotFound"
              }
            ]
          },
          "createIndicatorsFail": {
            "title": "Не удалось создать индикаторы нового ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorCreateIndicatorsFail"
              }
            ]
          },
          "multiLinkedMetricPoint": {
            "title": "Попытка замены ПУ, привязанного ко многим ТУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorMultiLinkedMetricPoint"
              }
            ]
          },
          "wrongBuilding": {
            "title": "Заменяющий ПУ не привязан к дому заменяемого ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorWrongBuilding"
              }
            ]
          },
          "metricPointNotFound": {
            "title": "Заменяемый ПУ не привязан к ТУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorMetricPointNotFound"
              }
            ]
          }
        },
        "title": "Ошибка замены ПУ"
      },
      "v1PostDeviceRequest": {
        "type": "object",
        "properties": {
          "device": {
            "title": "Прибор учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          }
        },
        "title": "Запрос сохранения ПУ",
        "required": [
          "device"
        ]
      },
      "v1PostDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostDeviceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на изменение ПУ на сервере"
      },
      "v1PostDeviceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения ПУ"
      },
      "v1PostDictionaryDeviceModelRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryDeviceModel"
              }
            ]
          }
        },
        "title": "Запрос сохранения модели ПУ",
        "required": [
          "data"
        ]
      },
      "v1PostDictionaryDeviceModelResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DictionaryDeviceModel"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения модели ПУ"
      },
      "v1PostMetricPointRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPoint"
              }
            ]
          }
        },
        "title": "Запрос сохранения ТУ",
        "required": [
          "data"
        ]
      },
      "v1PostMetricPointResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPoint"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostMetricPointResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения ТУ"
      },
      "v1PostMetricPointResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/telemetry_controlv1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения ТУ"
      },
      "v1PostResourceFullDuplexResponse": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "title": "Идентификатор запроса"
          },
          "upsertResourceEvent": {
            "title": "Событие создания/обновления ресурса",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostResourceFullDuplexResponseUpsertResourceEvent"
              }
            ]
          },
          "removeResourceEvent": {
            "title": "Событие удаления ресурса",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostResourceFullDuplexResponseRemoveResourceEvent"
              }
            ]
          }
        },
        "title": "Событие создания/изменения ресурса",
        "required": [
          "requestId"
        ]
      },
      "v1PostTemplateDeviceRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevice"
              }
            ]
          }
        },
        "title": "Запрос сохранения шаблона ПУ",
        "required": [
          "data"
        ]
      },
      "v1PostTemplateDeviceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevice"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostTemplateDeviceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения шаблона ПУ"
      },
      "v1PostTemplateDeviceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDeviceValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения шаблона ПУ"
      },
      "v1PostTemplateIndicatorRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон индикатора",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicator"
              }
            ]
          }
        },
        "title": "Запрос сохранения шаблона индикатора",
        "required": [
          "data"
        ]
      },
      "v1PostTemplateIndicatorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Шаблон индикатора",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicator"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostTemplateIndicatorResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения шаблона индикатора"
      },
      "v1PostTemplateIndicatorResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения шаблона индикатора"
      },
      "v1PutBuildingGroupAttachResponse": {
        "type": "object",
        "title": "Ответ на запрос сохранения связи объекта строительства и группы пользователя"
      },
      "v1PutBuildingGroupDetachResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления связи объекта строительства и группы пользователя"
      },
      "v1PutDeviceGroupAttachResponse": {
        "type": "object",
        "title": "Ответ на запрос сохранения связи ПУ и группы пользователя"
      },
      "v1PutDeviceGroupDetachResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления связи ПУ и группы пользователя"
      },
      "v1PutDeviceIndicatorMetricPointAttachResponse": {
        "type": "object",
        "title": "Ответ на запрос сохранения связи индикатора и ТУ"
      },
      "v1PutDeviceIndicatorMetricPointDetachResponse": {
        "type": "object",
        "title": "Ответ на запрос удаления связи индикатора и ТУ"
      },
      "v1Resource": {
        "type": "object",
        "properties": {
          "building": {
            "title": "Объект строительства",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          },
          "device": {
            "title": "Идентификатор ПУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Device"
              }
            ]
          },
          "metricPoint": {
            "title": "Точка учета",
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMetricPoint"
              }
            ]
          },
          "indicator": {
            "title": "Индикатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Indicator"
              }
            ]
          },
          "indicatorMetricPoint": {
            "title": "Связка индикатора и ТУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceIndicatorMetricPoint"
              }
            ]
          }
        },
        "title": "Ресурс"
      },
      "v1ResourceId": {
        "type": "object",
        "properties": {
          "buildingId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор объекта строительства"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор ПУ"
          },
          "metricPointId": {
            "type": "string",
            "title": "Идентификатор ТУ"
          },
          "indicatorId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор индикатора"
          },
          "indicatorMetricPoint": {
            "title": "Связка индикатора и ТУ",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeviceIndicatorMetricPoint"
              }
            ]
          }
        },
        "title": "Идентификатор ресурса"
      },
      "v1TemplateDevice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении",
            "readOnly": true
          },
          "metricType": {
            "title": "Тип энергоресурса",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDeviceMetricType"
              }
            ]
          },
          "modelId": {
            "type": "integer",
            "format": "int32",
            "title": "ID Модели счетчика"
          },
          "indicatorTemplateIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Шаблоны индикаторов"
          },
          "planType": {
            "title": "Тип тарифного плана.\nДля ПУ электроэнергии",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevicePlanType"
              }
            ]
          },
          "indicatorVendorType": {
            "title": "Посредник получения показаний",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorVendorType"
              }
            ]
          }
        },
        "title": "Шаблон ПУ",
        "required": [
          "metricType"
        ]
      },
      "v1TemplateDeviceFilter": {
        "type": "object",
        "properties": {
          "metricTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1TemplateDeviceMetricType"
            },
            "title": "По типу энергоресурса"
          },
          "modelIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По ID модели счетчика"
          },
          "planTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1TemplateDevicePlanType"
            },
            "title": "По типу тарифного плана. Для ПУ электроэнергии"
          },
          "indicatorVendorTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1TemplateIndicatorVendorType"
            },
            "title": "По посреднику получения показаний"
          }
        },
        "title": "Фильтр для запроса шаблонов приборов учета.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1TemplateDeviceFilterValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1TemplateDeviceMetricType": {
        "type": "string",
        "enum": [
          "HOT_WATER",
          "COLD_WATER",
          "HEAT",
          "GAS",
          "ELECTRICITY"
        ],
        "description": "- METRIC_TYPE_UNKNOWN: Значение не указано\n - HOT_WATER: Горячая вода\n - COLD_WATER: Холодная вода\n - HEAT: Теплоэнергия\n - GAS: Газ\n - ELECTRICITY: Электроэнергия",
        "title": "Справочние типов энергоресурсов"
      },
      "v1TemplateDevicePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevicePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevicePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация"
      },
      "v1TemplateDevicePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1TemplateDevicePagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "METRIC_TYPE",
          "MODEL"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - METRIC_TYPE: По типу энергоресурса\n - MODEL: По модели счетчика",
        "title": "Справочник типов значений сортировки"
      },
      "v1TemplateDevicePagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevicePagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateDevicePagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по шаблонам ПУ.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1TemplateDevicePagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1TemplateDevicePagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1TemplateDevicePlanType": {
        "type": "string",
        "enum": [
          "SINGLE",
          "DOUBLE",
          "TRIPLE"
        ],
        "description": "- PLAN_TYPE_UNKNOWN: Значение не указано\n - SINGLE: Однотарифный\n - DOUBLE: Двухтарифный\n - TRIPLE: Трёхтарифный",
        "title": "Тип тарифного плана"
      },
      "v1TemplateDeviceValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1TemplateIndicator": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "title": "Шаблонное название индикатора"
          },
          "unitType": {
            "title": "Тип единицы измерения, в которой интерпретировано, получаемое измерение",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorUnitType"
              }
            ]
          },
          "signType": {
            "title": "Тип измерения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorSignType"
              }
            ]
          },
          "archiveType": {
            "title": "Тип архивности показаний",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorArchiveType"
              }
            ]
          },
          "presentationUnitType": {
            "title": "Тип единицы измерения для отображения измерения.\nПри UNIT_TYPE_UNKNOWN отображаемые единицы совпадают с единицами источников значений, преобразования единиц не происходит.\nПрименяется после коэффициента",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorUnitType"
              }
            ]
          },
          "compatibilityCode": {
            "type": "string",
            "title": "Код для совместимости с поставщиком метрик"
          },
          "isIndividual": {
            "type": "boolean",
            "title": "Флаг видимости индикатора для клиента ФЛ"
          },
          "coefficient": {
            "type": "number",
            "format": "float",
            "title": "Коэффициент, на который умножается отображаемое значение.\nПрименяется перед преобразованием единиц измерений к presentation_unit_type и после применения поправки"
          },
          "shift": {
            "type": "number",
            "format": "float",
            "title": "Величина поправки к отображаемому значению.\nПрименяется перед применением коэффициента"
          },
          "roundDecimalDigits": {
            "type": "integer",
            "format": "int32",
            "title": "Количество возвращаемых десятичных знаков при округлении итогового значения.\nПри пустом параметре округления не происходит.\nПрименяется после преобразования единиц измерения"
          },
          "metricExpectedFreq": {
            "type": "integer",
            "format": "int32",
            "title": "Ожидаемая частота поступления показаний в днях"
          },
          "indicatorVendorType": {
            "title": "Посредник получения показаний",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorVendorType"
              }
            ]
          }
        },
        "title": "Шаблон индикатора",
        "required": [
          "title",
          "unitType",
          "signType"
        ]
      },
      "v1TemplateIndicatorArchiveType": {
        "type": "string",
        "enum": [
          "CURRENT",
          "HALFHOUR",
          "HOUR",
          "DAY",
          "MONTH",
          "YEAR"
        ],
        "description": "- ARCHIVE_TYPE_UNKNOWN: Значение не указано\n - CURRENT: Текущие показания\n - HALFHOUR: За 30 мин\n - HOUR: За час\n - DAY: За суток\n - MONTH: За месяц\n - YEAR: За год",
        "title": "Справочник типа архивности показаний.\nИспользуется для указания за какой период произошло измерение.\nПо умолчанию CURRENT"
      },
      "v1TemplateIndicatorFilter": {
        "type": "object",
        "properties": {
          "signTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1TemplateIndicatorSignType"
            },
            "title": "По типу измерений"
          },
          "archiveTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1TemplateIndicatorArchiveType"
            },
            "title": "По типу архивности показаний"
          },
          "isIndividual": {
            "type": "boolean",
            "title": "По флагу видимости индикатора для клиента ФЛ"
          },
          "title": {
            "type": "string",
            "title": "По шаблонному названию индикатора.\nПоиск производится по подстроке"
          },
          "indicatorVendorTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1TemplateIndicatorVendorType"
            },
            "title": "По посреднику получения показаний"
          }
        },
        "title": "Фильтр для запроса шаблонов индикаторов.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1TemplateIndicatorFilterValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1TemplateIndicatorPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано) то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация"
      },
      "v1TemplateIndicatorPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1TemplateIndicatorPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "SIGN_TYPE",
          "ARCHIVE_TYPE"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - SIGN_TYPE: По типу измерений\n - ARCHIVE_TYPE: По типу архивности показаний",
        "title": "Справочник типов значений сортировки"
      },
      "v1TemplateIndicatorPagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorPagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1TemplateIndicatorPagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по шаблонам индикатора.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1TemplateIndicatorPagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1TemplateIndicatorPagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1TemplateIndicatorSignType": {
        "type": "string",
        "enum": [
          "ABSOLUTE_DS",
          "ABSOLUTE_RC",
          "INTERVAL_DS",
          "INTERVAL_RC",
          "CURRENT_DS",
          "CURRENT_RS",
          "VOLUME",
          "PARAMETER",
          "FLAG"
        ],
        "description": "- SIGN_TYPE_UNKNOWN: Значение не указано\n - ABSOLUTE_DS: Абсолютный показатель\n - ABSOLUTE_RC: Абсолютный расход ресурса\n - INTERVAL_DS: Интервальный показатель состояния\n - INTERVAL_RC: Интервальный расход ресурса\n - CURRENT_DS: Текущее состояние\n - CURRENT_RS: Текущее состояние ресурса\n - VOLUME: Объём\n - PARAMETER: Параметр конфигурации\n - FLAG: Флаг состояния",
        "title": "Справочник типов измерений"
      },
      "v1TemplateIndicatorUnitType": {
        "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: Значение не указано\n - PERCENT: Процент\n - C: Градус по Цельсию\n - WT: Ватт\n - GKAL: Гигакалория\n - VALUE: Количество\n - KWH: Киловaтт-час\n - KG_CM2: Килограмм на квадратный сантиметр\n - KGF_CM2: Килограмм-сила на квадратный сантиметр\n - M3: Кубический метр\n - M3_H: Кубический метр в час\n - MPA: Мегапаскаль\n - MS: Миллисекунда\n - BOOLEAN: Флаг состояния\n - T: Тонна\n - T_H: Тонна в час\n - H: Час\n - NON_MEASURABLE: Безразмерная величина\n - IMP: Импульс\n - J: Джоуль\n - KJ: Килоджоуль\n - GJ: Гигаджоуль\n - WTH: Ватт-час\n - KWT: Киловатт\n - MIN: Минута\n - S: Секунда",
        "title": "Справочник типов единиц измерений"
      },
      "v1TemplateIndicatorValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования protobuf"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      },
      "v1TemplateIndicatorVendorType": {
        "type": "string",
        "enum": [
          "ENVIRO",
          "LARTECH",
          "RTK"
        ],
        "description": "- VENDOR_TYPE_UNKNOWN: Значение не указано\n - ENVIRO: Энвайро\n - LARTECH: Лартех\n - RTK: РТК",
        "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_control:edit": "Предоставляет полный доступ в сервис telemetry_control",
              "telemetry_control:read": "Предоставляет доступ на чтение данных из сервиса telemetry_control"
            }
          }
        }
      }
    }
  },
  "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"
    }
  ]
}