{
  "openapi": "3.0.3",
  "info": {
    "title": "access_control",
    "version": "1.0.1775813760260",
    "description": "Сервис access_control",
    "license": {
      "name": "CC BY-NC-ND 4.0",
      "url": "https://gitlab.infra.rtkit.dev/openapi/key/raw/main/LICENCE.md"
    }
  },
  "tags": [
    {
      "name": "access_point(auth)",
      "description": "Методы access_point. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "building(auth)",
      "description": "Методы building. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "entrance(auth)",
      "description": "Методы entrance. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "flatgramm(auth)",
      "description": "Методы flatgramm. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "rfid(auth)",
      "description": "Методы rfid. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "room(auth)",
      "description": "Методы room. Требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "system(public)",
      "description": "Методы system. Не требуют авторизацию. Доступны из интернета"
    },
    {
      "name": "broadcast_alert(internal auth)",
      "description": "Внутренние методы. Требуют авторизацию. Доступны только во внутренней сети"
    }
  ],
  "paths": {
    "/access_control/api/v1/access_point": {
      "post": {
        "summary": "Метод сохранения точки доступа.\nПоддерживает создание и обновление.\nМетод доступен для: admin, service, bti",
        "operationId": "AccessPointService_PostAccessPoint",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostAccessPointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostAccessPointResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostAccessPointResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostAccessPointRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/count": {
      "get": {
        "summary": "Метод получения количества точек доступа.\nМетод доступен для: admin, service, bti.\nМетод доступен для: ApiKey",
        "operationId": "AccessPointService_GetAccessPointCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.text",
            "description": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование;\n# - Описание",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.directionTypes",
            "description": "По типам направления\n\n - DIRECTION_TYPE_UNKNOWN: Не указано\n - IN: Вход\n - OUT: Выход\n - REVERSE: В обоих направлениях",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "IN",
                  "OUT",
                  "REVERSE"
                ]
              }
            }
          },
          {
            "name": "filter.groupIds",
            "description": "По идентификаторам группы.\n# Тип: Guid",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.cameraUids",
            "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": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/group/count": {
      "get": {
        "summary": "Метод получения количества связей точек доступа и групп.\nМетод доступен для: admin, service, bti",
        "operationId": "AccessPointGroupService_GetAccessPointGroupCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointGroupCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointGroupCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointGroupCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.accessPointIds",
            "description": "По идентификаторам точки доступа.\n# Тип: Guid",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.groupIds",
            "description": "По идентификаторам группы.\n# Тип: Guid",
            "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": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/group/list": {
      "get": {
        "summary": "Метод получения списка связей точек доступа и групп.\nМетод доступен для: admin, service, bti",
        "operationId": "AccessPointGroupService_GetAccessPointGroupList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetAccessPointGroupListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetAccessPointGroupListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.accessPointIds",
            "description": "По идентификаторам точки доступа.\n# Тип: Guid",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.groupIds",
            "description": "По идентификаторам группы.\n# Тип: Guid",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: GROUP_ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - GROUP_ID: По идентификатору группы\n - ACCESS_POINT_ID: По идентификатору точки доступа\n - CREATED_AT: По дате создания",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "GROUP_ID",
                "ACCESS_POINT_ID",
                "CREATED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 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": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/list": {
      "get": {
        "summary": "Метод получения списка точек доступа.\nМетод доступен для: admin, service, bti.\nМетод доступен для: ApiKey",
        "operationId": "AccessPointService_GetAccessPointList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetAccessPointListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetAccessPointListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.text",
            "description": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование;\n# - Описание",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.directionTypes",
            "description": "По типам направления\n\n - DIRECTION_TYPE_UNKNOWN: Не указано\n - IN: Вход\n - OUT: Выход\n - REVERSE: В обоих направлениях",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "IN",
                  "OUT",
                  "REVERSE"
                ]
              }
            }
          },
          {
            "name": "filter.groupIds",
            "description": "По идентификаторам группы.\n# Тип: Guid",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.cameraUids",
            "description": "По идентификаторам камер",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - TITLE: По наименованию\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания\n - RANK: По рангу для поиска по тексту.\nПрименяется когда передано поле для поиска по тексту.\nВ случае если текстовое поле не передано, применяется значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "TITLE",
                "CHANGED_AT",
                "CREATED_AT",
                "RANK"
              ]
            }
          },
          {
            "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": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/open": {
      "post": {
        "summary": "Метод открытия точки доступа.\nМетод доступен для: admin, service, bti.\nМетод доступен для: ApiKey",
        "operationId": "AccessPointService_PostAccessPointOpen",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostAccessPointOpenResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostAccessPointOpenResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostAccessPointOpenResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostAccessPointOpenRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/{accessPointGroup.accessPointId}/group/{accessPointGroup.groupId}/attach": {
      "put": {
        "summary": "Метод создания связи точки доступа и группы.\nМетод доступен для: admin, service, bti",
        "operationId": "AccessPointGroupService_PutAccessPointGroupAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutAccessPointGroupAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutAccessPointGroupAttachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutAccessPointGroupAttachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "accessPointGroup.accessPointId",
            "description": "Идентификатор точки доступа.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accessPointGroup.groupId",
            "description": "Идентификатор группы.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/{accessPointGroup.accessPointId}/group/{accessPointGroup.groupId}/detach": {
      "put": {
        "summary": "Метод удаления связи точки доступа и группы.\nМетод доступен для: admin, service, bti",
        "operationId": "AccessPointGroupService_PutAccessPointGroupDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutAccessPointGroupDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutAccessPointGroupDetachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutAccessPointGroupDetachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "accessPointGroup.accessPointId",
            "description": "Идентификатор точки доступа.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accessPointGroup.groupId",
            "description": "Идентификатор группы.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/access_point/{id}": {
      "get": {
        "summary": "Метод получения точки доступа по идентификатору.\nМетод доступен для: admin, service, bti.\nМетод доступен для: ApiKey",
        "operationId": "AccessPointService_GetAccessPoint",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetAccessPointResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления точки доступа.\nМетод доступен для: admin, service, bti",
        "operationId": "AccessPointService_DeleteAccessPoint",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteAccessPointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteAccessPointResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteAccessPointResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор.\n# Тип: Guid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "access_point(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/building/count": {
      "get": {
        "summary": "Метод получения количества домов.\nДля пользователей типов owner, employee: в результат попадают только дома, которые привязаны к компании пользователя или дома квартирограамм привязанных к компании пользователя.\nМетод доступен для: admin, service, owner, employee, ltp_first, bti",
        "operationId": "BuildingService_GetBuildingCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.mrfIds",
            "description": "По идентификаторам МРФ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.rfIds",
            "description": "По идентификаторам РФ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По орпонам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/building/list": {
      "get": {
        "summary": "Метод получения списка домов.\nДля пользователей типов owner, employee: в результат попадают только дома, которые привязаны к компании пользователя или дома квартирограамм привязанных к компании пользователя.\nПри запросе через ApiKey происходит дополнительная фильтрация домов на основе доступности домов для этого ApiKey (фильтрация происходит по доступным AccessPoint для этой группы).\nМетод доступен для: admin, service, owner, employee, ltp_first, bti.\nМетод доступен для: ApiKey",
        "operationId": "BuildingService_GetBuildingList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetBuildingListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetBuildingListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.mrfIds",
            "description": "По идентификаторам МРФ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.rfIds",
            "description": "По идентификаторам РФ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По орпонам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CREATED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CREATED_AT: По времени создания\n - STREET_THEN_NUMBER_THEN_PART: По улице, номеру дома, корпусу",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "CREATED_AT",
                "STREET_THEN_NUMBER_THEN_PART"
              ]
            }
          },
          {
            "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": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/building/orpon/{orpon}/exists": {
      "get": {
        "summary": "Метод проверки существования дома по ОРПОН.\nВозвращает true если найден дом с указанным ОРПОН.\nМетод доступен для: admin, service",
        "operationId": "BuildingService_GetBuildingOrponExists",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingOrponExistsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingOrponExistsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingOrponExistsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "ОРПОН дома.\n# Диапазон: 1..9223372036854775807",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/building/orpon/{orpon}/subscription_mode": {
      "get": {
        "summary": "Метод получения статуса режима работы с подписками у помещений дома.\nВозвращает агрегированный статус по всем помещениям дома.\nМетод доступен для: admin, service, ltp_first, bti",
        "operationId": "BuildingService_GetBuildingOrponSubscriptionMode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingOrponSubscriptionModeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingOrponSubscriptionModeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingOrponSubscriptionModeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "ОРПОН.\n# Диапазон: 1..9223372036854775807",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/building/{id}": {
      "get": {
        "summary": "Метод получения Дома.\nДля пользователей типов owner, employee: в результат попадают только дома, которые привязаны к компании пользователя или дома квартирограамм привязанных к компании пользователя.\nМетод доступен для: admin, service, owner, employee, seller, external_seller, ltp_first, bti",
        "operationId": "BuildingService_GetBuilding",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetBuildingResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор дома",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "building(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/entrance": {
      "post": {
        "summary": "Метод создания подъезда.\nДля ролей employee, owner можно сохранять только подъезды квартирограмм, привязанные к домофонной компании пользователя (привязка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE).\nМетод доступен для: admin, service, owner, employee",
        "operationId": "EntranceService_PostEntrance",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostEntranceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostEntranceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostEntranceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostEntranceRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "entrance(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/api/v1/entrance/device/list": {
      "get": {
        "summary": "Метод получения списка связок подъезд-устройство.\nДля ролей employee, owner можно получать только связи с подъездами квартирограмм, привязанным к домофонной компании пользователя (привязка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE).\nМетод доступен для: admin, service, owner, employee",
        "operationId": "EntranceService_GetEntranceDeviceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetEntranceDeviceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetEntranceDeviceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОН",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.entranceNumbers",
            "description": "По номерам подъезда",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам привязанных устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_ENTRANCE_NUMBER\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_ENTRANCE_NUMBER: По ОРПОНу и номеру подъезда\n - DEVICE_ID: По идентификатору устройства",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ORPON_THEN_ENTRANCE_NUMBER",
                "DEVICE_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 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": [
          "entrance(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/entrance/list": {
      "get": {
        "summary": "Метод получения списка подъездов.\nПри переданном company_ids учитывается тип связи компании и квартирограммы.\nЕсли EntranceFilter.CompanyRelationType = DEVICE_SERVICE, то проверяется связка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE.\nЕсли EntranceFilter.CompanyRelationType = MANAGEMENT, то проверяется связка в flatgramm_companies.\nЕсли EntranceFilter.CompanyRelationType = DEFAULT, то проверяется связка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE.\nЕсли EntranceFilter.CompanyRelationType = COMPANY_RELATION_TYPE_UNKNOWN, вернется ошибка валидации.\nПри не переданном company_ids поле EntranceFilter.CompanyRelationType вызовет ошибку валидации.\nДля ролей employee, owner можно получать только подъезды квартирограмм, привязанные к домофонной компании пользователя (привязка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE).\nМетод доступен для: admin, service, owner, employee",
        "operationId": "EntranceService_GetEntranceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetEntranceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetEntranceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "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": "filter.companyRelationType",
            "description": "Тип связи компании с подъездами\n\n - COMPANY_RELATION_TYPE_UNKNOWN: Значение не указано\n - DEFAULT: Значение по умолчанию\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DEFAULT",
                "MANAGEMENT",
                "DEVICE_SERVICE"
              ]
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_ENTRANCE_NUMBER\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_ENTRANCE_NUMBER: По ОРПОНу и номеру подъезда",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ORPON_THEN_ENTRANCE_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": [
          "entrance(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/entrance/{entranceDevice.orpon}/{entranceDevice.entranceNumber}/device/{entranceDevice.deviceId}/attach": {
      "put": {
        "summary": "Метод создания связи подъезда и устройства.\nДля ролей employee, owner можно сохранять только связи с подъездами квартирограмм, привязанным к домофонной компании пользователя (привязка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE).\nEntranceDevice.RelationType в данном методе не используется.\nМетод доступен для: admin, service, owner, employee",
        "operationId": "EntranceService_PutEntranceDeviceAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutEntranceDeviceAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutEntranceDeviceAttachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutEntranceDeviceAttachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "entranceDevice.orpon",
            "description": "ОРПОН дома",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "entranceDevice.entranceNumber",
            "description": "Номер подъезда.\n# Диапазон: 1..100",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entranceDevice.deviceId",
            "description": "Идентификатор устройства.\n# Диапазон: 1..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entranceDevice.relationType",
            "description": "Тип связки.\nИгнорируется в методах создания и удаления связи\n\n - RELATION_TYPE_UNKNOWN: Значение не указано\n - FULL: Полная связь\n - PARTIAL: Частичная связь",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "FULL",
                "PARTIAL"
              ]
            }
          },
          {
            "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": [
          "entrance(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/entrance/{entranceDevice.orpon}/{entranceDevice.entranceNumber}/device/{entranceDevice.deviceId}/detach": {
      "put": {
        "summary": "Метод удаления связи подъезда и устройства.\nДля ролей employee, owner можно удалять только связи с подъездами квартирограмм, привязанным к домофонной компании пользователя (привязка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE).\nEntranceDevice.RelationType в данном методе не используется.\nМетод доступен для: admin, service, owner, employee",
        "operationId": "EntranceService_PutEntranceDeviceDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutEntranceDeviceDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutEntranceDeviceDetachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutEntranceDeviceDetachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "entranceDevice.orpon",
            "description": "ОРПОН дома",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "entranceDevice.entranceNumber",
            "description": "Номер подъезда.\n# Диапазон: 1..100",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entranceDevice.deviceId",
            "description": "Идентификатор устройства.\n# Диапазон: 1..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "entranceDevice.relationType",
            "description": "Тип связки.\nИгнорируется в методах создания и удаления связи\n\n - RELATION_TYPE_UNKNOWN: Значение не указано\n - FULL: Полная связь\n - PARTIAL: Частичная связь",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "FULL",
                "PARTIAL"
              ]
            }
          },
          {
            "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": [
          "entrance(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/entrance/{orpon}/{entranceNumber}": {
      "delete": {
        "summary": "Метод удаления подъезда.\nРеализуется как удаление квартир по указанному дому и номеру подъезда.\nДля ролей employee, owner можно удалять только подъезды квартирограмм, привязанные к домофонной компании пользователя (привязка компании с типом dc_company_flatgramm.type = DEVICE_SERVICE).\nМетод доступен для: admin, service, owner, employee",
        "operationId": "EntranceService_DeleteEntrance",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEntranceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEntranceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteEntranceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "ОРПОН дома",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "entranceNumber",
            "description": "Номер подъезда.\n# Диапазон: 1..100",
            "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": [
          "entrance(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/company_relation/count": {
      "get": {
        "summary": "Метод получения количества связей квартирограмм и компаний.\nМетод доступен для: admin, service, seller",
        "operationId": "FlatgrammService_GetFlatgrammCompanyRelationCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammCompanyRelationCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammCompanyRelationCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammCompanyRelationCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.flatgrammIds",
            "description": "По Идентификатору квартирограммы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "description": "По Идентификатору компании",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.flatgrammCompanyRelationTypes",
            "description": "Тип назначения компании для квартирограммы\n\n - TYPE_UNKNOWN: Значение не указано\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MANAGEMENT",
                  "DEVICE_SERVICE"
                ]
              }
            }
          },
          {
            "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": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/company_relation/list": {
      "get": {
        "summary": "Метод получения списка связей квартирограмм и компаний.\nМетод доступен для: admin, service, seller",
        "operationId": "FlatgrammService_GetFlatgrammCompanyRelationList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetFlatgrammCompanyRelationListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetFlatgrammCompanyRelationListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.flatgrammIds",
            "description": "По Идентификатору квартирограммы",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "description": "По Идентификатору компании",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.flatgrammCompanyRelationTypes",
            "description": "Тип назначения компании для квартирограммы\n\n - TYPE_UNKNOWN: Значение не указано\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MANAGEMENT",
                  "DEVICE_SERVICE"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nПо умолчанию: COMPANY_ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - COMPANY_ID: По Идентификатору компании\n - FLATGRAMM_ID: По Идентификатору квартирограммы",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "COMPANY_ID",
                "FLATGRAMM_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": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/count": {
      "get": {
        "summary": "Метод получения количества квартирограмм.\nДля пользователей типов owner, employee: в результат фильтрации попадают только квартирограммы компании пользователя.\nДля пользователей типов owner, employee: если filter.company_ids непустое и не совпадает с COMPANY_ID пользователя, метод вернет PERMISSION_DENIED = 7 (403 Forbidden).\nДля пользователей типов owner, employee: если filter.company_ids пустое, то фильтрация по COMPANY_ID пользователя.\nМетод доступен для: admin, manager, service, bti, ltp_first, owner, employee",
        "operationId": "FlatgrammService_GetFlatgrammCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.companyIds",
            "description": "По идентификаторам компаний.\nФильтрация среди компаний, тип связи компании и КВГ определяется по полю company_relation_types.\nЕсли company_relation_types не передан, то учитываются все значения типа FlatgrammCompanyRelation.Type",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.text",
            "description": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.flatgrammCompanyRelationTypes",
            "description": "По типу связи квартирограмм и компаний\n\n - TYPE_UNKNOWN: Значение не указано\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MANAGEMENT",
                  "DEVICE_SERVICE"
                ]
              }
            }
          },
          {
            "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": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/list": {
      "get": {
        "summary": "Метод получения списка облегченных квартирограмм.\nДля пользователей типов owner, employee: в результат фильтрации попадают только квартирограммы компании пользователя.\nДля пользователей типов owner, employee: если filter.company_ids непустое и не совпадает с COMPANY_ID пользователя, метод вернет PERMISSION_DENIED = 7 (403 Forbidden).\nДля пользователей типов owner, employee: если filter.company_ids пустое, то фильтрация по COMPANY_ID пользователя.\nМетод доступен для: admin, manager, service, bti, ltp_first, owner, employee",
        "operationId": "FlatgrammService_GetFlatgrammList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetFlatgrammListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetFlatgrammListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.companyIds",
            "description": "По идентификаторам компаний.\nФильтрация среди компаний, тип связи компании и КВГ определяется по полю company_relation_types.\nЕсли company_relation_types не передан, то учитываются все значения типа FlatgrammCompanyRelation.Type",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.text",
            "description": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter.flatgrammCompanyRelationTypes",
            "description": "По типу связи квартирограмм и компаний\n\n - TYPE_UNKNOWN: Значение не указано\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MANAGEMENT",
                  "DEVICE_SERVICE"
                ]
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CREATED_AT: По времени создания\n - CHANGED_AT: По времени изменения\n - RANK: По рангу для поиска по тексту.\nПрименяется когда передано поле для поиска по тексту.\nВ случае если текстовое поле не передано, применяется значение по умолчанию",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "CREATED_AT",
                "CHANGED_AT",
                "RANK"
              ]
            }
          },
          {
            "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": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/{flatgrammCompanyRelation.flatgrammId}/company_relation/{flatgrammCompanyRelation.companyId}/attach": {
      "put": {
        "summary": "Метод сохранения связей квартирограммы и компании.\nПоддерживает только создание.\nМетод доступен для: admin, service, seller",
        "operationId": "FlatgrammService_PutFlatgrammCompanyRelationAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationAttachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationAttachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "flatgrammCompanyRelation.flatgrammId",
            "description": "Идентификатор квартирограммы.\n# Диапазон: 1..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "flatgrammCompanyRelation.companyId",
            "description": "Идентификатор компании.\n# Диапазон: 1..2147483647",
            "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, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "flatgrammCompanyRelation": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "title": "Тип связи компании и квартирограммы",
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/v1FlatgrammCompanyRelationType"
                          }
                        ]
                      }
                    },
                    "title": "Связь квартирограммы и компании"
                  }
                },
                "title": "Запрос сохранения связей квартирограммы и компании",
                "required": [
                  "type"
                ]
              }
            }
          },
          "required": true
        },
        "tags": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/{flatgrammCompanyRelation.flatgrammId}/company_relation/{flatgrammCompanyRelation.companyId}/detach": {
      "put": {
        "summary": "Метод удаления связей квартирограммы и компании.\nМетод доступен для: admin, service, seller",
        "operationId": "FlatgrammService_PutFlatgrammCompanyRelationDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationDetachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationDetachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "flatgrammCompanyRelation.flatgrammId",
            "description": "Идентификатор квартирограммы.\n# Диапазон: 1..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "flatgrammCompanyRelation.companyId",
            "description": "Идентификатор компании.\n# Диапазон: 1..2147483647",
            "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, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "flatgrammCompanyRelation": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "title": "Тип связи компании и квартирограммы",
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/v1FlatgrammCompanyRelationType"
                          }
                        ]
                      }
                    },
                    "title": "Связь квартирограммы и компании"
                  }
                },
                "title": "Запрос удаления связей квартирограммы и компании",
                "required": [
                  "type"
                ]
              }
            }
          },
          "required": true
        },
        "tags": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/flatgramm/{id}": {
      "get": {
        "summary": "Метод получения облегченной квартирограммы.\nДля пользователей типов owner, employee возвращаются только квартирограммы привязанные к компании пользователя.\nДля пользователей типов owner, employee: в результат попадают только квартирограммы, привязанные к компании пользователя по любому из типов связи FlatgrammCompanyRelation.Type.\nМетод доступен для: admin, manager, service, bti, ltp_first, owner, employee",
        "operationId": "FlatgrammService_GetFlatgramm",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetFlatgrammResponse"
                }
              }
            }
          },
          "default": {
            "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": [
          "flatgramm(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/rfid": {
      "post": {
        "summary": "Метод создания ключа.\nМетод доступен для: admin, service, ltp_first, owner, employee",
        "operationId": "RfidService_PostRfid",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRfidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRfidResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostRfidResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostRfidRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "rfid(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/api/v1/rfid/count": {
      "get": {
        "summary": "Метод получения количества ключей.\nМетод доступен для: admin, service, ltp_first, owner, employee",
        "operationId": "RfidService_GetRfidCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidCountResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidCountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.holderTypes",
            "description": "По типам владельца\n\n - HOLDER_TYPE_UNKNOWN: Значение не указано\n - MASTER: Жилец\n - COMPANY: Сотрудник УК\n - EXTERNAL_SELLER: Ключ сотрудника ГАП\n - SYSTEM: Системный ключ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MASTER",
                  "COMPANY",
                  "EXTERNAL_SELLER",
                  "SYSTEM"
                ]
              }
            }
          },
          {
            "name": "filter.payTypes",
            "description": "По типам оплаты\n\n - PAY_TYPE_UNKNOWN: Значение не указано\n - PAID: Платный\n - FREE: Бесплатный",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PAID",
                  "FREE"
                ]
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.userIds",
            "description": "По идентификаторам пользователей",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "description": "По идентификаторам компаний",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.keys",
            "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": [
          "rfid(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/rfid/list": {
      "get": {
        "summary": "Метод получения списка ключей.\nМетод доступен для: admin, service, ltp_first, owner, employee",
        "operationId": "RfidService_GetRfidList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetRfidListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetRfidListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.holderTypes",
            "description": "По типам владельца\n\n - HOLDER_TYPE_UNKNOWN: Значение не указано\n - MASTER: Жилец\n - COMPANY: Сотрудник УК\n - EXTERNAL_SELLER: Ключ сотрудника ГАП\n - SYSTEM: Системный ключ",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MASTER",
                  "COMPANY",
                  "EXTERNAL_SELLER",
                  "SYSTEM"
                ]
              }
            }
          },
          {
            "name": "filter.payTypes",
            "description": "По типам оплаты\n\n - PAY_TYPE_UNKNOWN: Значение не указано\n - PAID: Платный\n - FREE: Бесплатный",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "PAID",
                  "FREE"
                ]
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.userIds",
            "description": "По идентификаторам пользователей",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "description": "По идентификаторам компаний",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.keys",
            "description": "По кодам ключа",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - CREATED_AT: По времени создания\n - CHANGED_AT: По времени изменения",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "CREATED_AT",
                "CHANGED_AT"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 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": [
          "rfid(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/rfid/{id}": {
      "get": {
        "summary": "Метод получения ключа.\nМетод доступен для: admin, service, ltp_first, owner, employee",
        "operationId": "RfidService_GetRfid",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRfidResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор ключа.\n# Диапазон: 0..2147483647",
            "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": [
          "rfid(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      },
      "delete": {
        "summary": "Метод удаления ключа.\nМетод доступен для: admin, service, ltp_first, owner, employee",
        "operationId": "RfidService_DeleteRfid",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1DeleteRfidResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "Идентификатор ключа.\n# Диапазон: 0..2147483647",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "isForceDelete",
            "description": "Флаг принудительного удаления ключа.\nПри принудительном удалении не гарантируется удаление ключа со всех физических устройств",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "rfid(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/count": {
      "get": {
        "summary": "Метод получения количества квартир.\nМетод доступен для: admin, service, ltp_first, owner, employee, bti",
        "operationId": "AccessControlService_GetRoomCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.buildingIds",
            "description": "По идентификаторам домов",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.entrances",
            "description": "По подъездам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.floors",
            "description": "По этажам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "description": "По идентификаторам компаний",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.types",
            "description": "По типам\n\n - TYPE_UNKNOWN: Значение не указано\n - FLOOR: Этаж\n - ENTRANCE: Подъезд\n - APARTMENT: Апартаменты\n - WATER_DISTRIBUTION: Вводно-распределительные устройства\n - HEAT_POINT: Индивидуальный тепловой пункт\n - PANTRY: Кладовая\n - WHEELCHAIR: Колясочная\n - WIRING_CLOSET: Коммутационный шкаф\n - CONCIERGE: Консьержная\n - CHECKPOINT: КПП\n - PARKING_PLACE: Машиноместо\n - OFFICE: Офис\n - BASEMENT: Подвал\n - SUBSTATION: Подстанция\n - HOMEOWNERS_ROOM: Помещение правления ТСЖ\n - TAMBOUR: Тамбур\n - INPUT_NODE: Узел ввода\n - LOBBY: Лобби\n - ATTIC: Чердак\n - ELEVATOR_SHAFT: Шахта лифта\n - SWITCHBOARD: Электрощитовая\n - DEFAULT_ROOM: Квартира по умолчанию",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "FLOOR",
                  "ENTRANCE",
                  "APARTMENT",
                  "WATER_DISTRIBUTION",
                  "HEAT_POINT",
                  "PANTRY",
                  "WHEELCHAIR",
                  "WIRING_CLOSET",
                  "CONCIERGE",
                  "CHECKPOINT",
                  "PARKING_PLACE",
                  "OFFICE",
                  "BASEMENT",
                  "SUBSTATION",
                  "HOMEOWNERS_ROOM",
                  "TAMBOUR",
                  "INPUT_NODE",
                  "LOBBY",
                  "ATTIC",
                  "ELEVATOR_SHAFT",
                  "SWITCHBOARD",
                  "DEFAULT_ROOM"
                ]
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.isServiceFlag",
            "description": "По признаку служебной квартиры",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.roomNumbers",
            "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/device/count": {
      "get": {
        "summary": "Метод получения количества связок помещение-устройство.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "RoomDeviceService_GetRoomDeviceCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomDeviceCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОН",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам привязанных устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ],
        "tags": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/device/list": {
      "get": {
        "summary": "Метод получения списка связок помещение-устройство.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "RoomDeviceService_GetRoomDeviceList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetRoomDeviceListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetRoomDeviceListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.flatgrammIds",
            "description": "По идентификаторам квартирограмм",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОН",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам привязанных устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_ENTRANCE_NUMBER\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_ENTRANCE_NUMBER: По ОРПОНу и номеру подъезда\n - DEVICE_ID: По идентификатору устройства",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ORPON_THEN_ENTRANCE_NUMBER",
                "DEVICE_ID"
              ]
            }
          },
          {
            "name": "paging.directionType",
            "description": "Тип направления сортировки.\n# По умолчанию: DESC\n\n - DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DESC",
                "ASC"
              ]
            }
          },
          {
            "name": "paging.limit",
            "description": "Количество записей на страницу.\nЕсли значение 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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/list": {
      "get": {
        "summary": "Метод получения списка квартир.\nМетод доступен для: admin, service, ltp_first, owner, employee, bti",
        "operationId": "AccessControlService_GetRoomList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetRoomListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetRoomListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter.buildingIds",
            "description": "По идентификаторам домов",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.entrances",
            "description": "По подъездам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.floors",
            "description": "По этажам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.companyIds",
            "description": "По идентификаторам компаний",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.types",
            "description": "По типам\n\n - TYPE_UNKNOWN: Значение не указано\n - FLOOR: Этаж\n - ENTRANCE: Подъезд\n - APARTMENT: Апартаменты\n - WATER_DISTRIBUTION: Вводно-распределительные устройства\n - HEAT_POINT: Индивидуальный тепловой пункт\n - PANTRY: Кладовая\n - WHEELCHAIR: Колясочная\n - WIRING_CLOSET: Коммутационный шкаф\n - CONCIERGE: Консьержная\n - CHECKPOINT: КПП\n - PARKING_PLACE: Машиноместо\n - OFFICE: Офис\n - BASEMENT: Подвал\n - SUBSTATION: Подстанция\n - HOMEOWNERS_ROOM: Помещение правления ТСЖ\n - TAMBOUR: Тамбур\n - INPUT_NODE: Узел ввода\n - LOBBY: Лобби\n - ATTIC: Чердак\n - ELEVATOR_SHAFT: Шахта лифта\n - SWITCHBOARD: Электрощитовая\n - DEFAULT_ROOM: Квартира по умолчанию",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "FLOOR",
                  "ENTRANCE",
                  "APARTMENT",
                  "WATER_DISTRIBUTION",
                  "HEAT_POINT",
                  "PANTRY",
                  "WHEELCHAIR",
                  "WIRING_CLOSET",
                  "CONCIERGE",
                  "CHECKPOINT",
                  "PARKING_PLACE",
                  "OFFICE",
                  "BASEMENT",
                  "SUBSTATION",
                  "HOMEOWNERS_ROOM",
                  "TAMBOUR",
                  "INPUT_NODE",
                  "LOBBY",
                  "ATTIC",
                  "ELEVATOR_SHAFT",
                  "SWITCHBOARD",
                  "DEFAULT_ROOM"
                ]
              }
            }
          },
          {
            "name": "filter.deviceIds",
            "description": "По идентификаторам устройств",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "filter.orpons",
            "description": "По ОРПОНам",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "int64"
              }
            }
          },
          {
            "name": "filter.isServiceFlag",
            "description": "По признаку служебной квартиры",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CREATED_AT\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CREATED_AT: По времени создания\n - FLOOR_THEN_NUMBER: По этажу и номеру\n - NUMBER: По номеру",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ID",
                "CREATED_AT",
                "FLOOR_THEN_NUMBER",
                "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/orpon/{orpon}/number/{roomNumber}/exists": {
      "get": {
        "summary": "Метод проверки существования квартиры по ОРПОН и её номеру.\nВозвращает true если найдена квартира с указанными параметрами.\nМетод доступен для: admin, service",
        "operationId": "AccessControlService_GetRoomOrponNumberExists",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomOrponNumberExistsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomOrponNumberExistsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomOrponNumberExistsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orpon",
            "description": "ОРПОН дома.\n# Диапазон: 1..9223372036854775807",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "roomNumber",
            "description": "Номер квартиры.\n# Диапазон: 1..4",
            "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/set_subscription_mode": {
      "patch": {
        "summary": "Метод установки режима подписок.\nМетод доступен для: admin, service",
        "operationId": "AccessControlService_PatchRoomSetSubscriptionMode",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PatchRoomSetSubscriptionModeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PatchRoomSetSubscriptionModeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PatchRoomSetSubscriptionModeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PatchRoomSetSubscriptionModeRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/api/v1/room/user/count": {
      "get": {
        "summary": "Метод получения количества связей помещений и пользователей.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "RoomUserService_GetRoomUserCount",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomUserCountResponse"
                }
              }
            }
          },
          "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.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.userIds",
            "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/user/list": {
      "get": {
        "summary": "Метод получения списка связей помещений и пользователей.\nМетод доступен для: admin, service, bti, ltp_first",
        "operationId": "RoomUserService_GetRoomUserList",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "$ref": "#/components/schemas/v1GetRoomUserListResponse"
                    },
                    "error": {
                      "$ref": "#/components/schemas/rpcStatus"
                    }
                  },
                  "title": "Поток объектов v1GetRoomUserListResponse"
                }
              }
            }
          },
          "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.roomNumbers",
            "description": "По номерам квартир",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter.userIds",
            "description": "По идентификаторам пользователей",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "paging.orderByType",
            "description": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: USER_ID\n\n - ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - USER_ID: По идентификатору\n - ORPON_THEN_NUMBER: По ОРПОНу и номеру",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "USER_ID",
                "ORPON_THEN_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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/{id}": {
      "get": {
        "summary": "Метод получения Квартиры.\nМетод доступен для: admin, service, ltp_first, owner, employee",
        "operationId": "AccessControlService_GetRoom",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "404": {
            "description": "Объект не найден"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetRoomResponse"
                }
              }
            }
          },
          "default": {
            "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:read",
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/{roomDevice.orpon}/{roomDevice.roomNumber}/device/{roomDevice.deviceId}/attach": {
      "put": {
        "summary": "Метод создания связи помещения и устройства.\nМетод доступен для: admin, service",
        "operationId": "RoomDeviceService_PutRoomDeviceAttach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutRoomDeviceAttachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutRoomDeviceAttachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutRoomDeviceAttachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "roomDevice.orpon",
            "description": "Идентификатор ОРПОН дома.\n# Диапазон 1..9223372036854775807",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "roomDevice.roomNumber",
            "description": "Номер квартиры.\n# Диапазон: 1..4",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "roomDevice.deviceId",
            "description": "Идентификатор устройства.\n# Диапазон: 1..2147483647",
            "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/room/{roomDevice.orpon}/{roomDevice.roomNumber}/device/{roomDevice.deviceId}/detach": {
      "put": {
        "summary": "Метод удаления связи помещения и устройства.\nМетод доступен для: admin, service",
        "operationId": "RoomDeviceService_PutRoomDeviceDetach",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutRoomDeviceDetachResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutRoomDeviceDetachResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PutRoomDeviceDetachResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "roomDevice.orpon",
            "description": "Идентификатор ОРПОН дома.\n# Диапазон 1..9223372036854775807",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "int64"
            }
          },
          {
            "name": "roomDevice.roomNumber",
            "description": "Номер квартиры.\n# Диапазон: 1..4",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "roomDevice.deviceId",
            "description": "Идентификатор устройства.\n# Диапазон: 1..2147483647",
            "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": [
          "room(auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ]
      }
    },
    "/access_control/api/v1/system/status": {
      "get": {
        "summary": "Метод проверки доступности по порту из интернета.\nНе требует авторизации",
        "operationId": "SystemService_GetSystemStatus",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1GetSystemStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "tags": [
          "system(public)"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/internal/api/v1/broadcast_alert/start": {
      "post": {
        "summary": "Метод запуска массового оповещения через домофоны.\nМетод доступен для: ApiKey",
        "operationId": "BroadcastAlertService_PostBroadcastAlertStart",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBroadcastAlertStartResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBroadcastAlertStartResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBroadcastAlertStartResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostBroadcastAlertStartRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "broadcast_alert(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    },
    "/access_control/internal/api/v1/broadcast_alert/stop": {
      "post": {
        "summary": "Метод прекращения массового оповещения через домофоны.\nМетод доступен для: ApiKey",
        "operationId": "BroadcastAlertService_PostBroadcastAlertStop",
        "responses": {
          "200": {
            "description": "Успешный ответ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBroadcastAlertStopResponse"
                }
              }
            }
          },
          "400": {
            "description": "Ошибка",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBroadcastAlertStopResponse"
                }
              }
            }
          },
          "401": {
            "description": "Запрос не авторизован"
          },
          "403": {
            "description": "В доступе отказано"
          },
          "409": {
            "description": "В базе данных хранится более новая версия объекта"
          },
          "500": {
            "description": "Внутренняя ошибка сервиса",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/v1PostBroadcastAlertStopResponse"
                }
              }
            }
          },
          "default": {
            "description": "Ошибки транспортного слоя",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/v1PostBroadcastAlertStopRequest"
              }
            }
          },
          "required": true
        },
        "tags": [
          "broadcast_alert(internal auth)"
        ],
        "security": [
          {
            "oauth2": [
              "access_control:edit"
            ],
            "bearerHttp": []
          }
        ],
        "parameters": [
          {
            "in": "header",
            "name": "X-Request-Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Уникальный идентификатор запроса. Создаётся клиентом на каждый запрос"
          },
          {
            "in": "header",
            "name": "X-Device-Id",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный идентификатор устройства. Создаётся клиентом при первом запуске приложения. Если есть способ однозначно узнать идентификатор устройства, то создаётся на основе него и остаётся неизменным после переустановки приложения"
          },
          {
            "in": "header",
            "name": "X-Api-Key",
            "schema": {
              "type": "string"
            },
            "description": "Уникальный ключ для партнера. Создается администратором и передается партнерам."
          },
          {
            "in": "header",
            "name": "Canary",
            "schema": {
              "type": "string"
            },
            "description": "Параметр балансировки запроса. Если для заголовка запроса установлено значение always, он будет перенаправлен на канареечный деплой. Если для заголовка установлено значение never, он никогда не будет перенаправлен на канареечный деплой"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AccessPointCamera": {
        "type": "object",
        "properties": {
          "uid": {
            "type": "string",
            "title": "UID камеры"
          },
          "recognitionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CameraRecognitionType"
            },
            "title": "Типы распознавания"
          }
        },
        "title": "Камера",
        "required": [
          "uid"
        ]
      },
      "BuildingSubscriptionModeSubscriptionModeType": {
        "type": "string",
        "enum": [
          "ENABLED",
          "PARTIALLY_ENABLED",
          "DISABLED"
        ],
        "description": "- SUBSCRIPTION_MODE_TYPE_UNKNOWN: Значение не указано\n - ENABLED: Режим работы с подписками включен на всех помещениях дома\n - PARTIALLY_ENABLED: Режим работы с подписками включен на некоторых помещениях дома\n - DISABLED: Режим работы с подписками выключен на всех помещениях дома",
        "title": "Справочник режимов работы с подписками"
      },
      "CameraRecognitionType": {
        "type": "string",
        "enum": [
          "CAR_NUMBER",
          "VEHICLE_TYPE"
        ],
        "description": "- RECOGNITION_TYPE_UNKNOWN: Не указано\n - CAR_NUMBER: По номеру авто\n - VEHICLE_TYPE: По типу транспорта",
        "title": "Тип распознавания.\nАтрибут, определяющий тип данных, который распознает камера.\n# Тип: byte"
      },
      "EntranceDeviceRelationType": {
        "type": "string",
        "enum": [
          "FULL",
          "PARTIAL"
        ],
        "description": "- RELATION_TYPE_UNKNOWN: Значение не указано\n - FULL: Полная связь\n - PARTIAL: Частичная связь",
        "title": "Тип связки"
      },
      "EntranceFilterCompanyRelationType": {
        "type": "string",
        "enum": [
          "DEFAULT",
          "MANAGEMENT",
          "DEVICE_SERVICE"
        ],
        "description": "- COMPANY_RELATION_TYPE_UNKNOWN: Значение не указано\n - DEFAULT: Значение по умолчанию\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
        "title": "Справочник типов связи компании с подъездами"
      },
      "ErrorIdExpected": {
        "type": "object",
        "title": "Не передан хотя бы один идентификатор:\n- Должен быть передан хотя бы один из параметров:\n - mrf_ids;\n - rf_ids;\n - opron_id"
      },
      "ErrorLinkedDevicesExists": {
        "type": "object",
        "title": "Существуют устройства, связанные с квартирами данного подъезда.\nСледует отвязать устройства перед удалением подъезда"
      },
      "ErrorOrponExpected": {
        "type": "object",
        "title": "Не передано значение ОРПОН:\n- Если переданы номера квартир, то значение параметра ОРПОН обязательно"
      },
      "ErrorSoundFileNotFound": {
        "type": "object",
        "title": "Звуковой файл не найден"
      },
      "PatchRoomSetSubscriptionModeRequestModeType": {
        "type": "string",
        "enum": [
          "DISABLED",
          "ENABLED"
        ],
        "description": "- MODE_TYPE_UNKNOWN: Значение не указано\n - DISABLED: Выключено\n - ENABLED: Включено",
        "title": "Справочник значений режимов подписки"
      },
      "PostAccessPointOpenRequestVehicleType": {
        "type": "string",
        "enum": [
          "EMERGENCY",
          "POLICE",
          "AMBULANCE",
          "GARBAGE_TRUCK",
          "TAXI"
        ],
        "description": "- VEHICLE_TYPE_UNKNOWN: Не указано\n - EMERGENCY: МЧС\n - POLICE: Полиция\n - AMBULANCE: Скорая помощь\n - GARBAGE_TRUCK: Мусоровоз\n - TAXI: Такси",
        "title": "Тип ТС"
      },
      "RfidHolderType": {
        "type": "string",
        "enum": [
          "MASTER",
          "COMPANY",
          "EXTERNAL_SELLER",
          "SYSTEM"
        ],
        "description": "- HOLDER_TYPE_UNKNOWN: Значение не указано\n - MASTER: Жилец\n - COMPANY: Сотрудник УК\n - EXTERNAL_SELLER: Ключ сотрудника ГАП\n - SYSTEM: Системный ключ",
        "title": "Тип владельца ключа"
      },
      "RfidPayType": {
        "type": "string",
        "enum": [
          "PAID",
          "FREE"
        ],
        "description": "- PAY_TYPE_UNKNOWN: Значение не указано\n - PAID: Платный\n - FREE: Бесплатный",
        "title": "Тип оплаты"
      },
      "SavingErrorExceededQuantityOfKeysForRoom": {
        "type": "object",
        "title": "Превышено максимально допустимое количество ключей (16) для квартиры"
      },
      "SavingErrorHolderTypeForbidden": {
        "type": "object",
        "title": "Нельзя создавать / изменять ключ с переданным типом владельца.\nДоступные типы владельца:\n- Жилец (мастер)"
      },
      "SavingErrorKeyCodeCannotBeChanged": {
        "type": "object",
        "title": "Нельзя изменить код ключа.\nПричины:\n- При изменении ключа нельзя менять поле key (код ключа)"
      },
      "SavingErrorKeyExist": {
        "type": "object",
        "title": "Данный ключ уже существует.\nПричины:\n- При попытке создания ключа в системе уже существует ключ с таким же кодом"
      },
      "SavingErrorKeyIsUsed": {
        "type": "object",
        "title": "Ключ используется на другой квартире"
      },
      "access_controlv1Rfid": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор ключа.\n# Диапазон: 0..2147483647"
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пользователя"
          },
          "description": {
            "type": "string",
            "title": "Системное описание.\nОбычно оставляет УК/Админ, пользователь его не видет"
          },
          "companyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании"
          },
          "creatorId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор создателя"
          },
          "key": {
            "type": "string",
            "title": "Код ключа (UID).\nУникальное значение.\n# Паттерн: /^[0-9a-fA-F]{1,14}$/"
          },
          "payType": {
            "title": "Тип оплаты",
            "allOf": [
              {
                "$ref": "#/components/schemas/RfidPayType"
              }
            ]
          },
          "holderType": {
            "title": "Тип владельца ключа",
            "allOf": [
              {
                "$ref": "#/components/schemas/RfidHolderType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата обновления.\n# Тип: DateTime?"
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН дома.\n# Диапазон: 1..9223372036854775807"
          },
          "roomNumber": {
            "type": "string",
            "title": "Номер квартиры.\n# Диапазон: 1..4"
          }
        },
        "title": "Ключ.\n# Описание модели",
        "required": [
          "key",
          "payType",
          "holderType",
          "orpon",
          "roomNumber"
        ]
      },
      "access_controlv1Room": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор квартиры"
          },
          "number": {
            "type": "string",
            "title": "Номер"
          },
          "entrance": {
            "type": "integer",
            "format": "int32",
            "title": "Подъезд"
          },
          "floor": {
            "type": "integer",
            "format": "int32",
            "title": "Этаж"
          },
          "area": {
            "type": "number",
            "format": "float",
            "title": "Площадь"
          },
          "buildingId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор дома"
          },
          "companyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании"
          },
          "abonentId": {
            "type": "string",
            "title": "Номер абонента"
          },
          "type": {
            "title": "Тип",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomType"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата удаления.\n# Тип: DateTime",
            "readOnly": true
          },
          "isSubscriptionModeEnabled": {
            "type": "boolean",
            "title": "Включен ли режим подписок",
            "readOnly": true
          }
        },
        "title": "Квартира",
        "required": [
          "id",
          "number",
          "entrance",
          "floor",
          "buildingId",
          "companyId",
          "abonentId",
          "type"
        ]
      },
      "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": "Ошибка транспортного слоя"
      },
      "v1AccessPoint": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "title": "Идентификатор точки доступа.\n# Тип: Guid"
          },
          "title": {
            "type": "string",
            "title": "Наименование.\n# Диапазон: 3..40"
          },
          "description": {
            "type": "string",
            "title": "Описание.\n# Диапазон: 3..200"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства.\n# Диапазон: 1..2147483647"
          },
          "relayIndex": {
            "type": "integer",
            "format": "int32",
            "title": "Номер реле.\n# Диапазон: 0..100"
          },
          "delay": {
            "type": "integer",
            "format": "int32",
            "title": "Время задержки в секундах.\n# Диапазон: 1..3600"
          },
          "flatgrammId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор квартирограммы.\n# Диапазон: 1..2147483647"
          },
          "directionType": {
            "title": "Тип направления",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointDirectionType"
              }
            ]
          },
          "cameras": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccessPointCamera"
            },
            "title": "Список камер"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта.\n# Тип: DateTime",
            "readOnly": true
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата удаления.\n# Тип: DateTime?",
            "readOnly": true
          }
        },
        "title": "Точка доступа.\n# Описание модели",
        "required": [
          "title",
          "deviceId",
          "delay",
          "flatgrammId",
          "directionType"
        ]
      },
      "v1AccessPointDirectionType": {
        "type": "string",
        "enum": [
          "IN",
          "OUT",
          "REVERSE"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Не указано\n - IN: Вход\n - OUT: Выход\n - REVERSE: В обоих направлениях",
        "title": "Тип направления.\n# Тип: byte"
      },
      "v1AccessPointFilter": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "title": "По тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование;\n# - Описание"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам устройств"
          },
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам квартирограмм"
          },
          "directionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1AccessPointDirectionType"
            },
            "title": "По типам направления"
          },
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По идентификаторам группы.\n# Тип: Guid"
          },
          "cameraUids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По идентификаторам камер"
          }
        },
        "title": "Фильтр по точкам доступа"
      },
      "v1AccessPointGroup": {
        "type": "object",
        "properties": {
          "accessPointId": {
            "type": "string",
            "title": "Идентификатор точки доступа.\n# Тип: Guid"
          },
          "groupId": {
            "type": "string",
            "title": "Идентификатор группы.\n# Тип: Guid"
          }
        },
        "title": "Связка точки доступа и группы.\n# Описание модели",
        "required": [
          "accessPointId",
          "groupId"
        ]
      },
      "v1AccessPointGroupFilter": {
        "type": "object",
        "properties": {
          "accessPointIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По идентификаторам точки доступа.\n# Тип: Guid"
          },
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По идентификаторам группы.\n# Тип: Guid"
          }
        },
        "title": "Фильтр по связям точек доступа и групп"
      },
      "v1AccessPointGroupPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: GROUP_ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointGroupPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointGroupPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1AccessPointGroupPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки;\n# Тип: byte"
      },
      "v1AccessPointGroupPagingOrderByType": {
        "type": "string",
        "enum": [
          "GROUP_ID",
          "ACCESS_POINT_ID",
          "CREATED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - GROUP_ID: По идентификатору группы\n - ACCESS_POINT_ID: По идентификатору точки доступа\n - CREATED_AT: По дате создания",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1AccessPointPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1AccessPointPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки;\n# Тип: byte"
      },
      "v1AccessPointPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "TITLE",
          "CHANGED_AT",
          "CREATED_AT",
          "RANK"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - TITLE: По наименованию\n - CHANGED_AT: Дата последнего изменения\n - CREATED_AT: Дата создания\n - RANK: По рангу для поиска по тексту.\nПрименяется когда передано поле для поиска по тексту.\nВ случае если текстовое поле не передано, применяется значение по умолчанию",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1AccessPointSavingError": {
        "type": "object",
        "properties": {
          "conflict": {
            "title": "Конфликт версий",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointSavingErrorConflict"
              }
            ]
          }
        },
        "title": "Ошибка сохранения.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами"
      },
      "v1AccessPointSavingErrorConflict": {
        "type": "object",
        "title": "Конфликт версий.\nПричины:\n- В базе хранится другая версия строки, значения changed_at оличаются"
      },
      "v1Building": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор дома"
          },
          "rfId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор РФ"
          },
          "mrfId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор МРФ"
          },
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН"
          },
          "city": {
            "type": "string",
            "title": "Город"
          },
          "street": {
            "type": "string",
            "title": "Улица"
          },
          "number": {
            "type": "string",
            "title": "Номер дома"
          },
          "part": {
            "type": "string",
            "title": "Корпус"
          },
          "companyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании"
          },
          "prefix": {
            "type": "string",
            "title": "Префикс"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "deletedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата удаления.\n# Тип: DateTime",
            "readOnly": true
          },
          "flatgrammId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор квартирограммы"
          },
          "cityOrpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН города, в котором находится дом"
          },
          "fias": {
            "type": "string",
            "title": "Идентификатор в федеральной информационной адресной системе.\nТип: Guid"
          },
          "district": {
            "type": "string",
            "title": "Наименование района города.\n# Диапазон: 0..200"
          },
          "unom": {
            "type": "string",
            "format": "int64",
            "title": "Уникальный номер адреса.\n# Диапазон: 0..9999999999"
          },
          "regionOrpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН региона"
          },
          "utcOffset": {
            "type": "integer",
            "format": "int32",
            "title": "Смещение таймзоны в минутах.\n# Диапазон: -720..840"
          },
          "isKeyPurchasePossibleInSalePoints": {
            "type": "boolean",
            "title": "Флаг указывает на то могут ли жители этого дома приобрести ключи домофона в партнёрских салонах или на маркетплейсах"
          },
          "isKeyPurchasePossibleInManagementCompany": {
            "type": "boolean",
            "title": "Флаг указывает на то могут ли жители этого дома приобретать ключи через управляющую компанию"
          },
          "isKeyPurchasePossibleInIntercomCompany": {
            "type": "boolean",
            "title": "Флаг указывает на то могут ли жители этого дома приобрести ключи напрямую у домофонной компании"
          },
          "isRfidMifareSupported": {
            "type": "boolean",
            "title": "Флаг указывает на то поддерживает ли дом использование RFID-меток с типом MIFARE"
          },
          "area": {
            "type": "string",
            "title": "Наименование муниципального района.\n# Диапазон: 0..64"
          },
          "areaOrpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН муниципального района.\n# Диапазон: 0..9999999999"
          },
          "areaKladr": {
            "type": "string",
            "title": "КЛАДР муниципального района.\n# Диапазон: 0..32"
          },
          "capitalMarker": {
            "type": "integer",
            "format": "int32",
            "title": "Признак принадлежности населённого пункта к столичному статусу.\n1 — центр района.\n2 — центр региона.\n3 — центр района и региона.\n4 — центральный район региона.\n0 — ничего из перечисленного.\n# Диапазон: 0..4"
          },
          "cityKladr": {
            "type": "string",
            "title": "КЛАДР-код города.\n# Диапазон: 0..17"
          },
          "kladr": {
            "type": "string",
            "title": "КЛАДР-код строения.\n# Диапазон: 0..17"
          },
          "fiasLevel": {
            "type": "integer",
            "format": "int32",
            "title": "Уровень детализации, до которого адрес найден в ФИАС.\n0 — страна.\n1 — регион.\n3 — район.\n4 — город.\n5 — район города.\n6 — населенный пункт.\n7 — улица.\n8 — дом.\n9 — квартира.\n65 — планировочная структура.\n90 — доп. территория.\n91 — улица в доп. территории.\n-1 — иностранный или пустой.\n# Диапазон: -1..99"
          },
          "fiasActualityState": {
            "type": "integer",
            "format": "int32",
            "title": "Уровень детализации, до которого адрес найден в ФИАС.\n0 — актуальный.\n1-50 — переименован.\n51 — переподчинен.\n99 — удален.\n# Диапазон: 0..99"
          },
          "geoLat": {
            "type": "number",
            "format": "double",
            "title": "Координаты: широта"
          },
          "geoLon": {
            "type": "number",
            "format": "double",
            "title": "Координаты: долгота"
          },
          "okato": {
            "type": "integer",
            "format": "int32",
            "title": "Код ОКАТО"
          },
          "oktmo": {
            "type": "integer",
            "format": "int32",
            "title": "Код ОКТМО"
          },
          "postalCode": {
            "type": "integer",
            "format": "int32",
            "title": "Почтовый индекс"
          },
          "region": {
            "type": "string",
            "title": "Наименование региона.\n# Диапазон: 0..64"
          },
          "regionKladr": {
            "type": "string",
            "title": "КЛАДР-код региона.\n# Диапазон: 0..32"
          },
          "streetKladr": {
            "type": "string",
            "title": "КЛАДР-код улицы.\n# Диапазон: 0..32"
          },
          "streetOrpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН улицы.\n# Диапазон: 0..9999999999"
          }
        },
        "title": "Дом",
        "required": [
          "rfId",
          "mrfId",
          "orpon",
          "city",
          "street",
          "companyId",
          "flatgrammId"
        ]
      },
      "v1BuildingFilter": {
        "type": "object",
        "properties": {
          "mrfIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам МРФ"
          },
          "rfIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам РФ"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам устройств"
          },
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам квартирограмм"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По орпонам"
          }
        },
        "title": "Фильтр по домам"
      },
      "v1BuildingPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CREATED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1BuildingPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1BuildingPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "CREATED_AT",
          "STREET_THEN_NUMBER_THEN_PART"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CREATED_AT: По времени создания\n - STREET_THEN_NUMBER_THEN_PART: По улице, номеру дома, корпусу",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1BuildingSubscriptionMode": {
        "type": "object",
        "properties": {
          "subscriptionModeType": {
            "title": "Режим работы с подписками на доме",
            "allOf": [
              {
                "$ref": "#/components/schemas/BuildingSubscriptionModeSubscriptionModeType"
              }
            ]
          }
        },
        "title": "Агрегированный статус режима работы с подписками на доме"
      },
      "v1DeleteAccessPointResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteAccessPointResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления точки доступа"
      },
      "v1DeleteAccessPointResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса удаления точки доступа"
      },
      "v1DeleteEntranceResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка при удалении",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteEntranceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления подъезда"
      },
      "v1DeleteEntranceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "linkedDevicesExists": {
            "title": "Существуют связанные устройства",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorLinkedDevicesExists"
              }
            ]
          }
        },
        "title": "Ошибка удаления подъезда"
      },
      "v1DeleteRfidResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1DeleteRfidResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления ключа"
      },
      "v1DeleteRfidResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на удаление ключа"
      },
      "v1Entrance": {
        "type": "object",
        "properties": {
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН дома"
          },
          "entranceNumber": {
            "type": "integer",
            "format": "int32",
            "title": "Номер подъезда.\n# Диапазон: 1..100"
          },
          "startRoomNumber": {
            "type": "integer",
            "format": "int32",
            "title": "Номер начального помещения.\n# Диапазон: 1..9999"
          },
          "roomsCountPerFloor": {
            "type": "integer",
            "format": "int32",
            "title": "Количество помещений на этаже.\n# Диапазон: 1..1000"
          },
          "floorsCount": {
            "type": "integer",
            "format": "int32",
            "title": "Количество этажей.\n# Диапазон: 1..100"
          }
        },
        "title": "Подъезд",
        "required": [
          "orpon",
          "entranceNumber",
          "startRoomNumber",
          "roomsCountPerFloor",
          "floorsCount"
        ]
      },
      "v1EntranceDevice": {
        "type": "object",
        "properties": {
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН дома"
          },
          "entranceNumber": {
            "type": "integer",
            "format": "int32",
            "title": "Номер подъезда.\n# Диапазон: 1..100"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства.\n# Диапазон: 1..2147483647"
          },
          "relationType": {
            "title": "Тип связки.\nИгнорируется в методах создания и удаления связи",
            "readOnly": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/EntranceDeviceRelationType"
              }
            ]
          }
        },
        "title": "Связка подъезда и устройства.\nРеализуется через связь всех помещений в подъезде и устройства",
        "required": [
          "orpon",
          "entranceNumber",
          "deviceId"
        ]
      },
      "v1EntranceDeviceFilter": {
        "type": "object",
        "properties": {
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам квартирограмм"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОН"
          },
          "entranceNumbers": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По номерам подъезда"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам привязанных устройств"
          }
        },
        "title": "Фильтр связок подъезд-устройство"
      },
      "v1EntranceDevicePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_ENTRANCE_NUMBER",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EntranceDevicePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EntranceDevicePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1EntranceDevicePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1EntranceDevicePagingOrderByType": {
        "type": "string",
        "enum": [
          "ORPON_THEN_ENTRANCE_NUMBER",
          "DEVICE_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_ENTRANCE_NUMBER: По ОРПОНу и номеру подъезда\n - DEVICE_ID: По идентификатору устройства",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1EntranceFilter": {
        "type": "object",
        "properties": {
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам квартирограмм"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОН"
          },
          "companyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам компаний"
          },
          "companyRelationType": {
            "title": "Тип связи компании с подъездами",
            "allOf": [
              {
                "$ref": "#/components/schemas/EntranceFilterCompanyRelationType"
              }
            ]
          }
        },
        "title": "Фильтр подъездов"
      },
      "v1EntrancePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_ENTRANCE_NUMBER",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EntrancePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EntrancePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1EntrancePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1EntrancePagingOrderByType": {
        "type": "string",
        "enum": [
          "ORPON_THEN_ENTRANCE_NUMBER"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_ENTRANCE_NUMBER: По ОРПОНу и номеру подъезда",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1Flatgramm": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор"
          },
          "title": {
            "type": "string",
            "title": "Наименование"
          },
          "companyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании - владельца"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата и время создания.\n# Тип: DateTime",
            "readOnly": true
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "title": "Дата последнего изменения.\nЗаполняется и обновляется сервером.\nЗаполняется при создании и изменении.\nЯвляется версией объекта.\n# Тип: DateTime",
            "readOnly": true
          }
        },
        "title": "Облегченная квартирограмма",
        "required": [
          "title"
        ]
      },
      "v1FlatgrammCompanyRelation": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор компании.\n# Диапазон: 1..2147483647"
          },
          "flatgrammId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор квартирограммы.\n# Диапазон: 1..2147483647"
          },
          "type": {
            "title": "Тип связи компании и квартирограммы",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1FlatgrammCompanyRelationType"
              }
            ]
          }
        },
        "title": "Связка квартирограммы и компании.\nЗадает область ресурсов (resource scope), доступную пользователю.\nИспользуется для контроля доступа к квартирограмме",
        "required": [
          "companyId",
          "flatgrammId",
          "type"
        ]
      },
      "v1FlatgrammCompanyRelationFilter": {
        "type": "object",
        "properties": {
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По Идентификатору квартирограммы"
          },
          "companyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По Идентификатору компании"
          },
          "flatgrammCompanyRelationTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1FlatgrammCompanyRelationType"
            },
            "title": "Тип назначения компании для квартирограммы"
          }
        },
        "title": "Фильтр для запроса связей квартирограммы и компании.\nПри передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.\nПри передаче нескольких разных параметров фильтра они работают в выборке через И"
      },
      "v1FlatgrammCompanyRelationPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nПо умолчанию: COMPANY_ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1FlatgrammCompanyRelationPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\nПо умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1FlatgrammCompanyRelationPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nМинимальное значение: 1.\nМаксимальное значение: 100.\nПо умолчанию: 20.\nЕсли значение 0 (не передано), то выставляем значение по умолчанию"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\nПо умолчанию: 0"
          }
        },
        "title": "Пагинация квартирограмм и компаний"
      },
      "v1FlatgrammCompanyRelationPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки"
      },
      "v1FlatgrammCompanyRelationPagingOrderByType": {
        "type": "string",
        "enum": [
          "COMPANY_ID",
          "FLATGRAMM_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - COMPANY_ID: По Идентификатору компании\n - FLATGRAMM_ID: По Идентификатору квартирограммы",
        "title": "Справочник типов сортировки"
      },
      "v1FlatgrammCompanyRelationType": {
        "type": "string",
        "enum": [
          "MANAGEMENT",
          "DEVICE_SERVICE"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - MANAGEMENT: Управляющая компания владеет квартирограммой\n - DEVICE_SERVICE: Домофонная компания обслуживает квартирограмму",
        "title": "Тип связи компании и квартирограммы.\nПо умолчанию OWNER.\n# Тип: byte"
      },
      "v1FlatgrammFilter": {
        "type": "object",
        "properties": {
          "companyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам компаний.\nФильтрация среди компаний, тип связи компании и КВГ определяется по полю company_relation_types.\nЕсли company_relation_types не передан, то учитываются все значения типа FlatgrammCompanyRelation.Type"
          },
          "text": {
            "type": "string",
            "title": "Поиск по тексту.\nЕсли значение не передано то поиск по нему не производится.\n# Диапазон: 3..64.\n# Поиск производится по полям:\n# - Наименование"
          },
          "flatgrammCompanyRelationTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1FlatgrammCompanyRelationType"
            },
            "title": "По типу связи квартирограмм и компаний"
          }
        },
        "title": "Фильтр квартирограмм"
      },
      "v1FlatgrammPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1FlatgrammPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1FlatgrammPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1FlatgrammPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1FlatgrammPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "CREATED_AT",
          "CHANGED_AT",
          "RANK"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CREATED_AT: По времени создания\n - CHANGED_AT: По времени изменения\n - RANK: По рангу для поиска по тексту.\nПрименяется когда передано поле для поиска по тексту.\nВ случае если текстовое поле не передано, применяется значение по умолчанию",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1GetAccessPointCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего точек доступа"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetAccessPointCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества точек доступа"
      },
      "v1GetAccessPointCountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества точек доступа"
      },
      "v1GetAccessPointGroupCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего точек доступа"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetAccessPointGroupCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества точек доступа"
      },
      "v1GetAccessPointGroupCountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения количества точек доступа"
      },
      "v1GetAccessPointGroupListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связь точки доступа и группы",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointGroup"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetAccessPointGroupListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на получение списка связей точек доступа и групп"
      },
      "v1GetAccessPointGroupListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка связей точек доступа и групп"
      },
      "v1GetAccessPointListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPoint"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetAccessPointListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на получение списка точек доступа"
      },
      "v1GetAccessPointListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка точек доступа"
      },
      "v1GetAccessPointResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPoint"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetAccessPointResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения точки доступа"
      },
      "v1GetAccessPointResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения точки доступа"
      },
      "v1GetBuildingCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Ответ на запрос получения количества домов"
      },
      "v1GetBuildingListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetBuildingListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка домов"
      },
      "v1GetBuildingListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetBuildingOrponExistsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "boolean",
            "title": "Результат проверки: true - если дом существует, false - в противном случае"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetBuildingOrponExistsResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос проверки существования дома по ОРПОН"
      },
      "v1GetBuildingOrponExistsResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetBuildingOrponSubscriptionModeResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Агрегированный статус режима работы с подписками дома",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1BuildingSubscriptionMode"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetBuildingOrponSubscriptionModeResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения агрегированного статуса режима работы с подписками дома"
      },
      "v1GetBuildingOrponSubscriptionModeResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetBuildingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Building"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetBuildingResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения дома"
      },
      "v1GetBuildingResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetEntranceDeviceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связка подъезд-устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1EntranceDevice"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetEntranceDeviceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на получение списка связок подъезд-устройство"
      },
      "v1GetEntranceDeviceListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на получение списка связок подъезд-устройство"
      },
      "v1GetEntranceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Подъезд",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Entrance"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetEntranceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на получение списка подъездов"
      },
      "v1GetEntranceListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на получение списка подъездов"
      },
      "v1GetFlatgrammCompanyRelationCountResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetFlatgrammCompanyRelationCountResponseError"
              }
            ]
          },
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего связей квартирограмм и компаний"
          }
        },
        "title": "Ответ на запрос получения количества связей квартирограмм и компаний"
      },
      "v1GetFlatgrammCompanyRelationCountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetFlatgrammCompanyRelationListResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetFlatgrammCompanyRelationListResponseError"
              }
            ]
          },
          "data": {
            "title": "Связь квартирограммы и компании",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1FlatgrammCompanyRelation"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка связей квартирограмм и компаний"
      },
      "v1GetFlatgrammCompanyRelationListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetFlatgrammCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Всего упрощенных квартирограмм"
          }
        },
        "title": "Ответ на запрос получения количества упрощенных квартирограмм"
      },
      "v1GetFlatgrammListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Упрощенная квартирограмма",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Flatgramm"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetFlatgrammListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на получение списка упрощенных квартирограмм"
      },
      "v1GetFlatgrammListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка упрощенных квартирограмм"
      },
      "v1GetFlatgrammResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Упрощенная квартирограмма",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Flatgramm"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetFlatgrammResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на получение упрощенной квартирограммы"
      },
      "v1GetFlatgrammResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса получения списка упрощенных квартирограмм"
      },
      "v1GetRfidCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRfidCountResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения количества ключей"
      },
      "v1GetRfidCountResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetRfidListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/access_controlv1Rfid"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRfidListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка ключей"
      },
      "v1GetRfidListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetRfidResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/access_controlv1Rfid"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRfidResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения ключа"
      },
      "v1GetRfidResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetRoomCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Ответ на запрос получения количества квартир"
      },
      "v1GetRoomDeviceCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Ответ на запрос получения количества домов"
      },
      "v1GetRoomDeviceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связка помещение-устройство",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomDevice"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRoomDeviceListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на получение списка связок помещение-устройство"
      },
      "v1GetRoomDeviceListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на получение списка связок помещение-устройство"
      },
      "v1GetRoomListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/access_controlv1Room"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRoomListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка квартир"
      },
      "v1GetRoomListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetRoomOrponNumberExistsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "boolean",
            "title": "Результат проверки: true - если квартира существует, false - в противном случае"
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRoomOrponNumberExistsResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос проверки существования квартиры"
      },
      "v1GetRoomOrponNumberExistsResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetRoomResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Квартира",
            "allOf": [
              {
                "$ref": "#/components/schemas/access_controlv1Room"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRoomResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения квартиры"
      },
      "v1GetRoomResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetRoomUserCountResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "integer",
            "format": "int32",
            "title": "Количество"
          }
        },
        "title": "Ответ на запрос получения количества связей помещений и пользователей"
      },
      "v1GetRoomUserListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Связь помещения и пользователя",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomUser"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1GetRoomUserListResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос получения списка связей помещений и пользователей"
      },
      "v1GetRoomUserListResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1GetSystemStatusResponse": {
        "type": "object",
        "title": "Ответ на запрос проверки доступности сервиса"
      },
      "v1PatchRoomSetSubscriptionModeRequest": {
        "type": "object",
        "properties": {
          "mrfIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Список идентификаторов МРФ"
          },
          "rfIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "Список идентификаторов РФ"
          },
          "orponId": {
            "type": "string",
            "format": "int64",
            "title": "Идентификатор ОРПОН дома"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "Список номеров квартир"
          },
          "modeType": {
            "title": "Значение режима подписок",
            "allOf": [
              {
                "$ref": "#/components/schemas/PatchRoomSetSubscriptionModeRequestModeType"
              }
            ]
          }
        },
        "title": "Запрос на установку режима подписок",
        "required": [
          "modeType"
        ]
      },
      "v1PatchRoomSetSubscriptionModeResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PatchRoomSetSubscriptionModeResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на установку режима подписок"
      },
      "v1PatchRoomSetSubscriptionModeResponseError": {
        "type": "object",
        "properties": {
          "orponExpected": {
            "title": "Не передано значение ОРПОН",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorOrponExpected"
              }
            ]
          },
          "idExpected": {
            "title": "Не передан хотя бы один идентификатор",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorIdExpected"
              }
            ]
          },
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1PostAccessPointOpenRequest": {
        "type": "object",
        "properties": {
          "accessPointId": {
            "type": "string",
            "title": "Идентификатор точки доступа.\n# Тип: Guid"
          },
          "carNumber": {
            "type": "string",
            "title": "ГРЗ авто.\n# Диапазон: 3..20"
          },
          "vehicleType": {
            "title": "Тип ТС",
            "allOf": [
              {
                "$ref": "#/components/schemas/PostAccessPointOpenRequestVehicleType"
              }
            ]
          },
          "courierCompanyName": {
            "type": "string",
            "title": "Наименование курьерской компании.\n# Диапазон: 3..150"
          },
          "orderNumber": {
            "type": "string",
            "title": "Номер заказа.\n# Диапазон: 3..64"
          },
          "courierId": {
            "type": "string",
            "title": "Идентификатор курьера.\n# Диапазон: 3..64"
          }
        },
        "title": "Запрос открытия точки доступа",
        "required": [
          "accessPointId"
        ]
      },
      "v1PostAccessPointOpenResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostAccessPointOpenResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос открытия точки доступа"
      },
      "v1PostAccessPointOpenResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса открытия точки доступа"
      },
      "v1PostAccessPointRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPoint"
              }
            ]
          }
        },
        "title": "Запрос на создание/изменение точки доступа",
        "required": [
          "data"
        ]
      },
      "v1PostAccessPointResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Точка доступа",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPoint"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostAccessPointResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на создание/изменение точки доступа"
      },
      "v1PostAccessPointResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1AccessPointSavingError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения точки доступа"
      },
      "v1PostBroadcastAlertStartRequest": {
        "type": "object",
        "properties": {
          "soundFileUri": {
            "type": "string",
            "title": "Ссылка на звуковой файл для проигрывания.\nФайл должен лежать на внутреннем хранилище.\n# Диапазон: 2..100"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "Массив ОРПОНов домов, на которых запускаем проигрывание.\n# Диапазон: 1..100"
          },
          "tactPlayDuration": {
            "type": "integer",
            "format": "int32",
            "title": "Длительность воспроизведения такта в секундах.\nТакт включает в себя проигрывание файла на трубках или на динамике.\n# Диапазон: 0..65536"
          },
          "tactRepeatCount": {
            "type": "integer",
            "format": "int32",
            "title": "Количество последовательных повторов тактов перед сменой динамика на трубки или наоборот.\n# Диапазон: 0..65536"
          },
          "playRepeatCount": {
            "type": "integer",
            "format": "int32",
            "title": "Количество дополнительных повторов тактов, т.е. умолчание=0 - это проигрывание одного такта.\n# Диапазон: 0..65536"
          },
          "playType": {
            "title": "Тип проигрывания",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostBroadcastAlertStartRequestPlayType"
              }
            ]
          }
        },
        "title": "Запрос на запуск массового оповещения через домофоны",
        "required": [
          "soundFileUri",
          "tactPlayDuration",
          "tactRepeatCount",
          "playRepeatCount",
          "playType"
        ]
      },
      "v1PostBroadcastAlertStartRequestPlayType": {
        "type": "string",
        "enum": [
          "HANDSET_ONLY",
          "SPEAKER_ONLY",
          "HANDSET_AND_SPEAKER",
          "SPEAKER_AND_HANDSET"
        ],
        "description": "- PLAY_TYPE_UNKNOWN: Значение не указано\n - HANDSET_ONLY: Только на аналоговые трубки\n - SPEAKER_ONLY: Tолько на динамик домофона\n - HANDSET_AND_SPEAKER: Сначала на аналоговые трубки проигрываем заданное количество тактов, затем на динамик домофона\n - SPEAKER_AND_HANDSET: Сначала на динамик домофона проигрываем заданное количество тактов, затем на аналоговые трубки",
        "title": "Тип проигрывания.\n# Тип: byte"
      },
      "v1PostBroadcastAlertStartResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostBroadcastAlertStartResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на запуск массового оповещения через домофоны"
      },
      "v1PostBroadcastAlertStartResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "soundFileNotFound": {
            "title": "Звуковой файл не найден",
            "allOf": [
              {
                "$ref": "#/components/schemas/ErrorSoundFileNotFound"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostBroadcastAlertStopRequest": {
        "type": "object",
        "properties": {
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "Массив ОРПОНов домов, на которых запускаем проигрывание.\n# Диапазон: 1..100"
          }
        },
        "title": "Запрос на прекращение массового оповещения через домофоны"
      },
      "v1PostBroadcastAlertStopResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostBroadcastAlertStopResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос на прекращение массового оповещения через домофоны"
      },
      "v1PostBroadcastAlertStopResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса"
      },
      "v1PostEntranceRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Подъезд",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Entrance"
              }
            ]
          }
        },
        "title": "Запрос сохранения подъезда",
        "required": [
          "data"
        ]
      },
      "v1PostEntranceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Подъезд",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1Entrance"
              }
            ]
          },
          "error": {
            "title": "Ошибка при удалении",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostEntranceResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения подъезда"
      },
      "v1PostEntranceResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка сохранения подъезда"
      },
      "v1PostRfidRequest": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/access_controlv1Rfid"
              }
            ]
          }
        },
        "title": "Запрос создания ключа",
        "required": [
          "data"
        ]
      },
      "v1PostRfidResponse": {
        "type": "object",
        "properties": {
          "data": {
            "title": "Ключ",
            "allOf": [
              {
                "$ref": "#/components/schemas/access_controlv1Rfid"
              }
            ]
          },
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PostRfidResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос создания ключа"
      },
      "v1PostRfidResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          },
          "saving": {
            "title": "Ошибка сохранения",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidSavingError"
              }
            ]
          }
        },
        "title": "Ошибка"
      },
      "v1PutAccessPointGroupAttachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutAccessPointGroupAttachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения связи точки доступа и группы"
      },
      "v1PutAccessPointGroupAttachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на создание связи точки доступа и группы"
      },
      "v1PutAccessPointGroupDetachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutAccessPointGroupDetachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления связи точки доступа и группы"
      },
      "v1PutAccessPointGroupDetachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на удаление связи точки доступа и группы"
      },
      "v1PutEntranceDeviceAttachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutEntranceDeviceAttachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения связи подъезда и устройства"
      },
      "v1PutEntranceDeviceAttachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на создание связи подъезда и устройства"
      },
      "v1PutEntranceDeviceDetachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutEntranceDeviceDetachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления связи подъезда и устройства"
      },
      "v1PutEntranceDeviceDetachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на удаления связи подъезда и устройства"
      },
      "v1PutFlatgrammCompanyRelationAttachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationAttachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения связи квартирограммы и компании"
      },
      "v1PutFlatgrammCompanyRelationAttachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса сохранения связи квартирограммы и компании"
      },
      "v1PutFlatgrammCompanyRelationDetachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutFlatgrammCompanyRelationDetachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления связи квартирограммы и компании"
      },
      "v1PutFlatgrammCompanyRelationDetachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса удаления связи квартирограммы и компании"
      },
      "v1PutRoomDeviceAttachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutRoomDeviceAttachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос сохранения связи квартиры и устройства"
      },
      "v1PutRoomDeviceAttachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на создание связи квартиры и устройства"
      },
      "v1PutRoomDeviceDetachResponse": {
        "type": "object",
        "properties": {
          "error": {
            "title": "Ошибка",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1PutRoomDeviceDetachResponseError"
              }
            ]
          }
        },
        "title": "Ответ на запрос удаления связи квартиры и устройства"
      },
      "v1PutRoomDeviceDetachResponseError": {
        "type": "object",
        "properties": {
          "validation": {
            "title": "Ошибка валидации",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1ValidationError"
              }
            ]
          }
        },
        "title": "Ошибка запроса на удаления связи квартиры и устройства"
      },
      "v1RfidFilter": {
        "type": "object",
        "properties": {
          "holderTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RfidHolderType"
            },
            "title": "По типам владельца"
          },
          "payTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RfidPayType"
            },
            "title": "По типам оплаты"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартир"
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам пользователей"
          },
          "companyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам компаний"
          },
          "keys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По кодам ключа"
          }
        },
        "title": "Фильтр по ключам"
      },
      "v1RfidPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CHANGED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1RfidPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1RfidPagingOrderByType": {
        "type": "string",
        "enum": [
          "CREATED_AT",
          "CHANGED_AT"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - CREATED_AT: По времени создания\n - CHANGED_AT: По времени изменения",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1RfidSavingError": {
        "type": "object",
        "properties": {
          "conflict": {
            "title": "Конфликт версий",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RfidSavingErrorConflict"
              }
            ]
          },
          "keyExist": {
            "title": "Данный ключ уже существует",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorKeyExist"
              }
            ]
          },
          "keyCodeCannotBeChanged": {
            "title": "Нельзя изменить код ключа",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorKeyCodeCannotBeChanged"
              }
            ]
          },
          "exceededQuantityOfKeysForRoom": {
            "title": "Превышено максимально допустимое количество ключей (16) для квартиры",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorExceededQuantityOfKeysForRoom"
              }
            ]
          },
          "keyIsUsed": {
            "title": "Ключ используется на другой квартире",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorKeyIsUsed"
              }
            ]
          },
          "holderTypeForbidden": {
            "title": "Нельзя создавать / изменять ключ с переданным типом владельца",
            "allOf": [
              {
                "$ref": "#/components/schemas/SavingErrorHolderTypeForbidden"
              }
            ]
          }
        },
        "title": "Ошибка сохранения ключа.\nЭти проверки выполняются при работе с базой данных и сторонними сервисами"
      },
      "v1RfidSavingErrorConflict": {
        "type": "object",
        "title": "Конфликт версий.\nПричины:\n- В базе хранится другая версия строки, значения changed_at отличаются"
      },
      "v1RoomDevice": {
        "type": "object",
        "properties": {
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "Идентификатор ОРПОН дома.\n# Диапазон 1..9223372036854775807"
          },
          "roomNumber": {
            "type": "string",
            "title": "Номер квартиры.\n# Диапазон: 1..4"
          },
          "deviceId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор устройства.\n# Диапазон: 1..2147483647"
          }
        },
        "title": "Связка квартиры и устройства",
        "required": [
          "orpon",
          "roomNumber",
          "deviceId"
        ]
      },
      "v1RoomDeviceFilter": {
        "type": "object",
        "properties": {
          "flatgrammIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам квартирограмм"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОН"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартир"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам привязанных устройств"
          }
        },
        "title": "Фильтр связок помещение-устройство"
      },
      "v1RoomDevicePaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: ORPON_THEN_ENTRANCE_NUMBER",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomDevicePagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomDevicePagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1RoomDevicePagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1RoomDevicePagingOrderByType": {
        "type": "string",
        "enum": [
          "ORPON_THEN_ENTRANCE_NUMBER",
          "DEVICE_ID"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ORPON_THEN_ENTRANCE_NUMBER: По ОРПОНу и номеру подъезда\n - DEVICE_ID: По идентификатору устройства",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1RoomFilter": {
        "type": "object",
        "properties": {
          "buildingIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам домов"
          },
          "entrances": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По подъездам"
          },
          "floors": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По этажам"
          },
          "companyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам компаний"
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/v1RoomType"
            },
            "title": "По типам"
          },
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам устройств"
          },
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "isServiceFlag": {
            "type": "boolean",
            "title": "По признаку служебной квартиры"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартир"
          }
        },
        "title": "Фильтр по квартирам"
      },
      "v1RoomPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: CREATED_AT",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1RoomPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1RoomPagingOrderByType": {
        "type": "string",
        "enum": [
          "ID",
          "CREATED_AT",
          "FLOOR_THEN_NUMBER",
          "NUMBER"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - ID: По идентификатору\n - CREATED_AT: По времени создания\n - FLOOR_THEN_NUMBER: По этажу и номеру\n - NUMBER: По номеру",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1RoomType": {
        "type": "string",
        "enum": [
          "FLOOR",
          "ENTRANCE",
          "APARTMENT",
          "WATER_DISTRIBUTION",
          "HEAT_POINT",
          "PANTRY",
          "WHEELCHAIR",
          "WIRING_CLOSET",
          "CONCIERGE",
          "CHECKPOINT",
          "PARKING_PLACE",
          "OFFICE",
          "BASEMENT",
          "SUBSTATION",
          "HOMEOWNERS_ROOM",
          "TAMBOUR",
          "INPUT_NODE",
          "LOBBY",
          "ATTIC",
          "ELEVATOR_SHAFT",
          "SWITCHBOARD",
          "DEFAULT_ROOM"
        ],
        "description": "- TYPE_UNKNOWN: Значение не указано\n - FLOOR: Этаж\n - ENTRANCE: Подъезд\n - APARTMENT: Апартаменты\n - WATER_DISTRIBUTION: Вводно-распределительные устройства\n - HEAT_POINT: Индивидуальный тепловой пункт\n - PANTRY: Кладовая\n - WHEELCHAIR: Колясочная\n - WIRING_CLOSET: Коммутационный шкаф\n - CONCIERGE: Консьержная\n - CHECKPOINT: КПП\n - PARKING_PLACE: Машиноместо\n - OFFICE: Офис\n - BASEMENT: Подвал\n - SUBSTATION: Подстанция\n - HOMEOWNERS_ROOM: Помещение правления ТСЖ\n - TAMBOUR: Тамбур\n - INPUT_NODE: Узел ввода\n - LOBBY: Лобби\n - ATTIC: Чердак\n - ELEVATOR_SHAFT: Шахта лифта\n - SWITCHBOARD: Электрощитовая\n - DEFAULT_ROOM: Квартира по умолчанию",
        "title": "Тип"
      },
      "v1RoomUser": {
        "type": "object",
        "properties": {
          "orpon": {
            "type": "string",
            "format": "int64",
            "title": "ОРПОН дома"
          },
          "roomNumber": {
            "type": "string",
            "title": "Номер квартиры.\n# Диапазон: 1..4"
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "title": "Идентификатор пользователя.\n# Диапазон: 1..2147483647"
          }
        },
        "title": "Связь помещения и пользователя",
        "required": [
          "orpon",
          "roomNumber",
          "userId"
        ]
      },
      "v1RoomUserFilter": {
        "type": "object",
        "properties": {
          "orpons": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "int64"
            },
            "title": "По ОРПОНам"
          },
          "roomNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "По номерам квартир"
          },
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "title": "По идентификаторам пользователей"
          }
        },
        "title": "Фильтр по связям помещений и пользователей"
      },
      "v1RoomUserPaging": {
        "type": "object",
        "properties": {
          "orderByType": {
            "title": "Тип значения сортировки.\nЕсли значение не передано, то будет взято значение по умолчанию.\n# По умолчанию: USER_ID",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomUserPagingOrderByType"
              }
            ]
          },
          "directionType": {
            "title": "Тип направления сортировки.\n# По умолчанию: DESC",
            "allOf": [
              {
                "$ref": "#/components/schemas/v1RoomUserPagingDirectionType"
              }
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "title": "Количество записей на страницу.\nЕсли значение 0 (не передано), то будет взято значение по умолчанию.\n# Диапазон: 0..100.\n# По умолчанию: 20"
          },
          "offset": {
            "type": "integer",
            "format": "int32",
            "title": "Сдвиг.\n# Диапазон: 0..2147483647"
          }
        },
        "title": "Постраничный вывод"
      },
      "v1RoomUserPagingDirectionType": {
        "type": "string",
        "enum": [
          "DESC",
          "ASC"
        ],
        "description": "- DIRECTION_TYPE_UNKNOWN: Значение не указано\n - DESC: От большего к меньшему\n - ASC: От меньшего к большему",
        "title": "Справочник типов направлений сортировки.\n# Тип: byte"
      },
      "v1RoomUserPagingOrderByType": {
        "type": "string",
        "enum": [
          "USER_ID",
          "ORPON_THEN_NUMBER"
        ],
        "description": "- ORDER_BY_TYPE_UNKNOWN: Значение не указано\n - USER_ID: По идентификатору\n - ORPON_THEN_NUMBER: По ОРПОНу и номеру",
        "title": "Справочник типов значений сортировки.\n# Тип: byte"
      },
      "v1ValidationError": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "title": "Путь к полю в формате наименования прото"
          },
          "message": {
            "type": "string",
            "title": "Валидационное сообщение"
          }
        },
        "title": "Ошибки валидации.\nЭти проверки выполняются до обращения в базу данных",
        "required": [
          "path",
          "message"
        ]
      }
    },
    "securitySchemes": {
      "bearerHttp": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://oauth2-staging.k8s.key.rt.ru/oauth2/token",
            "scopes": {
              "access_control:edit": "Предоставляет полный доступ в сервис access_control",
              "access_control:read": "Предоставляет доступ на чтение данных из сервиса access_control"
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://keyapis-staging.k8s.key.rt.ru",
      "description": "staging"
    },
    {
      "url": "https://{feature}.k8s.key.rt.ru/",
      "description": "https feature",
      "variables": {
        "feature": {
          "default": "",
          "description": "Feature name"
        }
      }
    },
    {
      "url": "http://{feature}.k8s.key.rt.ru/",
      "description": "http feature",
      "variables": {
        "feature": {
          "default": "",
          "description": "Feature name"
        }
      }
    },
    {
      "url": "https://localhost:3001",
      "description": "localhost"
    },
    {
      "url": "https://keyapis.key.rt.ru",
      "description": "production"
    }
  ]
}