{
  "openapi": "3.0.3",
  "info": {
    "title": "subscription",
    "version": "1.0.1775813760260",
    "description": "Сервис subscription",
    "license": {
      "name": "CC BY-NC-ND 4.0",
      "url": "https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md"
    }
  },
  "tags": [
    {
      "name": "offer(auth)",
      "description": "Методы offer. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "plan(auth)",
      "description": "Методы plan. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "privilege(auth)",
      "description": "Методы privilege. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "service(auth)",
      "description": "Методы service. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "subscription(auth)",
      "description": "Методы subscription. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "system(public)",
      "description": "Методы system. Не требуют авторизацию. Доступны из интернета"
    }
  ],
  "paths": {
    "/subscription/api/v1/offer/count": {
      "get": {
        "summary": "Метод получения количества коммерческих возможностей.\nМетод доступен для: admin, mrf, master, external_seller, ltp_first, owner, employee, service, application(subscription:read или subscription:edit)",
        "operationId": "OfferService_GetOfferCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetOfferCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetOfferCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetOfferCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.types",
            "description": "По типам\n\n - TYPE_UNKNOWN: Значение не указано\n - COMPANY: УК.\nУслуги, которые назначаются на управляющие компанию\n - RTK: Ростелеком.\nУслуги, которые Ростелеком подключает напрямую физическим лицам\n - SHARED: Общая.\nУслуги, которые видят клиенты обоих типов",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "COMPANY",
                  "RTK",
                  "SHARED"
                ]
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "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": [
          "offer(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/offer/list": {
      "get": {
        "summary": "Метод получения списка коммерческих возможностей.\nМетод доступен для: admin, mrf, master, external_seller, ltp_first, owner, employee, service, application(subscription:read или subscription:edit)",
        "operationId": "OfferService_GetOfferList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetOfferListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetOfferListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.types",
            "description": "По типам\n\n - TYPE_UNKNOWN: Значение не указано\n - COMPANY: УК.\nУслуги, которые назначаются на управляющие компанию\n - RTK: Ростелеком.\nУслуги, которые Ростелеком подключает напрямую физическим лицам\n - SHARED: Общая.\nУслуги, которые видят клиенты обоих типов",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "COMPANY",
                  "RTK",
                  "SHARED"
                ]
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "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 - ID: По идентификатору\n - PRICE: По цене",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "PRICE"
              ]
            }
          },
          {
            "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": [
          "offer(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/offer/{id}": {
      "get": {
        "summary": "Метод получения коммерческой возможности.\nМетод доступен для: admin, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "OfferService_GetOffer",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetOfferResponse"
                }
              }
            }
          },
          "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": [
          "offer(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/plan/count": {
      "get": {
        "summary": "Метод получения количества технологических планов.\nМетод доступен для: admin, service, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "PlanService_GetPlanCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPlanCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPlanCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPlanCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.text",
            "description": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Поиск производится по полям:\n# - Название;\n# - Описание;\n# - Краткое описание",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.rfIds",
            "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": [
          "plan(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/plan/list": {
      "get": {
        "summary": "Метод получения списка технологических планов.\nМетод доступен для: admin, service, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "PlanService_GetPlanList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetPlanListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetPlanListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.text",
            "description": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Поиск производится по полям:\n# - Название;\n# - Описание;\n# - Краткое описание",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.rfIds",
            "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 - 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": [
          "plan(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/plan/{id}": {
      "get": {
        "summary": "Метод получения технологического плана.\nМетод доступен для: admin, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "PlanService_GetPlan",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPlanResponse"
                }
              }
            }
          },
          "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": [
          "plan(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/privilege/check/{orpon}/{flatNumber}/{privilegeType}": {
      "get": {
        "summary": "Метод проверки привилегии.\nМетод доступен для: admin, master, service, ltp_first, application(subscription:read или subscription:edit)",
        "operationId": "PrivilegeService_GetPrivilegeCheck",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPrivilegeCheckResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "ОРПОН.\nИдентификатор дома",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "flatNumber",
            "description": "Номер квартиры",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "privilegeType",
            "description": "Тип привилегии",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "INTERCOM_USE",
                "INTERCOM_OPEN",
                "INTERCOM_CODE_USE",
                "INTERCOM_RFID_USE",
                "INTERCOM_EVENT_USE",
                "INTERCOM_CAMERA_USE",
                "INTERCOM_CAMERA_ARCHIVE",
                "INTERCOM_CALLREDIRECT_APP",
                "INTERCOM_CALLREDIRECT_PSTN",
                "INTERCOM_CALLREDIRECT_SIP",
                "BARRIER_USE",
                "BARRIER_OPEN",
                "BARRIER_CODE_USE",
                "BARRIER_EVENT_USE",
                "BARRIER_CAMERA_USE",
                "BARRIER_CAMERA_ARCHIVE",
                "FR_USE",
                "TELEMETRY_USE",
                "CAMERA_USE",
                "CAMERA_ARCHIVE",
                "INTERCOM_CMS_PHONES_USE",
                "CAMERA_EVENT_USE"
              ]
            }
          },
          {
            "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": [
          "privilege(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/privilege/count": {
      "get": {
        "summary": "Метод получения количества привилегий.\nМетод доступен для: admin, master, service, ltp_first, application(subscription:read или subscription:edit)",
        "operationId": "PrivilegeService_GetPrivilegeCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPrivilegeCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPrivilegeCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetPrivilegeCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.flatNumbers",
            "description": "Номера квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.types",
            "description": "По типам привилегий\n\n - TYPE_UNKNOWN: Значение не указано\n - INTERCOM_USE: Умный домофон.\nБазовые функции.\nПраво доступа к разделу с домофонами и калиткаи.\nДействие.\nЗакрывает услуги: get_devices_intercom\n - INTERCOM_OPEN: Умный домофон.\nБазовые функции.\nПраво использовать функционал открытия двери домофона и калитки.\nДействие.\nЗакрывает услуги: post_devices_open_intercom\n - INTERCOM_CODE_USE: Умный домофон.\nКоды.\nПраво использовать функционал кодов домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_codes_intercom, post_devices_codes_intercom, delete_devices_codes_intercom\n - INTERCOM_RFID_USE: Умный домофон.\nКлючи.\nПраво использовать функционал физических ключей домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_rfids_intercom, post_devices_rfids_barrier, delete_devices_rfids_barrier\n - INTERCOM_EVENT_USE: Умный домофон.\nСобытия.\nПраво использовать функционал журнала событий домофонов и калиток.\nДействие.\nЗакрывает услуги: get_events_intercom\n - INTERCOM_CAMERA_USE: Умный домофон.\nКамеры.\nПраво использовать функционал просмотра камер и лайв видео с домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_camera_intercom\n - INTERCOM_CAMERA_ARCHIVE: Умный домофон.\nКамеры.\nПраво использовать функционал архива видео с камер домофонов и калиток.\nДействие.\nЗакрывает услуги: get_video_archive_intercom\n - INTERCOM_CALLREDIRECT_APP: Умный домофон.\nПереадресация.\nПраво перенаправления входящих вызова от домофона в приложения, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_mobile_app_behavior\n - INTERCOM_CALLREDIRECT_PSTN: Умный домофон.\nПереадресация.\nПраво перенаправление входящих вызовов от домофона на номера ТФОП, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_pstn_behavior\n - INTERCOM_CALLREDIRECT_SIP: Умный домофон.\nПереадресация.\nПраво перенаправление входящих вызовов от домофона на номера SIP, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_sip_behavior\n - BARRIER_USE: Умный шлагбаум.\nБазовые функции.\nПраво доступа к разделу шлагбаумов.\nДействие.\nЗакрывает услуги: get_devices_barrier\n - BARRIER_OPEN: Умный шлагбаум.\nБазовые функции.\nПраво использовать функционала поднятия стрелы шлагбаума.\nДействие.\nЗакрывает услуги: post_devices_open_barrier\n - BARRIER_CODE_USE: Умный шлагбаум.\nКоды.\nПраво использовать функционал открытия шлагбаума по звонку на короткий номер.\nДействие.\nЗакрывает услуги: get_devices_codes_barrier, post_devices_codes_barrier, delete_devices_codes_barrier\n - BARRIER_EVENT_USE: Умный шлагбаум.\nСобытия.\nПраво использовать функционал журнала событий шлагбаума.\nДействие.\nЗакрывает услуги: get_events_barrier\n - BARRIER_CAMERA_USE: Умный шлагбаум.\nКамеры.\nПраво использовать функционал просмотра камер и лайв видео с шлагбаумов.\nДействие.\nЗакрывает услуги: get_devices_camera_barrier\n - BARRIER_CAMERA_ARCHIVE: Умный шлагбаум.\nКамеры.\nПраво использовать функционал архива видео с камер, направленных на шлагбаум.\nДействие.\nЗакрывает услуги: get_video_archive_barrier\n - FR_USE: Распознавание лица.\nФото.\nПраво доступа к разделу распознавания лиц.\nДействие.\nЗакрывает услуги: get_photo_fr_intercom, fr_intercom_access_behavior, post_photo_fr_intercom, delete_photo_fr_intercom\n - TELEMETRY_USE: Телеметрия.\nБазовые функции.\nПраво доступа к разделу показаний приборов учёта.\nДействие.\nЗакрывает услуги: get_telemetry_rooms_layout\n - CAMERA_USE: Камеры.\nБазовые функции.\nПраво доступа к разделу камер и лайв видео с них.\nДействие.\nЗакрывает услуги: get_devices_camera, get_events_camera, get_devices_camera_access_control_panel, get_devices_camera_barrier, get_devices_camera_intercom\n - CAMERA_ARCHIVE: Камеры.\nБазовые функции.\nПраво использовать функционал архива видео с камер видеонаблюдения.\nДействие.\nЗакрывает услуги: get_video_archive, get_video_archive_access_control_panel\n - INTERCOM_CMS_PHONES_USE: Умный домофон.\nПереадресация.\nПраво приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_to_cms_phones_behavior\n - CAMERA_EVENT_USE: Умный домофон.\nПереадресация.\nПраво приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.\nПоведение.\nЗакрывает услуги: get_events_camera",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "INTERCOM_USE",
                  "INTERCOM_OPEN",
                  "INTERCOM_CODE_USE",
                  "INTERCOM_RFID_USE",
                  "INTERCOM_EVENT_USE",
                  "INTERCOM_CAMERA_USE",
                  "INTERCOM_CAMERA_ARCHIVE",
                  "INTERCOM_CALLREDIRECT_APP",
                  "INTERCOM_CALLREDIRECT_PSTN",
                  "INTERCOM_CALLREDIRECT_SIP",
                  "BARRIER_USE",
                  "BARRIER_OPEN",
                  "BARRIER_CODE_USE",
                  "BARRIER_EVENT_USE",
                  "BARRIER_CAMERA_USE",
                  "BARRIER_CAMERA_ARCHIVE",
                  "FR_USE",
                  "TELEMETRY_USE",
                  "CAMERA_USE",
                  "CAMERA_ARCHIVE",
                  "INTERCOM_CMS_PHONES_USE",
                  "CAMERA_EVENT_USE"
                ]
              }
            }
          },
          {
            "name": "filter.stateTypes",
            "description": "По состояниям привилегий\n\n - STATE_TYPE_UNKNOWN: Значение не указано\n - CAN_BE_PAID: Услуга доступная для подключения на доме пользователя, но не активна.\nУслуга есть в доступных КВ на ОРПОН, но её нет у пользователя\n - NOT_PAID: Услуга не оплачена и не активна.\nУслуга есть в подписке в статусе: BLOCKED\n - TURNS_OFF: Услуга отключается, но ещё активна.\nУслуга есть в подписке в статусе: SCHEDULED_CANCELED\n - PROMO: Услуга в промо-периоде и активна.\nУслуга есть в подписке в статусе: SETUP.\nОбычно так создают промоподписки\n - PAID: Услуга оплачена и активна.\nУслуга есть в подписке в статусе: ACTIVE.\nЛибо услуга есть в подписке с неблокируемой услугой",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CAN_BE_PAID",
                  "NOT_PAID",
                  "TURNS_OFF",
                  "PROMO",
                  "PAID"
                ]
              }
            }
          },
          {
            "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": [
          "privilege(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/privilege/list": {
      "get": {
        "summary": "Метод получения привилегий.\nМетод доступен для: admin, master, service, ltp_first, application(subscription:read или subscription:edit)",
        "operationId": "PrivilegeService_GetPrivilegeList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetPrivilegeListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetPrivilegeListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.flatNumbers",
            "description": "Номера квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.types",
            "description": "По типам привилегий\n\n - TYPE_UNKNOWN: Значение не указано\n - INTERCOM_USE: Умный домофон.\nБазовые функции.\nПраво доступа к разделу с домофонами и калиткаи.\nДействие.\nЗакрывает услуги: get_devices_intercom\n - INTERCOM_OPEN: Умный домофон.\nБазовые функции.\nПраво использовать функционал открытия двери домофона и калитки.\nДействие.\nЗакрывает услуги: post_devices_open_intercom\n - INTERCOM_CODE_USE: Умный домофон.\nКоды.\nПраво использовать функционал кодов домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_codes_intercom, post_devices_codes_intercom, delete_devices_codes_intercom\n - INTERCOM_RFID_USE: Умный домофон.\nКлючи.\nПраво использовать функционал физических ключей домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_rfids_intercom, post_devices_rfids_barrier, delete_devices_rfids_barrier\n - INTERCOM_EVENT_USE: Умный домофон.\nСобытия.\nПраво использовать функционал журнала событий домофонов и калиток.\nДействие.\nЗакрывает услуги: get_events_intercom\n - INTERCOM_CAMERA_USE: Умный домофон.\nКамеры.\nПраво использовать функционал просмотра камер и лайв видео с домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_camera_intercom\n - INTERCOM_CAMERA_ARCHIVE: Умный домофон.\nКамеры.\nПраво использовать функционал архива видео с камер домофонов и калиток.\nДействие.\nЗакрывает услуги: get_video_archive_intercom\n - INTERCOM_CALLREDIRECT_APP: Умный домофон.\nПереадресация.\nПраво перенаправления входящих вызова от домофона в приложения, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_mobile_app_behavior\n - INTERCOM_CALLREDIRECT_PSTN: Умный домофон.\nПереадресация.\nПраво перенаправление входящих вызовов от домофона на номера ТФОП, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_pstn_behavior\n - INTERCOM_CALLREDIRECT_SIP: Умный домофон.\nПереадресация.\nПраво перенаправление входящих вызовов от домофона на номера SIP, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_sip_behavior\n - BARRIER_USE: Умный шлагбаум.\nБазовые функции.\nПраво доступа к разделу шлагбаумов.\nДействие.\nЗакрывает услуги: get_devices_barrier\n - BARRIER_OPEN: Умный шлагбаум.\nБазовые функции.\nПраво использовать функционала поднятия стрелы шлагбаума.\nДействие.\nЗакрывает услуги: post_devices_open_barrier\n - BARRIER_CODE_USE: Умный шлагбаум.\nКоды.\nПраво использовать функционал открытия шлагбаума по звонку на короткий номер.\nДействие.\nЗакрывает услуги: get_devices_codes_barrier, post_devices_codes_barrier, delete_devices_codes_barrier\n - BARRIER_EVENT_USE: Умный шлагбаум.\nСобытия.\nПраво использовать функционал журнала событий шлагбаума.\nДействие.\nЗакрывает услуги: get_events_barrier\n - BARRIER_CAMERA_USE: Умный шлагбаум.\nКамеры.\nПраво использовать функционал просмотра камер и лайв видео с шлагбаумов.\nДействие.\nЗакрывает услуги: get_devices_camera_barrier\n - BARRIER_CAMERA_ARCHIVE: Умный шлагбаум.\nКамеры.\nПраво использовать функционал архива видео с камер, направленных на шлагбаум.\nДействие.\nЗакрывает услуги: get_video_archive_barrier\n - FR_USE: Распознавание лица.\nФото.\nПраво доступа к разделу распознавания лиц.\nДействие.\nЗакрывает услуги: get_photo_fr_intercom, fr_intercom_access_behavior, post_photo_fr_intercom, delete_photo_fr_intercom\n - TELEMETRY_USE: Телеметрия.\nБазовые функции.\nПраво доступа к разделу показаний приборов учёта.\nДействие.\nЗакрывает услуги: get_telemetry_rooms_layout\n - CAMERA_USE: Камеры.\nБазовые функции.\nПраво доступа к разделу камер и лайв видео с них.\nДействие.\nЗакрывает услуги: get_devices_camera, get_events_camera, get_devices_camera_access_control_panel, get_devices_camera_barrier, get_devices_camera_intercom\n - CAMERA_ARCHIVE: Камеры.\nБазовые функции.\nПраво использовать функционал архива видео с камер видеонаблюдения.\nДействие.\nЗакрывает услуги: get_video_archive, get_video_archive_access_control_panel\n - INTERCOM_CMS_PHONES_USE: Умный домофон.\nПереадресация.\nПраво приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_to_cms_phones_behavior\n - CAMERA_EVENT_USE: Умный домофон.\nПереадресация.\nПраво приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.\nПоведение.\nЗакрывает услуги: get_events_camera",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "INTERCOM_USE",
                  "INTERCOM_OPEN",
                  "INTERCOM_CODE_USE",
                  "INTERCOM_RFID_USE",
                  "INTERCOM_EVENT_USE",
                  "INTERCOM_CAMERA_USE",
                  "INTERCOM_CAMERA_ARCHIVE",
                  "INTERCOM_CALLREDIRECT_APP",
                  "INTERCOM_CALLREDIRECT_PSTN",
                  "INTERCOM_CALLREDIRECT_SIP",
                  "BARRIER_USE",
                  "BARRIER_OPEN",
                  "BARRIER_CODE_USE",
                  "BARRIER_EVENT_USE",
                  "BARRIER_CAMERA_USE",
                  "BARRIER_CAMERA_ARCHIVE",
                  "FR_USE",
                  "TELEMETRY_USE",
                  "CAMERA_USE",
                  "CAMERA_ARCHIVE",
                  "INTERCOM_CMS_PHONES_USE",
                  "CAMERA_EVENT_USE"
                ]
              }
            }
          },
          {
            "name": "filter.stateTypes",
            "description": "По состояниям привилегий\n\n - STATE_TYPE_UNKNOWN: Значение не указано\n - CAN_BE_PAID: Услуга доступная для подключения на доме пользователя, но не активна.\nУслуга есть в доступных КВ на ОРПОН, но её нет у пользователя\n - NOT_PAID: Услуга не оплачена и не активна.\nУслуга есть в подписке в статусе: BLOCKED\n - TURNS_OFF: Услуга отключается, но ещё активна.\nУслуга есть в подписке в статусе: SCHEDULED_CANCELED\n - PROMO: Услуга в промо-периоде и активна.\nУслуга есть в подписке в статусе: SETUP.\nОбычно так создают промоподписки\n - PAID: Услуга оплачена и активна.\nУслуга есть в подписке в статусе: ACTIVE.\nЛибо услуга есть в подписке с неблокируемой услугой",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CAN_BE_PAID",
                  "NOT_PAID",
                  "TURNS_OFF",
                  "PROMO",
                  "PAID"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: KEY\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - KEY: По уникальному ключу: orpon+flat_number+type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "KEY"
              ]
            }
          },
          {
            "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": [
          "privilege(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/service/kind/list": {
      "get": {
        "summary": "Метод получения справочника видов услуг.\nМетод доступен для: admin, service",
        "operationId": "ServiceService_GetServiceKindList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetServiceKindListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetServiceKindListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "service(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription: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, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/subscription/api/v1/service/privilege/count": {
      "get": {
        "summary": "Метод получения количества услуг.\nВернёт все услуги на квартире и недоступные по адресу как неактивные.\nМетод доступен для: admin, service",
        "operationId": "ServiceService_GetServicePrivilegeCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetServicePrivilegeCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.orpons",
            "description": "По ОРПОН",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.flatNumbers",
            "description": "По номеру квартиры",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_FLAT_NUMBER\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_FLAT_NUMBER: По ОРПОНу, затем по номеру квартиры",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ORPON_THEN_FLAT_NUMBER"
              ]
            }
          },
          {
            "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Если значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\n# Диапазон: 0..2147483647",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "service(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/service/privilege/list": {
      "get": {
        "summary": "Метод получения списка услуг.\nВернёт все услуги на квартире и недоступные по адресу как неактивные.\nМетод доступен для: admin, service",
        "operationId": "ServiceService_GetServicePrivilegeList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetServicePrivilegeListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetServicePrivilegeListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.orpons",
            "description": "По ОРПОН",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.flatNumbers",
            "description": "По номеру квартиры",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_FLAT_NUMBER\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_FLAT_NUMBER: По ОРПОНу, затем по номеру квартиры",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ORPON_THEN_FLAT_NUMBER"
              ]
            }
          },
          {
            "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Если значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paging.offset",
            "description": "Сдвиг.\n# Диапазон: 0..2147483647",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "service(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/service/{orpon}/{flatNumber}/list": {
      "get": {
        "summary": "Метод получения услуг квартиры.\nВернёт все услуги на квартире и недоступные по адресу как неактивные.\nМетод доступен для: admin, master, service, application(subscription:read или subscription:edit)",
        "operationId": "ServiceService_GetServiceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetServiceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetServiceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "ОРПОН.\nИдентификатор дома",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "flatNumber",
            "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": [
          "service(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/subscription/count": {
      "get": {
        "summary": "Метод получения количества подписок.\nМетод доступен для: admin, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "SubscriptionService_GetSubscriptionCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSubscriptionCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSubscriptionCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSubscriptionCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.flatNumbers",
            "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": [
          "subscription(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/subscription/list": {
      "get": {
        "summary": "Метод получения списка подписок.\nМетод доступен для: admin, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "SubscriptionService_GetSubscriptionList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetSubscriptionListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetSubscriptionListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.flatNumbers",
            "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: По идентификатору",
            "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": [
          "subscription(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/api/v1/subscription/{id}": {
      "get": {
        "summary": "Метод получения подписки.\nМетод доступен для: admin, mrf, master, ltp_first, service, application(subscription:read или subscription:edit)",
        "operationId": "SubscriptionService_GetSubscription",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSubscriptionResponse"
                }
              }
            }
          },
          "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": [
          "subscription(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "subscription:read",
              "subscription:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/subscription/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, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "OfferDiscountRequirementType": {
        "type": "string",
        "enum": [
          "NO_CONDITIONS",
          "INTERNET_IS_PAID"
        ],
        "description": "- DISCOUNT_REQUIREMENT_TYPE_UNKNOWN: Значение не указано.\nЕсли указана цена по скидке, а условие не проставлено, скидка не отображается и не применяется\n - NO_CONDITIONS: Безусловная скидка\n - INTERNET_IS_PAID: ШПД интернет оплачен",
        "title": "Справочник условий на скидки"
      },
      "PlanIconType": {
        "type": "string",
        "enum": [
          "FAST",
          "FACE_REC",
          "SAFE"
        ],
        "description": "- ICON_TYPE_UNKNOWN: Значение не указано\n - FAST: Быстро\n - FACE_REC: Распознавание лиц\n - SAFE: Безопасно",
        "title": "Справочник типов иконок"
      },
      "PlanOptionDescription": {
        "type": "object",
        "properties": {
          "iconType": {
            "title": "Тип иконки",
            "allOf": [
              {
                "$ref": "#/components/schemas/PlanIconType"
              }
            ]
          },
          "title": {
            "type": "string",
            "title": "Название"
          },
          "summary": {
            "type": "string",
            "title": "Краткое описание"
          }
        },
        "title": "Описание опции",
        "required": [
          "title"
        ]
      },
      "PrivilegeStateType": {
        "type": "string",
        "enum": [
          "CAN_BE_PAID",
          "NOT_PAID",
          "TURNS_OFF",
          "PROMO",
          "PAID"
        ],
        "description": "- STATE_TYPE_UNKNOWN: Значение не указано\n - CAN_BE_PAID: Услуга доступная для подключения на доме пользователя, но не активна.\nУслуга есть в доступных КВ на ОРПОН, но её нет у пользователя\n - NOT_PAID: Услуга не оплачена и не активна.\nУслуга есть в подписке в статусе: BLOCKED\n - TURNS_OFF: Услуга отключается, но ещё активна.\nУслуга есть в подписке в статусе: SCHEDULED_CANCELED\n - PROMO: Услуга в промо-периоде и активна.\nУслуга есть в подписке в статусе: SETUP.\nОбычно так создают промоподписки\n - PAID: Услуга оплачена и активна.\nУслуга есть в подписке в статусе: ACTIVE.\nЛибо услуга есть в подписке с неблокируемой услугой",
        "title": "Типы состояний привилегий"
      },
      "SubscriptionBillingType": {
        "type": "string",
        "enum": [
          "ASR_MRF",
          "ASR_KEY",
          "ASR_MC"
        ],
        "description": "- BILLING_TYPE_UNKNOWN: Значение не указано\n - ASR_MRF: АСР МРФ.\nОбслуживание счетов и расчёты с клиентами происходят в АСР МРФ\n - ASR_KEY: АСР Ключ.\nОбслуживание счетов и расчёты с клиентами происходят внутри Ключа\n - ASR_MC: АСР УК.\nОбслуживание счетов и расчёты с клиентами происходят во внешнем АСР от управляющей компании",
        "title": "Типы биллинга подпискии"
      },
      "ValidationErrorCompanyIdsInvalid": {
        "type": "object",
        "title": "Причины:\n- Формат идентификатора компании некорректен;\n- Идентификатора компании передан некорректно, к примеру, значение <= 1"
      },
      "ValidationErrorTextInvalid": {
        "type": "object",
        "title": "Причины:\n- Длина текста < 3 символов и >= 64"
      },
      "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": "Ошибка транспортного слоя"
      },
      "v1GetOfferCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего коммерческих возможностей"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetOfferCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества коммерческих возможностей"
      },
      "v1GetOfferCountResponseError": {
        "type": "object",
        "properties": {
          "offerFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества коммерческих возможностей"
      },
      "v1GetOfferListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Коммерческая возможность",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Offer"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetOfferListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения коммерческих возможностей"
      },
      "v1GetOfferListResponseError": {
        "type": "object",
        "properties": {
          "offerFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferFilterValidationError"
              }
            ]
          },
          "offerPagingValidation": {
            "title": "Ошибка пагинации по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferPagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения коммерческих возможностей"
      },
      "v1GetOfferResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Коммерческая возможность",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Offer"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения коммерческой возможности"
      },
      "v1GetPlanCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего технологических планов"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetPlanCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества технологических планов"
      },
      "v1GetPlanCountResponseError": {
        "type": "object",
        "properties": {
          "planFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества технологических планов"
      },
      "v1GetPlanListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Технологический план",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Plan"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetPlanListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения технологических планов"
      },
      "v1GetPlanListResponseError": {
        "type": "object",
        "properties": {
          "planFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanFilterValidationError"
              }
            ]
          },
          "planPagingValidation": {
            "title": "Ошибка пагинации по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanPagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения технологических планов"
      },
      "v1GetPlanResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Технологический план",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Plan"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения технологического плана"
      },
      "v1GetPrivilegeCheckResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "boolean",
            "title": "Доступна ли привилегия на квартире.\nВернётся true если статусы:\n- PROMO;\n- PAID;\n- TURNS_OFF.\nВернётся false если статусы:\n- NOT_PAID;\n- CAN_BE_PAID;\n- STATE_TYPE_UNKNOWN;\n- Не найден"
          }
        },
        "title": "Результат запроса метода проверки предоставленной привилегии"
      },
      "v1GetPrivilegeCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего привилегий"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetPrivilegeCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества привилегий"
      },
      "v1GetPrivilegeCountResponseError": {
        "type": "object",
        "properties": {
          "privilegeFilterValidation": {
            "title": "Ошибка фильтрации по страницам по привилегиям",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegeFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества привилегий"
      },
      "v1GetPrivilegeListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Предоставленная привилегия",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Privilege"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetPrivilegeListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения привилегий"
      },
      "v1GetPrivilegeListResponseError": {
        "type": "object",
        "properties": {
          "privilegeFilterValidation": {
            "title": "Ошибка фильтрации по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegeFilterValidationError"
              }
            ]
          },
          "privilegePagingValidation": {
            "title": "Ошибка пагинации по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegePagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения привилегий"
      },
      "v1GetServiceKindListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Элемент справочника услуг",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ServiceKind"
              }
            ]
          }
        },
        "title": "Результат запроса получения справочника видов услуг"
      },
      "v1GetServiceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Услуга",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Sevice"
              }
            ]
          }
        },
        "title": "Результат запроса получения списка услуг квартиры"
      },
      "v1GetServicePrivilegeCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Результат запроса получения количества услуг"
      },
      "v1GetServicePrivilegeListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Услуга",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Service"
              }
            ]
          }
        },
        "title": "Результат запроса получения списка услуг"
      },
      "v1GetSubscriptionCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего подписок"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetSubscriptionCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества подписок"
      },
      "v1GetSubscriptionCountResponseError": {
        "type": "object",
        "properties": {
          "subscriptionFilterValidation": {
            "title": "Ошибка фильтрации подписок",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionFilterValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества подписок"
      },
      "v1GetSubscriptionListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Подписка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Subscription"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetSubscriptionListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка подписок"
      },
      "v1GetSubscriptionListResponseError": {
        "type": "object",
        "properties": {
          "subscriptionFilterValidation": {
            "title": "Ошибка фильтрации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionFilterValidationError"
              }
            ]
          },
          "subscriptionPagingValidation": {
            "title": "Ошибка пагинации  по страницам",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionPagingValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка подписки"
      },
      "v1GetSubscriptionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Подписка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Subscription"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения подписки"
      },
      "v1GetSystemStatusResponse": {
        "type": "object",
        "title": "Ответ на запрос проверки доступности сервиса"
      },
      "v1Offer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор",
            "readOnly": true
          },
          "type": {
            "title": "Тип коммерческой возможности",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferType"
              }
            ]
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН.\nИдентификатор дома"
          },
          "companyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании"
          },
          "planId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор технологического плана"
          },
          "isEnableAutoSubscribe": {
            "type": "boolean",
            "title": "Подключать ли автоматическую подписку"
          },
          "statusType": {
            "title": "Тип статуса заказа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferStatusType"
              }
            ]
          },
          "price": {
            "type": "number",
            "format": "double",
            "title": "Цена"
          },
          "isDigitalWay": {
            "type": "boolean",
            "title": "Признак принадлежности к цифровому пути"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания записи.\nЗаполняется сервером",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
            "readOnly": true
          },
          "offerUrl": {
            "type": "string",
            "title": "Адрес размещения офферты.\nПолный url до файла"
          },
          "plan": {
            "title": "Снапшот состояния технологического плана на момент создания предложения.\nВ данный момент это ссылка в базе на запись, в будущем это будет снапшот",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Plan"
              }
            ]
          },
          "discountPrice": {
            "type": "number",
            "format": "double",
            "title": "Цена по скидке"
          },
          "discountRequirementTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferDiscountRequirementType"
            },
            "title": "Условия на скидку.\nЕсли условий много то для срабатывания должны выполнять все условия"
          }
        },
        "title": "Коммерческая возможность(КВ)",
        "required": [
          "type",
          "orpon",
          "planId",
          "statusType"
        ]
      },
      "v1OfferFilter": {
        "type": "object",
        "properties": {
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1OfferType"
            },
            "title": "По типам"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "companyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам компаний"
          }
        },
        "title": "Фильтр по коммерческим возможностям"
      },
      "v1OfferFilterValidationError": {
        "type": "object",
        "properties": {
          "orpons": {
            "title": "Формат ОРПОН некорректен",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferFilterValidationErrorOrponsInvalid"
              }
            ]
          },
          "companyIds": {
            "title": "Формат идентификатора компании некорректен",
            "allOf": [
              {
                "$ref": "#/components/schemas/ValidationErrorCompanyIdsInvalid"
              }
            ]
          }
        },
        "title": "Ошибки валидации фильтра по коммерческим возможностям.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1OfferFilterValidationErrorOrponsInvalid": {
        "type": "object",
        "title": "- Формат ОРПОН некорректен;\n- ОРПОН передан некорректно, к примеру, значение <= 1"
      },
      "v1OfferPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация по коммерческим возможностям"
      },
      "v1OfferPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1OfferPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "PRICE"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - PRICE: По цене",
        "title": "Справочник типов значений сортировки"
      },
      "v1OfferPagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferPagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1OfferPagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по коммерческим возможностям.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1OfferPagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1OfferPagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1OfferStatusType": {
        "type": "string",
        "enum": [
          "ACTIVE",
          "BLOCKED"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - ACTIVE: Активно.\nДоступно\n - BLOCKED: Заблокировано.\nПриостановлено",
        "title": "Типы статусов коммерческих возможностей"
      },
      "v1OfferType": {
        "type": "string",
        "enum": [
          "COMPANY",
          "RTK",
          "SHARED"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - COMPANY: УК.\nУслуги, которые назначаются на управляющие компанию\n - RTK: Ростелеком.\nУслуги, которые Ростелеком подключает напрямую физическим лицам\n - SHARED: Общая.\nУслуги, которые видят клиенты обоих типов",
        "title": "Типы коммерческих возможностей"
      },
      "v1Plan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "title": "Название"
          },
          "description": {
            "type": "string",
            "title": "Описание"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания записи.\nЗаполняется сервером",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
            "readOnly": true
          },
          "parentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Идентификаторы родительских технологических планов(ТП)"
          },
          "rfIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Идентификаторы регионов, в которых доступен технологический план(ТП)"
          },
          "summary": {
            "type": "string",
            "title": "Краткое описание"
          },
          "iconType": {
            "title": "Тип иконки",
            "allOf": [
              {
                "$ref": "#/components/schemas/PlanIconType"
              }
            ]
          },
          "optionDescriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlanOptionDescription"
            },
            "title": "Описание опций"
          },
          "privilegeTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1PrivilegeType"
            },
            "title": "Привилегии.\nМассив услуг доступных по технологическому плану"
          }
        },
        "title": "Технологический план(ТП)",
        "required": [
          "title"
        ]
      },
      "v1PlanFilter": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "title": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Поиск производится по полям:\n# - Название;\n# - Описание;\n# - Краткое описание"
          },
          "rfIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам регионов"
          }
        },
        "title": "Фильтр по технологическим планам"
      },
      "v1PlanFilterValidationError": {
        "type": "object",
        "properties": {
          "text": {
            "title": "Текст передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/ValidationErrorTextInvalid"
              }
            ]
          }
        },
        "title": "Ошибки валидации фильтра по технологическим планам.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1PlanPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация по технологическим планам"
      },
      "v1PlanPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1PlanPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору",
        "title": "Справочник типов значений сортировки"
      },
      "v1PlanPagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanPagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PlanPagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по технологическим планам.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1PlanPagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1PlanPagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1Privilege": {
        "type": "object",
        "properties": {
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН.\nИдентификатор дома.\nУникальный ключ: поля в порядке 1,2,3"
          },
          "flatNumber": {
            "type": "string",
            "title": "Номер квартиры"
          },
          "type": {
            "title": "Тип привилегии",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegeType"
              }
            ]
          },
          "stateType": {
            "title": "Состояние привилегии",
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivilegeStateType"
              }
            ]
          }
        },
        "title": "Привилегия",
        "required": [
          "orpon",
          "flatNumber",
          "type",
          "stateType"
        ]
      },
      "v1PrivilegeFilter": {
        "type": "object",
        "properties": {
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "flatNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Номера квартир"
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1PrivilegeType"
            },
            "title": "По типам привилегий"
          },
          "stateTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrivilegeStateType"
            },
            "title": "По состояниям привилегий"
          }
        },
        "title": "Фильтр по привилегиям"
      },
      "v1PrivilegeFilterValidationError": {
        "type": "object",
        "properties": {
          "orpons": {
            "title": "Формат ОРПОН некорректен",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegeFilterValidationErrorOrponsInvalid"
              }
            ]
          },
          "flatNumbers": {
            "title": "Формат квартиры некорректен",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegeFilterValidationErrorFlatNumbersInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации фильтра по привилегиям.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1PrivilegeFilterValidationErrorFlatNumbersInvalid": {
        "type": "object",
        "title": "Причины:\n- Формат квартиры некорректен (например, длина номера квартира более 4 знаков);\n- Номер квартиры содержит буквы"
      },
      "v1PrivilegeFilterValidationErrorOrponsInvalid": {
        "type": "object",
        "title": "Причины:\n- Формат ОРПОН некорректен;\n- Передано отрицательное значение"
      },
      "v1PrivilegePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: KEY",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация по привилегиям"
      },
      "v1PrivilegePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1PrivilegePagingOrderByType": {
        "type": "string",
        "enum": [
          "KEY"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - KEY: По уникальному ключу: orpon+flat_number+type",
        "title": "Справочник типов значений сортировки"
      },
      "v1PrivilegePagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegePagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PrivilegePagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по привилегиям.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1PrivilegePagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1PrivilegePagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1PrivilegeType": {
        "type": "string",
        "enum": [
          "INTERCOM_USE",
          "INTERCOM_OPEN",
          "INTERCOM_CODE_USE",
          "INTERCOM_RFID_USE",
          "INTERCOM_EVENT_USE",
          "INTERCOM_CAMERA_USE",
          "INTERCOM_CAMERA_ARCHIVE",
          "INTERCOM_CALLREDIRECT_APP",
          "INTERCOM_CALLREDIRECT_PSTN",
          "INTERCOM_CALLREDIRECT_SIP",
          "BARRIER_USE",
          "BARRIER_OPEN",
          "BARRIER_CODE_USE",
          "BARRIER_EVENT_USE",
          "BARRIER_CAMERA_USE",
          "BARRIER_CAMERA_ARCHIVE",
          "FR_USE",
          "TELEMETRY_USE",
          "CAMERA_USE",
          "CAMERA_ARCHIVE",
          "INTERCOM_CMS_PHONES_USE",
          "CAMERA_EVENT_USE"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - INTERCOM_USE: Умный домофон.\nБазовые функции.\nПраво доступа к разделу с домофонами и калиткаи.\nДействие.\nЗакрывает услуги: get_devices_intercom\n - INTERCOM_OPEN: Умный домофон.\nБазовые функции.\nПраво использовать функционал открытия двери домофона и калитки.\nДействие.\nЗакрывает услуги: post_devices_open_intercom\n - INTERCOM_CODE_USE: Умный домофон.\nКоды.\nПраво использовать функционал кодов домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_codes_intercom, post_devices_codes_intercom, delete_devices_codes_intercom\n - INTERCOM_RFID_USE: Умный домофон.\nКлючи.\nПраво использовать функционал физических ключей домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_rfids_intercom, post_devices_rfids_barrier, delete_devices_rfids_barrier\n - INTERCOM_EVENT_USE: Умный домофон.\nСобытия.\nПраво использовать функционал журнала событий домофонов и калиток.\nДействие.\nЗакрывает услуги: get_events_intercom\n - INTERCOM_CAMERA_USE: Умный домофон.\nКамеры.\nПраво использовать функционал просмотра камер и лайв видео с домофонов и калиток.\nДействие.\nЗакрывает услуги: get_devices_camera_intercom\n - INTERCOM_CAMERA_ARCHIVE: Умный домофон.\nКамеры.\nПраво использовать функционал архива видео с камер домофонов и калиток.\nДействие.\nЗакрывает услуги: get_video_archive_intercom\n - INTERCOM_CALLREDIRECT_APP: Умный домофон.\nПереадресация.\nПраво перенаправления входящих вызова от домофона в приложения, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_mobile_app_behavior\n - INTERCOM_CALLREDIRECT_PSTN: Умный домофон.\nПереадресация.\nПраво перенаправление входящих вызовов от домофона на номера ТФОП, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_pstn_behavior\n - INTERCOM_CALLREDIRECT_SIP: Умный домофон.\nПереадресация.\nПраво перенаправление входящих вызовов от домофона на номера SIP, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_redirect_to_sip_behavior\n - BARRIER_USE: Умный шлагбаум.\nБазовые функции.\nПраво доступа к разделу шлагбаумов.\nДействие.\nЗакрывает услуги: get_devices_barrier\n - BARRIER_OPEN: Умный шлагбаум.\nБазовые функции.\nПраво использовать функционала поднятия стрелы шлагбаума.\nДействие.\nЗакрывает услуги: post_devices_open_barrier\n - BARRIER_CODE_USE: Умный шлагбаум.\nКоды.\nПраво использовать функционал открытия шлагбаума по звонку на короткий номер.\nДействие.\nЗакрывает услуги: get_devices_codes_barrier, post_devices_codes_barrier, delete_devices_codes_barrier\n - BARRIER_EVENT_USE: Умный шлагбаум.\nСобытия.\nПраво использовать функционал журнала событий шлагбаума.\nДействие.\nЗакрывает услуги: get_events_barrier\n - BARRIER_CAMERA_USE: Умный шлагбаум.\nКамеры.\nПраво использовать функционал просмотра камер и лайв видео с шлагбаумов.\nДействие.\nЗакрывает услуги: get_devices_camera_barrier\n - BARRIER_CAMERA_ARCHIVE: Умный шлагбаум.\nКамеры.\nПраво использовать функционал архива видео с камер, направленных на шлагбаум.\nДействие.\nЗакрывает услуги: get_video_archive_barrier\n - FR_USE: Распознавание лица.\nФото.\nПраво доступа к разделу распознавания лиц.\nДействие.\nЗакрывает услуги: get_photo_fr_intercom, fr_intercom_access_behavior, post_photo_fr_intercom, delete_photo_fr_intercom\n - TELEMETRY_USE: Телеметрия.\nБазовые функции.\nПраво доступа к разделу показаний приборов учёта.\nДействие.\nЗакрывает услуги: get_telemetry_rooms_layout\n - CAMERA_USE: Камеры.\nБазовые функции.\nПраво доступа к разделу камер и лайв видео с них.\nДействие.\nЗакрывает услуги: get_devices_camera, get_events_camera, get_devices_camera_access_control_panel, get_devices_camera_barrier, get_devices_camera_intercom\n - CAMERA_ARCHIVE: Камеры.\nБазовые функции.\nПраво использовать функционал архива видео с камер видеонаблюдения.\nДействие.\nЗакрывает услуги: get_video_archive, get_video_archive_access_control_panel\n - INTERCOM_CMS_PHONES_USE: Умный домофон.\nПереадресация.\nПраво приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.\nПоведение.\nЗакрывает услуги: devices_call_to_cms_phones_behavior\n - CAMERA_EVENT_USE: Умный домофон.\nПереадресация.\nПраво приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.\nПоведение.\nЗакрывает услуги: get_events_camera",
        "title": "Типы привилегий"
      },
      "v1Service": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Название услуги на английском"
          },
          "isActive": {
            "type": "boolean",
            "title": "Доступна ли услуга на квартире.\nВернётся true если статусы привилегии:\n- PROMO;\n- PAID;\n- TURNS_OFF.\nВернётся false если статусы привилегии:\n- NOT_PAID;\n- CAN_BE_PAID;\n- STATE_TYPE_UNKNOWN;\n- Не найден (нет на кваритре, но есть в справочнике привилегий)"
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН дома"
          },
          "flatNumber": {
            "type": "string",
            "title": "Номер квартиры"
          }
        },
        "title": "Услуга"
      },
      "v1ServiceKind": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор услуги"
          },
          "category": {
            "type": "string",
            "title": "Категория услуги.\nАналогично V1ServiceDto.type"
          },
          "name": {
            "type": "string",
            "title": "Название услуги на английском"
          },
          "title": {
            "type": "string",
            "title": "Название услуги"
          },
          "description": {
            "type": "string",
            "title": "Описание услуги"
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор родительской услуги"
          }
        },
        "title": "Элемент справочника видов услуг"
      },
      "v1ServicePrivilegeFilter": {
        "type": "object",
        "properties": {
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОН"
          },
          "flatNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номеру квартиры"
          }
        },
        "title": "Фильтр услуг"
      },
      "v1ServicePrivilegePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_FLAT_NUMBER",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ServicePrivilegePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ServicePrivilegePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1ServicePrivilegePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1ServicePrivilegePagingOrderByType": {
        "type": "string",
        "enum": [
          "ORPON_THEN_FLAT_NUMBER"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_FLAT_NUMBER: По ОРПОНу, затем по номеру квартиры",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1Sevice": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "Название услуги на английском"
          },
          "isActive": {
            "type": "boolean",
            "title": "Доступна ли услуга на квартире.\nВернётся true если статусы привилегии:\n- PROMO;\n- PAID;\n- TURNS_OFF.\nВернётся false если статусы привилегии:\n- NOT_PAID;\n- CAN_BE_PAID;\n- STATE_TYPE_UNKNOWN;\n- Не найден (нет на кваритре, но есть в справочнике привилегий)"
          }
        },
        "title": "Услуга.\nTODO: deprecated"
      },
      "v1Subscription": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор.\nМожет быть явно задан при создании.\nТип: Guid"
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН.\nИдентификатор дома"
          },
          "flatNumber": {
            "type": "string",
            "title": "Номер квартиры"
          },
          "offerId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор коммерческой возможности(КВ).\nЗаполняется сервером на основе идентификатора из технологического плана(ТП)",
            "readOnly": true
          },
          "statusType": {
            "title": "Cтатус подписки.\nПри создании может быть: SETUP, ACTIVE",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionStatusType"
              }
            ]
          },
          "previousStatusType": {
            "title": "Предыдущий статус подписки.\nВ справочник входят только финальные статусы.\nЗаполняется сервером при изменении статусов",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionStatusType"
              }
            ]
          },
          "price": {
            "type": "number",
            "format": "double",
            "title": "Цена"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания записи.\nЗаполняется сервером",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта",
            "readOnly": true
          },
          "isEnableAutoSubscribe": {
            "type": "boolean",
            "title": "Признак для определения автоподписок.\nРедактировать флаг запрещено.\nПроставляется сервером в true при создании через задачу на автоподписку",
            "readOnly": true
          },
          "billingType": {
            "title": "Тип биллинга",
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionBillingType"
              }
            ]
          },
          "expiredAt": {
            "type": "string",
            "format": "date-time",
            "title": "Срок действия.\nПроставляется при создании"
          },
          "parentId": {
            "type": "string",
            "title": "Идентификатор подписки, в зависимости от которой подключена данная.\nЗаполняется в подписках на опции.\nТип: Guid"
          },
          "account": {
            "type": "string",
            "format": "int64",
            "title": "Аккаунт"
          },
          "offer": {
            "title": "Снапшот состояния коммерческой возможности на момент создания подписки.\nВ данный момент это ссылка в базе на запись, в будущем это будет снапшот",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Offer"
              }
            ]
          },
          "discountPrice": {
            "type": "number",
            "format": "double",
            "title": "Цена по скидки.\nЗаполнена если оплата подписки прошла по скидке, иначе очищается"
          }
        },
        "title": "Подписка",
        "required": [
          "orpon",
          "flatNumber",
          "statusType"
        ]
      },
      "v1SubscriptionFilter": {
        "type": "object",
        "properties": {
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "flatNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартир"
          }
        },
        "title": "Фильтр подписок"
      },
      "v1SubscriptionFilterValidationError": {
        "type": "object",
        "properties": {
          "orpons": {
            "title": "Формат ОРПОН некорректен",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionFilterValidationErrorOrponsInvalid"
              }
            ]
          },
          "flatNumbers": {
            "title": "Формат квартиры некорректен",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionFilterValidationErrorFlatNumbersInvalid"
              }
            ]
          }
        },
        "title": "Ошибки валидации фильтра по подпискам.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1SubscriptionFilterValidationErrorFlatNumbersInvalid": {
        "type": "object",
        "title": "Причины:\n- Формат квартиры некорректен (например, длина номера квартира более 4 знаков или отрицательное значение)"
      },
      "v1SubscriptionFilterValidationErrorOrponsInvalid": {
        "type": "object",
        "title": "Причины:\n- Формат ОРПОН некорректен;\n- ОРПОН передан некорректно, к примеру, значение <= 1"
      },
      "v1SubscriptionPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация по подпискам"
      },
      "v1SubscriptionPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1SubscriptionPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору",
        "title": "Справочник типов значений сортировки"
      },
      "v1SubscriptionPagingValidationError": {
        "type": "object",
        "properties": {
          "limit": {
            "title": "Количество передано некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionPagingValidationErrorLimitInvalid"
              }
            ]
          },
          "offset": {
            "title": "Сдвиг передан некорректно",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1SubscriptionPagingValidationErrorOffsetInvalid"
              }
            ]
          }
        },
        "title": "Ошибка валидации постраничной пагинации по подпискам.\nЭти проверки выполняются до обращения в базу данных"
      },
      "v1SubscriptionPagingValidationErrorLimitInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение количества < 0 или > 100"
      },
      "v1SubscriptionPagingValidationErrorOffsetInvalid": {
        "type": "object",
        "title": "Причины:\n- Значение сдвига < 0"
      },
      "v1SubscriptionStatusType": {
        "type": "string",
        "enum": [
          "SETUP",
          "ACTIVE",
          "BLOCKED",
          "CANCELED",
          "SCHEDULED_CANCELED"
        ],
        "description": "- STATUS_TYPE_UNKNOWN: Значение не указано\n - SETUP: Настроена.\nПодписка переведена в статус настройки.\nЭто промо-период, либо монтажник проверяет работу оборудования.\nУслуги подписки не оплачены, но доступны для использования.\nФинальный статус\n - ACTIVE: Активна.\nПодписка активирована.\nС этого момента считаем что нужно считать денежки.\nУслуги подписки оплачены и доступны для использования.\nФинальный статус\n - BLOCKED: Заблокирована.\nПодписка фин. заблокирована.\nПодписка в фин. блокировке.\nУслуги подписки не оплачены и не доступны.\nФинальный статус\n - CANCELED: Отменена.\nПодписка отменена.\nПользователь отменил подписку.\nУслуги подписки больше не существуют и не доступны абоненту\n - SCHEDULED_CANCELED: Запланированная отмена.\nПользователь решил отказаться от услуги, но уже заплатил.\nПодписка запланирована к отмене, будет действовать до истечения срока действия в подписке.\nУслуги подписки оплачены и доступны для использования.\nФинальный статус",
        "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": {
              "subscription:edit": "Предоставляет полный доступ в сервис subscription",
              "subscription:read": "Предоставляет доступ на чтение данных из сервиса subscription"
            }
          }
        }
      }
    }
  },
  "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"
    }
  ]
}