Приложение. OpenAPI / Swagger-спецификации
Приложение предназначено для размещения детального перечня REST API BOX5-DIT-MGSN,
полученного из OpenAPI/Swagger-спецификации. Основной текст ПА фиксирует
назначение программных частей и общие требования к интерфейсам, а приложение
служит машинно-сверяемым реестром endpoint-ов, схем запросов, схем ответов и
требований к авторизации.
Сведения приложения являются частью комплекта документации BOX5-DIT-MGSN и применяются
для DEV, TEST и PROD при совпадении версии поставки. Актуальность перечня
endpoint-ов, схем данных и требований к авторизации должна поддерживаться при
выпуске каждой версии документа.
Машиночитаемый OpenAPI/Swagger JSON/YAML рассматривается как артефакт версии
поставки. В документации приводится нормализованное markdown-представление
контракта; внутренние URL выгрузки и контурные адреса API не публикуются. При
передаче отдельного файла спецификации он идентифицируется версией поставки,
датой выгрузки и контрольной суммой, если она включена в комплект.
1. Правила заполнения приложения
Для каждой подсистемы API используется единый шаблон:
| Подраздел |
Содержание |
| Назначение подсистемы |
Краткое описание зоны ответственности API-тега и связанных сервисов. |
| Базовые пути |
Общие URL-префиксы endpoint-ов подсистемы. |
| Авторизация |
Используемая схема безопасности: OAuth2PasswordBearer, постоянный токен, Keycloak или отсутствие security-схемы в OpenAPI. |
| Версия API |
Версия поставки BOX5-DIT-MGSN и OpenAPI-выгрузки, если отдельная версия подсистемы не выделена в URL или metadata. |
| Реестр endpoint-ов |
Таблица: метод, путь, назначение, параметры, тело запроса, успешный ответ, ошибки. |
| Ключевые сценарии |
Последовательности вызовов для основных пользовательских или интеграционных операций. |
| Основные схемы данных |
Схемы запросов и ответов, которые относятся к подсистеме. |
| Совместимость |
Правила совместимых и несовместимых изменений API-группы. |
| Проверка API |
Контрольные сценарии проверки без публикации логинов, паролей, JWT и постоянных токенов. |
Общие соглашения:
- все пути приведены относительно базового URL API эксплуатационного контура
(
<base_url>);
- основной формат запросов и ответов - JSON, кроме endpoint-ов, где в OpenAPI
указан
application/x-www-form-urlencoded, файловый upload/download или
потоковое бинарное содержимое;
- стандартная ошибка валидации FastAPI -
HTTPValidationError с кодом 422;
- типовые ошибки endpoint-ов: 400, 401, 403, 404, 409, 422 и 5xx; если в
OpenAPI указана отдельная схема ошибки, она имеет приоритет над общей
формулировкой;
- поле «Авторизация» отражает security-схему OpenAPI. Если security не задана,
фактическая доступность всё равно проверяется через gateway и настройки
эксплуатационного контура.
2. Реестр подсистем OpenAPI
Реестр содержит OpenAPI-теги применяемых API-групп BOX5-DIT-MGSN и связан с доменами и
сервисами из
Приложения Г к ПД.
| Подсистема / тег OpenAPI |
Endpoint-ов |
Базовый префикс |
Версия API |
Ошибки |
Совместимость |
Статус заполнения |
auth |
31 |
/api/statistics/auth/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx, HTTPValidationError |
Совместимые расширения без изменения формата токенов и ролей. |
заполнен |
audit |
1 |
/api/statistics/audit/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимые расширения audit payload. |
заполнен |
access |
11 |
/api/statistics/access/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения прав и ролей без удаления существующих полей. |
заполнен |
comments |
5 |
/api/statistics/comments/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения модели комментария. |
заполнен |
camera-storage |
46 |
/api/statistics/camera-storage/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения справочников камер, зон и объектов. |
заполнен |
event-storage |
34 |
/api/statistics/event-storage/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения фильтров и DTO событий. |
заполнен |
report-pdf-xlsx-generator |
23 |
/api/statistics/report-pdf-xlsx-generator/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Изменение шаблонов допускается без изменения API запуска и скачивания. |
заполнен |
auth-report-pdf-xlsx-generator |
2 |
/api/statistics/auth-report-pdf-xlsx-generator/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимость следует правилам auth и отчётного API. |
заполнен |
report-email |
7 |
/api/statistics/report-email/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения параметров рассылки. |
заполнен |
event-statistics |
2 |
/api/statistics/event-statistics/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимые расширения аналитических фильтров. |
заполнен |
object-visit-zone-counter |
7 |
/api/statistics/object-visit-zone-counter/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения статистических представлений. |
заполнен |
virt-cam-video-upload |
5 |
/api/statistics/virt-cam-video-upload/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимость зависит от жизненного цикла загружаемого видео. |
заполнен |
image-storage |
2 |
/api/inference/image-storage/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимые расширения метаданных изображений. |
заполнен |
base |
2 |
/api/base/ |
Версия поставки BOX5-DIT-MGSN |
400/404/5xx |
Health/ping должен оставаться обратно совместимым. |
заполнен |
config |
3 |
/api/config/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимые расширения конфигурации без удаления ключей. |
заполнен |
models-storage |
2 |
/api/inference/models-storage/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения описания модели и статуса готовности. |
заполнен |
gateway |
2 |
/api/inference/gateway/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимость gateway-ответов обязательна для UI. |
заполнен |
load-balancer |
8 |
/api/inference/load-balancer/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимые расширения статусов потоков и обработчиков. |
заполнен |
monitoring |
1 |
/api/inference/monitoring/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/5xx |
Ответ мониторинга расширяется только необязательными полями. |
заполнен |
consul |
2 |
/api/consul/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/422/5xx |
Совместимость ключей конфигурации контролируется владельцем gateway. |
заполнен |
s3 |
1 |
/api/s3/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимость маршрутов выдачи объектов обязательна для клиентов медиа. |
заполнен |
data-storage |
3 |
/api/data-storage/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Совместимость lifecycle временных объектов отражается в В7. |
заполнен |
mediaserver |
6 |
/api/thermal/mediaserver/video/ |
Версия поставки BOX5-DIT-MGSN |
400/401/403/404/409/422/5xx |
Медиа-URL и статусы потоков не меняются без отдельного релиза. |
заполнен |
Всего в приложении описано 23 подсистемы и 206 операций REST API.
3. Описание подсистем OpenAPI
3.1. Подсистема auth
Подсистема auth отвечает за аутентификацию, управление сеансами, пользователями, ролями, политикой паролей, постоянными токенами и интеграцию с Keycloak. REST API, доступный браузерному клиенту, проходит через gateway/UI-rest слой и соответствует сервису авторизации st-auth домена statistics.
Базовый префикс: /api/statistics/auth/.
3.1.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API / браузер
participant Gateway as REST gateway
participant Auth as st-auth
participant KC as Keycloak
Client->>Gateway: POST /api/statistics/auth/login/
Gateway->>Auth: Проверка логина и пароля
Auth-->>Gateway: UserTokens
Gateway-->>Client: access_token, refresh_token
Client->>Gateway: GET /api/statistics/auth/me/
Gateway->>Auth: Проверка Bearer access token
Auth-->>Gateway: UserInfo
Gateway-->>Client: Данные текущего пользователя
Client->>Gateway: POST /api/statistics/auth/refresh/
Gateway->>Auth: Обновление пары токенов
Auth-->>Gateway: UserTokens
Gateway-->>Client: Новая пара токенов
Client->>Gateway: GET /api/statistics/auth/keycloak/info/
Gateway->>Auth: Запрос параметров Keycloak
Auth-->>Gateway: KeyCloakInfo
Client->>KC: Авторизация по authorization code
Client->>Gateway: POST /api/statistics/auth/keycloak/login/
Gateway->>Auth: Обмен code на локальные токены
Auth-->>Client: UserTokens
Исходный Mermaid-код схемы: ПА-MER-005. 3.1.1. Основные сценарии.
- Клиент получает параметры Keycloak или выполняет локальный вход по логину и паролю.
- После входа клиент получает данные текущего пользователя, обновляет пару токенов и завершает сеанс.
- Администратор управляет пользователями, ролями, политикой паролей и постоянными токенами.
3.1.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Роли версии 2 |
5 |
CRUD ролей расширенной модели. |
| Пользователи |
5 |
Получение, создание и изменение пользователей. |
| Пароли |
4 |
Восстановление, проверка кода и смена пароля. |
| Фото пользователей |
3 |
Получение и установка фотографий пользователей. |
| Keycloak |
2 |
Получение параметров внешней авторизации и обмен кода на токены. |
| Политика паролей |
2 |
Чтение и изменение политики паролей. |
| Постоянные токены |
2 |
Создание и получение постоянных токенов. |
| Вход в систему |
1 |
Получение пары токенов по логину и паролю. |
| Завершение сеанса |
1 |
Завершение текущего сеанса пользователя. |
| Текущий пользователь |
1 |
Получение профиля пользователя по текущему токену. |
| Вход по постоянному токену |
1 |
Авторизация по ранее созданному постоянному токену. |
| Обновление токенов |
1 |
Обновление access- и refresh-токенов. |
| Роли |
1 |
Получение базового справочника ролей. |
| История входов |
1 |
Получение записей входа пользователя за период. |
| Пользователи с пагинацией |
1 |
Пагинированное получение пользователей. |
3.1.3. Реестр endpoint-ов auth
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/auth/keycloak/info/ |
Получить параметры авторизации |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
KeyCloakInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/keycloak/login/ |
Получить токены через Keycloak |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json KeyCloakAuth |
UserTokens |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/login/ |
Войти в систему |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/x-www-form-urlencoded Body_login_api_statistics_auth_login__post |
UserTokens |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/logout/ |
Завершить сеанс работы в системе |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/me/ |
Информация о себе |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
UserInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/password-policy/ |
Получить настройки политики паролей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
PasswordPolicySettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/password-policy/ |
Обновить настройки политики паролей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json PasswordPolicySettings |
PasswordPolicySettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/password/check-reset-code/ |
Проверить код на восстановление пароля |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json CheckResetPasswordCodeRequest |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/password/reset/ |
Отправить письмо со ссылкой на восстановление пароля на почту |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json SendResetPasswordEmail |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/auth/password/reset/ |
Восстановить пароль |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json ResetPasswordRequest |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/password/update/ |
Обновить пароль пользователя |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json UserPasswordUpdateRequest |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/permanent-token-login/ |
Авторизоваться по постоянному токену авторизации |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json PermanentLoginRequest |
UserTokens |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/permanent-token/{user_id}/ |
Получить постоянный токен авторизации пользователя |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
PermanentLoginToken |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/permanent-token/{user_id}/ |
Создать постоянный токен авторизации |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
PermanentLoginToken |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/photo/ |
Получить список пользователей с фото |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/auth/photo/ |
Установить фото пользователя |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json CreateUserPhoto |
UserPhoto |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/photo/{user_id}/ |
Получить фото пользователя |
не задана в OpenAPI |
path-параметры; query по OpenAPI |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/refresh/ |
Обновить access/refresh-токены |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json UserTokens |
UserTokens |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/roles-v2/ |
Получить список всех ролей пользователя |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
UserRoleList |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/roles-v2/ |
Добавить новую роль пользователя |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json UserRoleV2 |
UserRoleV2 |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/auth/roles-v2/ |
Обновить роль пользователя |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json UserRoleV2 |
UserRoleV2 |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/roles-v2/{role_id}/ |
Получить роль пользователя по её идентификатору |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
UserRoleV2 |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/auth/roles-v2/{role_id}/ |
Удалить роль пользователя |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/roles/ |
Получить список ролей пользователей |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/user-login-list/ |
Получить историю логинов |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/users-paginated/ |
Получить список пользователей с пагинацией |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
UserListPaginated |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/users/ |
Получить список пользователей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth/users/ |
Создать пользователя |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json CreateUser |
UserInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/users/{user_id}/ |
Получить пользователя по id |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
UserInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/auth/users/{user_id}/ |
Обновить пользователя |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json UpdateUser |
UserInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/auth/users/{user_id}/photo/ |
Получить пользователя с фото |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
UserPhoto |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.1.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/auth/keycloak/info/ |
Получить параметры авторизации. Запрос: отсутствует; ответ: KeyCloakInfo. |
POST /api/statistics/auth/keycloak/login/ |
Получить токены через Keycloak. Запрос: application/json KeyCloakAuth; ответ: UserTokens. |
PUT /api/statistics/auth/password/reset/ |
Восстановить пароль. Запрос: application/json ResetPasswordRequest; ответ: ResponseStatus. |
DELETE /api/statistics/auth/roles-v2/{role_id}/ |
Удалить роль пользователя. Запрос: отсутствует; ответ: ResponseStatus. |
POST /api/statistics/auth/login/ |
Войти в систему. Запрос: application/x-www-form-urlencoded Body_login_api_statistics_auth_login__post; ответ: UserTokens. |
POST /api/statistics/auth/logout/ |
Завершить сеанс работы в системе. Запрос: отсутствует; ответ: отсутствует. |
3.1.5. Основные схемы данных auth
| Схема |
Назначение |
Ключевые поля |
KeyCloakInfo |
Схема типа object. |
enabled, client_uri, client_id, redirect_uri, scope, response_type, state |
KeyCloakAuth |
Схема типа object. |
state, session_state, iss, code |
UserTokens |
Схема типа object. |
access_token, refresh_token, token_type, password_expire_after_sec, wait_for_update |
Body_login_api_statistics_auth_login__post |
Схема типа object. |
grant_type, username, password, scope, client_id, client_secret |
PasswordPolicySettings |
Схема типа object. |
min_length, is_capital_letter_required, is_symbol_required, is_number_required, is_repeat_denied, valid_duration_seconds, max_login_attempts, unlock_after_seconds, password_reset_notify_days, password_history_count |
CheckResetPasswordCodeRequest |
Схема типа object. |
code |
SendResetPasswordEmail |
Схема типа object. |
email |
ResetPasswordRequest |
Схема типа object. |
password, confirmed_password, code |
UserPasswordUpdateRequest |
Схема типа object. |
user_id, current_password, new_password, new_password_repeat |
PermanentLoginRequest |
Схема типа object. |
token |
PermanentLoginToken |
Схема типа object. |
user_id, token |
UserPhoto |
Схема типа object. |
user_info, content_type, photo_b64 |
3.1.6. Проверка auth
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/auth/keycloak/info/ |
Возвращает успешный ответ заявленной схемы KeyCloakInfo. |
POST /api/statistics/auth/keycloak/login/ |
Принимает тело application/json KeyCloakAuth и возвращает UserTokens. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.2. Подсистема audit
Подсистема audit предоставляет журнал аудита действий пользователей и сервисов. API используется для получения записей по периоду, пользователю, сервису, действию и текстовым фильтрам.
Базовый префикс: /api/statistics/audit/.
3.2.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Журнал.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.2.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Журнал |
1 |
Получение журнальных записей с фильтрами. |
3.2.3. Реестр endpoint-ов audit
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
POST |
/api/statistics/audit/logs/ |
Получить список отфильтрованных событий лога |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json AuditRequest |
AuditListResponse |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.2.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
POST /api/statistics/audit/logs/ |
Получить список отфильтрованных событий лога. Запрос: application/json AuditRequest; ответ: AuditListResponse. |
3.2.5. Основные схемы данных audit
| Схема |
Назначение |
Ключевые поля |
AuditRequest |
Модель request-валидации аудита |
start_date, end_date, user_id, service, message_filter, action, records_limit, records_skip, sort_field, sort_order |
AuditListResponse |
Модель response-валидации списка аудитов |
records_total, records_limit, audit_records |
AuditRequestMessagesContainsList |
Схема типа object. |
messages_contains |
Audit |
Модель валидации аудита |
id, date, user_id, user, service, message, action, etc_json |
3.2.6. Проверка audit
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
POST /api/statistics/audit/logs/ |
Принимает тело application/json AuditRequest и возвращает AuditListResponse. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
3.3. Подсистема access
Подсистема access управляет правами пользователей и групп на объекты системы. API используется для выдачи, удаления и просмотра доступов, а также для получения дерева ответственности по камерам.
Базовый префикс: /api/statistics/access/.
3.3.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Access as access
Client->>Gateway: GET /api/statistics/access/group/
Gateway->>Access: Получение групп доступа
Access-->>Client: Список Group
Client->>Gateway: POST /api/statistics/access/group/
Gateway->>Access: Создание группы доступа
Access-->>Client: GroupInfo
Client->>Gateway: POST /api/statistics/access/simple/
Gateway->>Access: Выдача точечного доступа
Access-->>Client: ResponseStatus
Client->>Gateway: GET /api/statistics/access/privileges/{user_id}/
Gateway->>Access: Пересчёт итоговых привилегий
Access-->>Client: Список Access
Исходный Mermaid-код схемы: ПА-MER-006. 3.3.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Доступы пользователей, Группы доступа, Привилегии, Ответственные за камеры.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.3.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Группы доступа |
5 |
Создание, изменение, получение и удаление групп доступа. |
| Привилегии |
2 |
Получение итоговых привилегий пользователя. |
| Простой доступ |
2 |
Точечная выдача и удаление доступа. |
| Доступы пользователей |
1 |
Получение сводного списка пользователей и объектов доступа. |
| Ответственные за камеры |
1 |
Получение дерева объектов, камер и назначенных ответственных. |
3.3.3. Реестр endpoint-ов access
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/access/accessed-users/ |
Получить доступы всех пользователей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
AccessedUsersObjectsList |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/access/group/ |
Получить все группы |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/access/group/ |
Создать группу доступа |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json GroupInfo |
GroupInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/access/group/ |
Обновить группу доступа |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json GroupInfo |
GroupInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/access/group/{group_id}/ |
Получить группу |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
GroupInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/access/group/{group_id}/ |
Удалить группу доступа |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/access/privileges/flush/ |
Обновить привилегии |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/access/privileges/{user_id}/ |
Список привилегий пользователя |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/access/responsible-for-cameras-tree/{object_id}/ |
Получить дерево объектов "Ответственные за камеры" |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponsibleForCamerasObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/access/simple/ |
Дать простой доступ |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json SimpleAccess |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/access/simple/ |
Удалить простой доступ |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json SimpleAccess |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.3.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/access/accessed-users/ |
Получить доступы всех пользователей. Запрос: отсутствует; ответ: AccessedUsersObjectsList. |
POST /api/statistics/access/group/ |
Создать группу доступа. Запрос: application/json GroupInfo; ответ: GroupInfo. |
PUT /api/statistics/access/group/ |
Обновить группу доступа. Запрос: application/json GroupInfo; ответ: GroupInfo. |
DELETE /api/statistics/access/group/{group_id}/ |
Удалить группу доступа. Запрос: отсутствует; ответ: ResponseStatus. |
GET /api/statistics/access/group/ |
Получить все группы. Запрос: отсутствует; ответ: array. |
GET /api/statistics/access/group/{group_id}/ |
Получить группу. Запрос: отсутствует; ответ: GroupInfo. |
3.3.5. Основные схемы данных access
| Схема |
Назначение |
Ключевые поля |
AccessedUsersObjectsList |
Схема типа object. |
accessed_object_users |
Group |
Схема типа object. |
group_id, name |
GroupInfo |
Схема типа object. |
group, user_ids, accesses, group_ids |
Access |
Схема типа object. |
object_type, object_id, access_type, access_source |
ResponsibleForCamerasObjectObservationResponseInfo |
Схема типа object. |
info, cameras, children_objects, responsible_info |
SimpleAccess |
Схема типа object. |
user_id, access |
AccessedUsersObject |
Схема типа object. |
object_type, object_id, user_ids |
AccessObjectType |
Перечисление. |
- |
ObjectObservationInfoBase |
Схема типа object. |
obj_id, name |
ResponsibleForCamerasCameraInfo |
Схема типа object. |
camera, user_ids |
ResponsibleInfo |
Схема типа object. |
user_ids, monitored_camera_ids, not_monitored_camera_ids |
3.3.6. Проверка access
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/access/accessed-users/ |
Возвращает успешный ответ заявленной схемы AccessedUsersObjectsList. |
POST /api/statistics/access/group/ |
Принимает тело application/json GroupInfo и возвращает GroupInfo. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
Подсистема comments обеспечивает работу с ветками обсуждений. API создаёт
ветку обсуждения с первым сообщением, добавляет и изменяет комментарии,
возвращает состав ветки обсуждения и удаляет отдельные сообщения.
Базовый префикс: /api/statistics/comments/.
3.4.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Comments as comments
Client->>Gateway: POST /api/statistics/comments/thread/
Gateway->>Comments: Создание ветки обсуждения с первым сообщением
Comments-->>Client: CommentsThread
Client->>Gateway: POST /api/statistics/comments/comment/
Gateway->>Comments: Добавление сообщения в ветку обсуждения
Comments-->>Client: CommentsThread
Client->>Gateway: GET /api/statistics/comments/comments/{thread_id}/
Gateway->>Comments: Чтение состава ветки обсуждения
Comments-->>Client: CommentsThread
Client->>Gateway: PUT /api/statistics/comments/comment/
Gateway->>Comments: Изменение сообщения
Comments-->>Client: Message
Исходный Mermaid-код схемы: ПА-MER-007. 3.4.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Comment, Комментарии, Thread.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.4.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Comment |
3 |
Операции группы, выделенной по URL-префиксу. |
| Комментарии |
1 |
Операции с комментариями и ветками обсуждений. |
| Thread |
1 |
Операции группы, выделенной по URL-префиксу. |
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
POST |
/api/statistics/comments/comment/ |
Добавить комментарий в ветку обсуждения |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json Message |
CommentsThread |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/comments/comment/ |
Изменить комментарий в ветке обсуждения |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json Message |
Message |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/comments/comment/{comment_id}/ |
Удалить комментарий из ветки обсуждения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/comments/comments/{thread_id}/ |
Получить комментарии ветки обсуждения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
CommentsThread |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/comments/thread/ |
Создать ветку обсуждения с первым комментарием |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json MessageThread |
CommentsThread |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.4.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
POST /api/statistics/comments/comment/ |
Добавить комментарий в ветку обсуждения. Запрос: application/json Message; ответ: CommentsThread. |
PUT /api/statistics/comments/comment/ |
Изменить комментарий в ветке обсуждения. Запрос: application/json Message; ответ: Message. |
DELETE /api/statistics/comments/comment/{comment_id}/ |
Удалить комментарий из ветки обсуждения. Запрос: отсутствует; ответ: ResponseStatus. |
GET /api/statistics/comments/comments/{thread_id}/ |
Получить комментарии ветки обсуждения. Запрос: отсутствует; ответ: CommentsThread. |
POST /api/statistics/comments/thread/ |
Создать ветку обсуждения с первым комментарием. Запрос: application/json MessageThread; ответ: CommentsThread. |
| Схема |
Назначение |
Ключевые поля |
Message |
Схема типа object. |
id, thread_id, user_id, create_date, change_date, message, quote |
CommentsThread |
Схема типа object. |
thread, messages |
MessageThread |
Схема типа object. |
thread, message |
Thread |
Схема типа object. |
id, subsystem, subsystem_id, create_date, quantity |
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/comments/comments/{thread_id}/ |
Возвращает успешный ответ заявленной схемы CommentsThread. |
POST /api/statistics/comments/comment/ |
Принимает тело application/json Message и возвращает CommentsThread. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.5. Подсистема camera-storage
Подсистема camera-storage хранит конфигурацию объектов наблюдения, камер, зон, наборов категорий и связей камер. API используется при настройке структуры предприятия и параметров видеоаналитики.
Базовый префикс: /api/statistics/camera-storage/.
3.5.1. Основные сценарии
sequenceDiagram
participant Admin as Администратор
participant Gateway as REST gateway
participant Camera as camera-storage
Admin->>Gateway: POST /api/statistics/camera-storage/objects/
Gateway->>Camera: Создание объекта наблюдения
Camera-->>Admin: ObjectObservationInfo
Admin->>Gateway: POST /api/statistics/camera-storage/{object_id}/optical-cameras/
Gateway->>Camera: Добавление камеры к объекту
Camera-->>Admin: CameraInfo
Admin->>Gateway: POST /api/statistics/camera-storage/ex-zones/
Gateway->>Camera: Настройка зон камеры
Camera-->>Admin: EXZone
Admin->>Gateway: GET /api/statistics/camera-storage/export_json/
Gateway->>Camera: Выгрузка конфигурации
Camera-->>Admin: JSON-конфигурация camera-storage
Исходный Mermaid-код схемы: ПА-MER-008. 3.5.1. Основные сценарии.
- Администратор создаёт объект наблюдения, добавляет камеру, настраивает зоны и набор категорий.
- Конфигурация камер выгружается в JSON, проверяется и загружается обратно через import endpoints.
3.5.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Оптические камеры |
10 |
CRUD оптических камер. |
| Наборы категорий |
6 |
Настройка наборов детекций и нарушений. |
| EX-зоны |
5 |
Создание, изменение, получение и удаление расширенных зон. |
| Объекты наблюдения |
5 |
CRUD объектов наблюдения. |
| Дерево объектов |
3 |
Работа с иерархией объектов. |
| Связи камер |
2 |
Создание и удаление связей между камерами. |
| Импорт |
2 |
Проверка и загрузка файлов конфигурации. |
| Доступ к дереву объектов |
2 |
Назначение и просмотр доступа к объектам и камерам. |
| Позиции камер |
1 |
Получение координат и позиций камер. |
| Ex zones types |
1 |
Операции группы, выделенной по URL-префиксу. |
| Export json |
1 |
Операции группы, выделенной по URL-префиксу. |
| Object tree children |
1 |
Операции группы, выделенной по URL-префиксу. |
| Object tree children l |
1 |
Операции группы, выделенной по URL-префиксу. |
| Типы объектов |
1 |
Получение справочника типов объектов. |
| Objects l |
1 |
Операции группы, выделенной по URL-префиксу. |
| Objects tree l |
1 |
Операции группы, выделенной по URL-префиксу. |
| Objects tree path |
1 |
Операции группы, выделенной по URL-префиксу. |
| Optical cameras l |
1 |
Операции группы, выделенной по URL-префиксу. |
| Зоны |
1 |
CRUD зон наблюдения. |
3.5.3. Реестр endpoint-ов camera-storage
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
POST |
/api/statistics/camera-storage/camera-link/ |
Связать камеры |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json array |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/camera-storage/camera-link/ |
Отвязать камеру |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/camera-positions/ |
Позиции камер |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/categories-preset/ |
Получить список наборов детекций/нарушений |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/categories-preset/ |
Создать набор детекций/нарушений |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json CategoriesPreset |
CategoriesPreset |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/camera-storage/categories-preset/ |
Обновить набор детекций/нарушений |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json CategoriesPreset |
CategoriesPreset |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/categories-preset/mapping/ |
Получить результат маппинга категорий детекций. |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
PresetResultCategories |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/categories-preset/{preset_id}/ |
Получить набор детекций/нарушений |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
CategoriesPreset |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/camera-storage/categories-preset/{preset_id}/ |
Удалить набор детекций/нарушений |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/ex-zones-types/ |
Получить типы зон и взаимодействий |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
string |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/ex-zones/ |
Получить список зон |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/ex-zones/ |
Создать зону |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json EXZone |
EXZone |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/camera-storage/ex-zones/ |
Обновить зону |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json UpdateEXZone |
EXZone |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/ex-zones/{zone_name}/ |
Получить зону |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
EXZone |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/camera-storage/ex-zones/{zone_name}/ |
Удалить зону |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/export_json/ |
Выгрузить конфигурацию camera-storage в json |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/import/check_json/ |
Проверить возможность загрузки файла конфигурации |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
multipart/form-data Body_import_camera_storage_check_json_api_statistics_camera_storage_import_check_json__post |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/import_json/ |
Импортировать файл конфигурации |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
multipart/form-data Body_import_camera_storage_json_api_statistics_camera_storage_import_json__post |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/object-tree-children-l/{object_id}/ |
Получить детей объекта без камер |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/object-tree-children/{object_id}/ |
Получить детей объекта |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/object-types/ |
Получить список типов объектов |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects-l/ |
Получить список объектов с упрощенными камерами |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/objects-tree-access/ |
Дать доступ к камерам |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ObjectTreeCamerasAccess |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects-tree-access/{user_id}/ |
Взять доступ к камерам |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectTreeCamerasAccess |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects-tree-l/{object_id}/ |
Получить дерево объектов без камер |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects-tree-path/{object_id}/ |
Получить путь от объекта в корень |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/objects-tree/ |
Создать объект в дереве |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ObjectObservationInfo |
ObjectObservationInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects-tree/{object_id}/ |
Получить дерево объектов |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/camera-storage/objects-tree/{object_id}/ |
Привязать объект к родителю |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects/ |
Получить список объектов |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/objects/ |
Создание объекта |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ObjectObservationInfo |
ObjectObservationInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/objects/{object_id}/ |
Получить объект |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectObservationResponseInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/camera-storage/objects/{object_id}/ |
Изменить объект |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json ObjectObservationInfo |
ObjectObservationInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/camera-storage/objects/{object_id}/ |
Удалить объект |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/optical-cameras-l/ |
Получить список упрощенных камер |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json GetCameraListFilters |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/optical-cameras/ |
Получить список камер |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/optical-cameras/{cam_id}/ |
Получить камеру |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
CameraInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/camera-storage/optical-cameras/{cam_id}/ |
Изменить камеру |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json CreateCamera |
CameraInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/camera-storage/optical-cameras/{cam_id}/ |
Удалить камеру |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/optical-cameras/{cam_id}/zones/ |
Получить список зон наблюдения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/optical-cameras/{cam_id}/zones/ |
Создать зону наблюдения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json CreateZone |
ZoneInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/optical-cameras/{cam_id}/zones/{zone_id}/ |
Получить зону наблюдения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ZoneInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/camera-storage/optical-cameras/{cam_id}/zones/{zone_id}/ |
Изменить зону наблюдения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json CreateZone |
ZoneInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/camera-storage/optical-cameras/{cam_id}/zones/{zone_id}/ |
Удалить зону наблюдения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/camera-storage/zones/{zone_id}/ |
Получить зону с камерой по zone_id |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ZoneInfoWithCamera |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/camera-storage/{object_id}/optical-cameras/ |
Создать камеру |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json CreateCamera |
CameraInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.5.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/camera-storage/camera-positions/ |
Позиции камер. Запрос: отсутствует; ответ: array. |
POST /api/statistics/camera-storage/categories-preset/ |
Создать набор детекций/нарушений. Запрос: application/json CategoriesPreset; ответ: CategoriesPreset. |
PUT /api/statistics/camera-storage/categories-preset/ |
Обновить набор детекций/нарушений. Запрос: application/json CategoriesPreset; ответ: CategoriesPreset. |
DELETE /api/statistics/camera-storage/camera-link/ |
Отвязать камеру. Запрос: отсутствует; ответ: ResponseStatus. |
POST /api/statistics/camera-storage/import/check_json/ |
Проверить возможность загрузки файла конфигурации. Запрос: multipart/form-data Body_import_camera_storage_check_json_api_statistics_camera_storage_import_check_json__post; ответ: отсутствует. |
3.5.5. Основные схемы данных camera-storage
| Схема |
Назначение |
Ключевые поля |
CameraLink |
Схема типа object. |
camera_id, camera_position_type |
CameraInfo |
Схема типа object. |
obj_id, obj_name, camera, zones, categories_presets, is_record, is_deleted, obj_map_coords, etc_params, ex_zones |
CameraPositions |
Схема типа object. |
type, name |
CategoriesPreset |
Схема типа object. |
id, name, description, violation_categories, detection_categories, event_categories, cameras_ids |
PresetResultCategories |
Схема типа object. |
violation_categories, detection_categories, event_categories |
EXZone |
Схема типа object. |
id, zone_name, zone_id, interaction_id, is_valid, zone_params, interaction_params |
UpdateEXZone |
Схема типа object. |
id, zone_name, zone_id, interaction_id, is_valid, zone_params, interaction_params |
Body_import_camera_storage_check_json_api_statistics_camera_storage_import_check_json__post |
Схема типа object. |
file |
3.5.6. Проверка camera-storage
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/camera-storage/camera-positions/ |
Возвращает успешный ответ заявленной схемы array<CameraPositions>. |
POST /api/statistics/camera-storage/camera-link/ |
Принимает тело application/json array<CameraLink> и возвращает array<CameraInfo>. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.6. Подсистема event-storage
Подсистема event-storage хранит события видеоаналитики, их статусы, комментарии, дополнительные параметры и статистические агрегаты. API используется для работы с лентой событий, модерацией, дашбордами и отчётными выборками.
Базовый префикс: /api/statistics/event-storage/.
3.6.1. Основные сценарии
sequenceDiagram
participant Source as Отправитель события
participant Gateway as REST gateway
participant Events as event-storage
participant UI as Клиент API / UI
Source->>Gateway: POST /api/statistics/event-storage/events/
Gateway->>Events: Сохранение InfViolationEvent
Events-->>Source: InfViolationEvent
UI->>Gateway: GET /api/statistics/event-storage/events/
Gateway->>Events: Получение ленты событий
Events-->>UI: StoredViolationEvents
UI->>Gateway: PUT /api/statistics/event-storage/events/{event_id}/
Gateway->>Events: Обновление статуса события
Events-->>UI: StoredViolationEvent
UI->>Gateway: GET /api/statistics/event-storage/events-count/
Gateway->>Events: Подсчёт статистики
Events-->>UI: EventsCount
Исходный Mermaid-код схемы: ПА-MER-009. 3.6.1. Основные сценарии.
- Оператор получает ленту событий с фильтрами, открывает событие и меняет статус подтверждения.
- Интеграционный клиент передаёт событие, после чего событие ищется по
message_uuid.
- Дашборд получает счётчики и процентные агрегаты по категориям, объектам, статусам и времени.
3.6.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| События |
11 |
Получение, создание, изменение и удаление событий. |
| Статистика событий |
8 |
Подсчёты и агрегаты по событиям. |
| Расширенные статусы |
5 |
Управление расширенными статусами подтверждения. |
| Дополнительные параметры |
3 |
Чтение и сохранение произвольных параметров приложения. |
| Настройки сервиса |
2 |
Чтение и изменение прикладных настроек сервиса. |
| Events additional |
1 |
Операции группы, выделенной по URL-префиксу. |
| Events latest |
1 |
Операции группы, выделенной по URL-префиксу. |
| Events percent |
1 |
Операции группы, выделенной по URL-префиксу. |
| Group events |
1 |
Операции группы, выделенной по URL-префиксу. |
| Transfer events in statistics |
1 |
Операции группы, выделенной по URL-префиксу. |
3.6.3. Реестр endpoint-ов event-storage
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/event-storage/app-settings/ |
Получение настроек сервиса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
AppSettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/app-settings/ |
Изменение настроек сервиса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json AppSettings |
AppSettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/custom-app-params/ |
Получить список дополнительных параметров |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/custom-app-params/ |
Создать/изменить дополнительный параметр |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json CAPUpdateRequest |
CAPResponse |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/custom-app-params/{param_name}/ |
Получить дополнительный параметр по имени |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
CAPResponse |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-additional/{event_uuid}/ |
Получить событие по message_uuid |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
StoredViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/ |
Получить кол-во событий |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
EventsCount |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/categories-date-trunc/ |
Кол-во событий по категориям с группировкой по дате |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/categories/ |
Кол-во событий по категориям |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/confirmation-status-date-trunc/ |
Кол-во событий по статусам |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/confirmation-status/ |
Кол-во событий по статусам |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/days/ |
Получить кол-во событий по срезу minute, hour, day, week, month, quarter, year |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/hours/ |
Кол-во событий по времени |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-count/object/ |
Кол-во событий по объектам |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json EventsCountByObjectRequest |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-latest/camera-event-infos/ |
Получить последние события с камер |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events-percent/secondary-category/ |
Процентное соотношение событий событий по нарушению |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events/ |
Получить список событий |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
StoredViolationEvents |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/events/ |
Получить событие из внешнего контура |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json InfViolationEvent |
InfViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/event-storage/events/ |
Удалить событие |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json DeleteEventsRequest |
EventIds |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/event-storage/events/confirmation-list/set/ |
Обновить статус для событий |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json SetConfirmationsForEventListRequest |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events/percent/timestamp/ |
Процентное соотношение событий по дате |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/events/{event_id}/ |
Получить событие |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
StoredViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/event-storage/events/{event_id}/ |
Обновить статус события |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json EventConfirmationRequest |
StoredViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/event-storage/events/{event_id}/ |
Удалить событие |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
EventId |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/events/{event_id}/comments/ |
Добавить комментарий к событию |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json Message |
StoredViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/event-storage/events/{event_id}/modify/ |
Обновить событие |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json UpdateEventRequest |
StoredViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/events/{event_id}/slice/ |
Получить список событий от/до выбранного события |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json GetEventsSliceFromEventRequest |
StoredViolationEvents |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/extended-conf-statuses/ |
Get Extended Conf Status List |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/extended-conf-statuses/ |
Add Extended Conf Status |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ExtendedConfStatus |
ExtendedConfStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/event-storage/extended-conf-statuses/ |
Update Extended Conf Status |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ExtendedConfStatus |
ExtendedConfStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/extended-conf-statuses/set/ |
Set Extended Conf Status |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ExtendedConfStatus |
StoredViolationEvent |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/extended-conf-statuses/set/bulk/ |
Bulk Set Extended Conf Status |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json BulkSetExtendedConfStatusRequest |
StoredViolationEvents |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/event-storage/group-events/{group_uuid}/ |
Получить список событий из группы |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
StoredViolationEvents |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-storage/transfer-events-in-statistics/ |
Transfer Events In Statistics |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.6.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/event-storage/app-settings/ |
Получение настроек сервиса. Запрос: отсутствует; ответ: AppSettings. |
POST /api/statistics/event-storage/custom-app-params/ |
Создать/изменить дополнительный параметр. Запрос: application/json CAPUpdateRequest; ответ: CAPResponse. |
PUT /api/statistics/event-storage/events/confirmation-list/set/ |
Обновить статус для событий. Запрос: application/json SetConfirmationsForEventListRequest; ответ: array. |
DELETE /api/statistics/event-storage/events/ |
Удалить событие. Запрос: application/json DeleteEventsRequest; ответ: EventIds. |
GET /api/statistics/event-storage/events-count/ |
Получить кол-во событий. Запрос: отсутствует; ответ: EventsCount. |
GET /api/statistics/event-storage/events-count/confirmation-status-date-trunc/ |
Кол-во событий по статусам. Запрос: отсутствует; ответ: array. |
3.6.5. Основные схемы данных event-storage
| Схема |
Назначение |
Ключевые поля |
CAPResponse |
Схема типа object. |
param_id, param_name, param_value |
CAPUpdateRequest |
Схема типа object. |
param_name, param_value |
StoredViolationEvent |
Схема типа object. |
event_id, img, cam_id, message_uuid, primary_objects, date, confirmation_status, confirmation_log, video_url, detected_categories |
EventsCount |
Схема типа object. |
count |
EventsCountByCategoryDateTrunc |
Схема типа object. |
count, category_name, timestamp |
EventsCountByCategory |
Схема типа object. |
count, category_name |
EventsCountByConfirmation |
Схема типа object. |
count, timestamp, confirmation_status |
EventsCountByDay |
Схема типа object. |
date_timestamp, secondary_objects |
EventsCountByHour |
Схема типа object. |
hour, count |
EventsCountByObjectRequest |
Схема типа object. |
from_time, to_time, sec_cat_name |
EventsCountByObject |
Схема типа object. |
object_id, count |
LatestCameraEventInfo |
Схема типа object. |
event_id, message_uuid, cam_id, timestamp |
3.6.6. Проверка event-storage
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/event-storage/app-settings/ |
Возвращает успешный ответ заявленной схемы AppSettings. |
POST /api/statistics/event-storage/app-settings/ |
Принимает тело application/json AppSettings и возвращает AppSettings. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.7. Подсистема report-pdf-xlsx-generator
Подсистема report-pdf-xlsx-generator формирует отчёты по событиям, ответственным за камеры и длительности событий в PDF, XLSX, DOCX и HTML. API поддерживает синхронные и асинхронные операции, скачивание, удаление и отмену отчётов.
Базовый префикс: /api/statistics/report-pdf-xlsx-generator/.
3.7.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Reports as report-pdf-xlsx-generator
Client->>Gateway: POST /api/statistics/report-pdf-xlsx-generator/events-report-pdf-async/
Gateway->>Reports: Запуск формирования отчёта
Reports-->>Client: ReportUUID
loop До завершения формирования
Client->>Gateway: GET /api/statistics/report-pdf-xlsx-generator/reports/
Gateway->>Reports: Получение списка отчётов и статусов
Reports-->>Client: ReportPdfXlsxGeneratorReportInfoList
end
Client->>Gateway: GET /api/statistics/report-pdf-xlsx-generator/reports/{report_uuid}/
Gateway->>Reports: Скачивание готового отчёта
Reports-->>Client: Файл отчёта
Client->>Gateway: DELETE /api/statistics/report-pdf-xlsx-generator/reports/{report_uuid}/
Gateway->>Reports: Удаление отчёта из хранилища
Reports-->>Client: ResponseStatus
Исходный Mermaid-код схемы: ПА-MER-010. 3.7.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Настройки сервиса, Отчёт по событию DOCX, Отчёт по событию PDF, Отчёт по событию XLSX.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
- Файловые или отчётные операции проверяются по статусу ответа и типу возвращаемого содержимого.
- Асинхронные операции проверяются через endpoint статуса до получения готового результата.
3.7.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Отчёты |
18 |
Получение, скачивание, удаление и отмена отчётов. |
| Настройки сервиса |
2 |
Чтение и изменение прикладных настроек сервиса. |
| Отчёт по событию DOCX |
1 |
Формирование документа по одному событию в DOCX. |
| Отчёт по событию PDF |
1 |
Формирование документа по одному событию в PDF. |
| Отчёт по событию XLSX |
1 |
Формирование документа по одному событию в XLSX. |
3.7.3. Реестр endpoint-ов report-pdf-xlsx-generator
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/report-pdf-xlsx-generator/app-settings/ |
Получение настроек сервиса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
ReportPdfXlsxGeneratorAppSettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/app-settings/ |
Изменение настроек сервиса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportPdfXlsxGeneratorAppSettings |
ReportPdfXlsxGeneratorAppSettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/event-info-docx/{event_id}/ |
Получить отчёт о нарушениях в PDF |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json EventInfoReportRequest |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/event-info-pdf/{event_id}/ |
Получить отчёт о нарушениях в PDF |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json EventInfoReportRequest |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/event-info-xlsx/{event_id}/ |
Получить отчёт о нарушениях в PDF |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json EventInfoReportRequest |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/events-duration-report-xlsx-async/ |
Создать отчёт о длительности событий в XLSX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
ReportUUID |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/events-duration-report-xlsx/ |
Получить отчёт о статистике событий XLSX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/events-report-docx-async/ |
Создать отчёт о нарушениях в DOCX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
ReportUUID |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/events-report-html/ |
Создать отчёт о нарушениях в HTML |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
ReportUUID |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-pdf-xlsx-generator/events-report-html/{uuid}/check/ |
Узнать статус отчёта в HTML |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ReportStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-pdf-xlsx-generator/events-report-html/{uuid}/download/ |
Скачать отчёт в HTML |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/events-report-pdf-async/ |
Создать отчёт о нарушениях в PDF |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
ReportUUID |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/events-report-xlsx-async/ |
Создать отчёт о нарушениях в XLSX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
ReportUUID |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/get-events-report-docx |
Получить отчёт о нарушениях в DOCX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/get-events-report-pdf |
Получить отчёт о нарушениях в PDF |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/get-events-report-xlsx |
Получить отчёт о нарушениях в XLSX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/get-responsible-for-cameras-report-docx/ |
Получить отчёт "Ответственные за камеры" в DOCX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-pdf-xlsx-generator/get-responsible-for-cameras-report-pdf/ |
Получить отчёт "Ответственные за камеры" в PDF |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-pdf-xlsx-generator/reports/ |
Скачать отчёт |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
ReportPdfXlsxGeneratorReportInfoList |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-pdf-xlsx-generator/reports/{report_uuid}/ |
Скачать отчёт |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/report-pdf-xlsx-generator/reports/{report_uuid}/ |
Удалить отчёт |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/report-pdf-xlsx-generator/reports/{report_uuid}/cancel/ |
Остановить формирование отчёта |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-pdf-xlsx-generator/static/reports/{date}/{report_filename} |
Скачать отчёт со статической папки |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.7.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/report-pdf-xlsx-generator/app-settings/ |
Получение настроек сервиса. Запрос: отсутствует; ответ: ReportPdfXlsxGeneratorAppSettings. |
POST /api/statistics/report-pdf-xlsx-generator/event-info-docx/{event_id}/ |
Получить отчёт о нарушениях в PDF. Запрос: application/json EventInfoReportRequest; ответ: 200 без схемы. |
DELETE /api/statistics/report-pdf-xlsx-generator/reports/{report_uuid}/ |
Удалить отчёт. Запрос: отсутствует; ответ: ResponseStatus. |
POST /api/statistics/report-pdf-xlsx-generator/events-duration-report-xlsx-async/ |
Создать отчёт о длительности событий в XLSX. Запрос: application/json ReportFilters; ответ: ReportUUID. |
GET /api/statistics/report-pdf-xlsx-generator/events-report-html/{uuid}/download/ |
Скачать отчёт в HTML. Запрос: отсутствует; ответ: 200 без схемы. |
POST /api/statistics/report-pdf-xlsx-generator/app-settings/ |
Изменение настроек сервиса. Запрос: application/json ReportPdfXlsxGeneratorAppSettings; ответ: ReportPdfXlsxGeneratorAppSettings. |
3.7.5. Основные схемы данных report-pdf-xlsx-generator
| Схема |
Назначение |
Ключевые поля |
ReportPdfXlsxGeneratorAppSettings |
Схема типа object. |
max_reports_storage_mb_size |
EventInfoReportRequest |
Схема типа object. |
timezone |
ReportUUID |
Схема типа object. |
uuid |
ReportStatus |
Схема типа object. |
complete |
ReportPdfXlsxGeneratorReportInfoList |
Схема типа object. |
page, page_size, total_pages, total_reports, reports |
ReportPdfXlsxGeneratorReportInfo |
Схема типа object. |
uuid, report_format, report_type, bytes_size, error, total_events_count, fetched_events_count, generated_events_count, collected_percent, generated_percent |
3.7.6. Проверка report-pdf-xlsx-generator
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/report-pdf-xlsx-generator/app-settings/ |
Возвращает успешный ответ заявленной схемы ReportPdfXlsxGeneratorAppSettings. |
POST /api/statistics/report-pdf-xlsx-generator/app-settings/ |
Принимает тело application/json ReportPdfXlsxGeneratorAppSettings и возвращает ReportPdfXlsxGeneratorAppSettings. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
| Проверка файловых ответов |
Для файловых ответов проверяются HTTP-статус, тип содержимого и возможность скачать сформированный файл. |
3.8. Подсистема auth-report-pdf-xlsx-generator
Подсистема auth-report-pdf-xlsx-generator формирует отчёты по последним входам пользователей. API возвращает отчётные документы в PDF и XLSX.
Базовый префикс: /api/statistics/auth-report-pdf-xlsx-generator/.
3.8.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Reports as auth-report-pdf-xlsx-generator
Client->>Gateway: POST /api/statistics/auth-report-pdf-xlsx-generator/login-report/pdf/
Gateway->>Reports: Формирование PDF по истории входов
Reports-->>Client: Файл PDF
Client->>Gateway: POST /api/statistics/auth-report-pdf-xlsx-generator/login-report/xlsx/
Gateway->>Reports: Формирование XLSX по истории входов
Reports-->>Client: Файл XLSX
Исходный Mermaid-код схемы: ПА-MER-011. 3.8.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Login report.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
- Файловые или отчётные операции проверяются по статусу ответа и типу возвращаемого содержимого.
3.8.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Login report |
2 |
Операции группы, выделенной по URL-префиксу. |
3.8.3. Реестр endpoint-ов auth-report-pdf-xlsx-generator
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
POST |
/api/statistics/auth-report-pdf-xlsx-generator/login-report/pdf/ |
Получить отчёт по последним логинам пользователей в PDF |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/auth-report-pdf-xlsx-generator/login-report/xlsx/ |
Получить отчёт о последним логинам пользователей в XLSX |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ReportFilters |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.8.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
POST /api/statistics/auth-report-pdf-xlsx-generator/login-report/pdf/ |
Получить отчёт по последним логинам пользователей в PDF. Запрос: application/json ReportFilters; ответ: 200 без схемы. |
POST /api/statistics/auth-report-pdf-xlsx-generator/login-report/xlsx/ |
Получить отчёт о последним логинам пользователей в XLSX. Запрос: application/json ReportFilters; ответ: 200 без схемы. |
3.8.5. Основные схемы данных auth-report-pdf-xlsx-generator
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
3.8.6. Проверка auth-report-pdf-xlsx-generator
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
POST /api/statistics/auth-report-pdf-xlsx-generator/login-report/pdf/ |
Принимает тело application/json ReportFilters и возвращает 200 без схемы. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка файловых ответов |
Для файловых ответов проверяются HTTP-статус, тип содержимого и возможность скачать сформированный файл. |
3.9. Подсистема report-email
Подсистема report-email хранит и применяет пользовательские настройки email-уведомлений. API используется для чтения, сохранения и проверки параметров рассылки.
Базовый префикс: /api/statistics/report-email/.
3.9.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Mail as report-email
participant Channels as Каналы уведомлений
Client->>Gateway: GET /api/statistics/report-email/notification-info-2/
Gateway->>Mail: Чтение настроек уведомлений
Mail-->>Client: UserNotificationInfo2
Client->>Gateway: POST /api/statistics/report-email/notification-info-2/
Gateway->>Mail: Сохранение каналов и расписаний
Mail-->>Client: ResponseStatus
Client->>Gateway: POST /api/statistics/report-email/test-sending/
Gateway->>Mail: Проверка email-рассылки
Mail->>Channels: Отправка тестового сообщения
Mail-->>Client: ResponseStatus
Исходный Mermaid-код схемы: ПА-MER-012. 3.9.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Report email, Notification info 2, Telegram users, Test sending telegram.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
- Файловые или отчётные операции проверяются по статусу ответа и типу возвращаемого содержимого.
3.9.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Notification info 2 |
2 |
Операции группы, выделенной по URL-префиксу. |
| Report email |
2 |
Операции группы, выделенной по URL-префиксу. |
| Telegram users |
1 |
Операции группы, выделенной по URL-префиксу. |
| Test sending |
1 |
Операции группы, выделенной по URL-префиксу. |
| Test sending telegram |
1 |
Операции группы, выделенной по URL-префиксу. |
3.9.3. Реестр endpoint-ов report-email
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/report-email/ |
Получить данные об оповещениях пользователей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
UserNotificationInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-email/ |
Передать данные об оповещениях пользователей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json UserNotificationInfo |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-email/notification-info-2/ |
Получить настройки оповещений |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
UserNotificationInfo2 |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-email/notification-info-2/ |
Сохранить настройки оповещений |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json UserNotificationInfo2 |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/report-email/telegram-users/ |
Получить пользователей Telegram |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-email/test-sending-telegram/ |
Тестирование рассылки оповещений. |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json TestSendingRequest |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/report-email/test-sending/ |
Тестирование рассылки оповещений. |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json TestSendingRequest |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.9.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/report-email/ |
Получить данные об оповещениях пользователей. Запрос: отсутствует; ответ: UserNotificationInfo. |
POST /api/statistics/report-email/ |
Передать данные об оповещениях пользователей. Запрос: application/json UserNotificationInfo; ответ: ResponseStatus. |
GET /api/statistics/report-email/notification-info-2/ |
Получить настройки оповещений. Запрос: отсутствует; ответ: UserNotificationInfo2. |
POST /api/statistics/report-email/notification-info-2/ |
Сохранить настройки оповещений. Запрос: application/json UserNotificationInfo2; ответ: ResponseStatus. |
GET /api/statistics/report-email/telegram-users/ |
Получить пользователей Telegram. Запрос: отсутствует; ответ: array. |
POST /api/statistics/report-email/test-sending-telegram/ |
Тестирование рассылки оповещений.. Запрос: application/json TestSendingRequest; ответ: ResponseStatus. |
3.9.5. Основные схемы данных report-email
| Схема |
Назначение |
Ключевые поля |
UserNotificationInfo |
Схема типа object. |
user, object_ids, cameras_ids, cron_report_time, timezone, is_enabled, translate, report_format, ccf_list, instantly |
UserNotificationInfo2 |
Схема типа object. |
user_id, timezone, is_enabled, translate, report_format, instantly, report_channels, notification_settings, report_type, is_send_instant_confirmation_changed_report |
TelegramUserInfo |
Схема типа object. |
user_id, username, first_name, last_name, language_code |
TestSendingRequest |
Схема типа object. |
user_id |
CameraCategoriesFilter |
Схема типа object. |
cam_id, primary_categories, secondary_categories |
ReportChannel |
0 - REPORT_CHANNEL_EMAIL 1 - REPORT_CHANNEL_TELEGRAM 2 - REPORT_CHANNEL_VK_TEAMS |
- |
NotificationSetting |
Схема типа object. |
cron_report_time, instantly, ccf_list, is_only_with_confirmations |
ReportTypeEnum |
0 - REPORT_TYPE_DEFAULT 1 - REPORT_TYPE_CONFIRMATION_CHANGED 2 - REPORT_TYPE_ACTIONS_TAKEN |
- |
3.9.6. Проверка report-email
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/report-email/ |
Возвращает успешный ответ заявленной схемы UserNotificationInfo. |
POST /api/statistics/report-email/ |
Принимает тело application/json UserNotificationInfo и возвращает ResponseStatus. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
3.10. Подсистема event-statistics
Подсистема event-statistics управляет настройками статистической обработки событий. API используется для чтения и изменения параметров сервиса.
Базовый префикс: /api/statistics/event-statistics/.
3.10.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Настройки сервиса.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.10.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Настройки сервиса |
2 |
Чтение и изменение прикладных настроек сервиса. |
3.10.3. Реестр endpoint-ов event-statistics
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/event-statistics/app-settings/ |
Получение настроек сервиса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
AppSettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/event-statistics/app-settings/ |
Изменение настроек сервиса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json AppSettings |
AppSettings |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.10.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/event-statistics/app-settings/ |
Получение настроек сервиса. Запрос: отсутствует; ответ: AppSettings. |
POST /api/statistics/event-statistics/app-settings/ |
Изменение настроек сервиса. Запрос: application/json AppSettings; ответ: AppSettings. |
3.10.5. Основные схемы данных event-statistics
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
3.10.6. Проверка event-statistics
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/event-statistics/app-settings/ |
Возвращает успешный ответ заявленной схемы AppSettings. |
POST /api/statistics/event-statistics/app-settings/ |
Принимает тело application/json AppSettings и возвращает AppSettings. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
3.11. Подсистема object-visit-zone-counter
Подсистема object-visit-zone-counter обслуживает подсчёт посещений объектов в зонах. API возвращает настройки и статистику посещений.
Базовый префикс: /api/statistics/object-visit-zone-counter/.
3.11.1. Основные сценарии
sequenceDiagram
participant Admin as Администратор
participant Gateway as REST gateway
participant Visits as object-visit-zone-counter
Admin->>Gateway: POST /api/statistics/object-visit-zone-counter/object-visits/
Gateway->>Visits: Создание правила посещения зоны
Visits-->>Admin: ObjectVisit
Admin->>Gateway: GET /api/statistics/object-visit-zone-counter/object-visits/
Gateway->>Visits: Получение настроенных правил
Visits-->>Admin: ObjectVisitList
Admin->>Gateway: GET /api/statistics/object-visit-zone-counter/visit-events/
Gateway->>Visits: Получение событий посещений
Visits-->>Admin: VisitObjectZoneEventList
Исходный Mermaid-код схемы: ПА-MER-013. 3.11.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Object visits deprecated list, Object visits, Visit events.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.11.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Object visits |
5 |
Операции группы, выделенной по URL-префиксу. |
| Object visits deprecated list |
1 |
Операции группы, выделенной по URL-префиксу. |
| Visit events |
1 |
Операции группы, выделенной по URL-префиксу. |
3.11.3. Реестр endpoint-ов object-visit-zone-counter
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
POST |
/api/statistics/object-visit-zone-counter/object-visits-deprecated-list/ |
Добавить объекты посещения |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ObjectVisitList |
ObjectVisitList |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/object-visit-zone-counter/object-visits/ |
Получить объекты посещения |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
ObjectVisitList |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/object-visit-zone-counter/object-visits/ |
Добавить объект посещения |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json ObjectVisit |
ObjectVisit |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/object-visit-zone-counter/object-visits/{object_visit_id}/ |
Получить объект посещения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ObjectVisit |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/statistics/object-visit-zone-counter/object-visits/{object_visit_id}/ |
Обновить объект посещения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
application/json ObjectVisit |
ObjectVisit |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/object-visit-zone-counter/object-visits/{object_visit_id}/ |
Удалить объект посещения |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/object-visit-zone-counter/visit-events/ |
Получить список событий посещения |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
VisitObjectZoneEventList |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.11.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/object-visit-zone-counter/object-visits/ |
Получить объекты посещения. Запрос: отсутствует; ответ: ObjectVisitList. |
POST /api/statistics/object-visit-zone-counter/object-visits-deprecated-list/ |
Добавить объекты посещения. Запрос: application/json ObjectVisitList; ответ: ObjectVisitList. |
PUT /api/statistics/object-visit-zone-counter/object-visits/{object_visit_id}/ |
Обновить объект посещения. Запрос: application/json ObjectVisit; ответ: ObjectVisit. |
DELETE /api/statistics/object-visit-zone-counter/object-visits/{object_visit_id}/ |
Удалить объект посещения. Запрос: отсутствует; ответ: ResponseStatus. |
POST /api/statistics/object-visit-zone-counter/object-visits/ |
Добавить объект посещения. Запрос: application/json ObjectVisit; ответ: ObjectVisit. |
GET /api/statistics/object-visit-zone-counter/object-visits/{object_visit_id}/ |
Получить объект посещения. Запрос: отсутствует; ответ: ObjectVisit. |
3.11.5. Основные схемы данных object-visit-zone-counter
| Схема |
Назначение |
Ключевые поля |
ObjectVisitList |
Схема типа object. |
objects |
ObjectVisit |
Схема типа object. |
object_visit_id, priority, name, zone_ids, min_persons_count, max_persons_count, current_persons_count |
VisitObjectZoneEventList |
Схема типа object. |
page, page_size, total_pages, total_events, events |
VisitObjectZoneEvent |
Схема типа object. |
event_uuid, timestamp, object_visit_id, camera_id, zone_id, zone_action, check_result, current_object_persons_count, object_min_persons_count, object_max_persons_count |
3.11.6. Проверка object-visit-zone-counter
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/object-visit-zone-counter/object-visits/ |
Возвращает успешный ответ заявленной схемы ObjectVisitList. |
POST /api/statistics/object-visit-zone-counter/object-visits-deprecated-list/ |
Принимает тело application/json ObjectVisitList и возвращает ObjectVisitList. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.12. Подсистема virt-cam-video-upload
Подсистема virt-cam-video-upload загружает видео для виртуальных камер и управляет привязкой роликов. API применяется для демонстрационных и проверочных сценариев с заранее подготовленным видео.
Базовый префикс: /api/statistics/virt-cam-video-upload/.
3.12.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Upload as virt-cam-video-upload
Client->>Gateway: POST /api/statistics/virt-cam-video-upload/
Gateway->>Upload: Загрузка видеофайла
Upload-->>Client: HTTP-статус
Client->>Gateway: GET /api/statistics/virt-cam-video-upload/
Gateway->>Upload: Получение списка файлов
Upload-->>Client: Список VideoFile
Client->>Gateway: POST /api/statistics/virt-cam-video-upload/transcode/
Gateway->>Upload: Перекодирование выбранного файла
Upload-->>Client: VideoFile
Client->>Gateway: DELETE /api/statistics/virt-cam-video-upload/{file_id}/
Gateway->>Upload: Удаление файла
Upload-->>Client: ResponseStatus
Исходный Mermaid-код схемы: ПА-MER-014. 3.12.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Virt cam video upload, Transcode.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.12.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Virt cam video upload |
4 |
Операции группы, выделенной по URL-префиксу. |
| Transcode |
1 |
Операции группы, выделенной по URL-префиксу. |
3.12.3. Реестр endpoint-ов virt-cam-video-upload
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/statistics/virt-cam-video-upload/ |
Получить список видео файлов |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/virt-cam-video-upload/ |
Загрузить видео |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
multipart/form-data Body_upload_video_api_statistics_virt_cam_video_upload__post |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/statistics/virt-cam-video-upload/transcode/ |
Перекодировать видео файл |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
application/json GenericId |
VideoFile |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/statistics/virt-cam-video-upload/{file_id}/ |
Получить видео файл |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
VideoFile |
400/401/403/404/409/422/5xx по схеме endpoint-а |
DELETE |
/api/statistics/virt-cam-video-upload/{file_id}/ |
Удалить видео файл |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
ResponseStatus |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.12.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/statistics/virt-cam-video-upload/ |
Получить список видео файлов. Запрос: отсутствует; ответ: array. |
POST /api/statistics/virt-cam-video-upload/ |
Загрузить видео. Запрос: multipart/form-data Body_upload_video_api_statistics_virt_cam_video_upload__post; ответ: отсутствует. |
POST /api/statistics/virt-cam-video-upload/transcode/ |
Перекодировать видео файл. Запрос: application/json GenericId; ответ: VideoFile. |
GET /api/statistics/virt-cam-video-upload/{file_id}/ |
Получить видео файл. Запрос: отсутствует; ответ: VideoFile. |
DELETE /api/statistics/virt-cam-video-upload/{file_id}/ |
Удалить видео файл. Запрос: отсутствует; ответ: ResponseStatus. |
3.12.5. Основные схемы данных virt-cam-video-upload
| Схема |
Назначение |
Ключевые поля |
VideoFile |
Схема типа object. |
file_id, original_name, path_on_disk, path_web |
Body_upload_video_api_statistics_virt_cam_video_upload__post |
Схема типа object. |
file |
GenericId |
Схема типа object. |
id |
3.12.6. Проверка virt-cam-video-upload
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/statistics/virt-cam-video-upload/ |
Возвращает успешный ответ заявленной схемы array<VideoFile>. |
POST /api/statistics/virt-cam-video-upload/ |
Принимает тело multipart/form-data Body_upload_video_api_statistics_virt_cam_video_upload__post и возвращает отсутствует. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.13. Подсистема image-storage
Подсистема image-storage предоставляет хранение и получение изображений, связанных с инференсом. API используется потребителями, которым нужны изображения по идентификатору.
Базовый префикс: /api/inference/image-storage/.
3.13.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Images, Previews.
3.13.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Images |
1 |
Операции группы, выделенной по URL-префиксу. |
| Previews |
1 |
Операции группы, выделенной по URL-префиксу. |
3.13.3. Реестр endpoint-ов image-storage
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/inference/image-storage/images/{cam_id}.jpg |
Получить бинарное изображение камеры |
не задана в OpenAPI |
path-параметры; query по OpenAPI |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/image-storage/previews/{cam_id}.jpg |
Получить бинарное превью камеры |
не задана в OpenAPI |
path-параметры; query по OpenAPI |
отсутствует |
200 без схемы |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.13.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/inference/image-storage/images/{cam_id}.jpg |
Получить бинарное изображение камеры. Запрос: отсутствует; ответ: 200 без схемы. |
GET /api/inference/image-storage/previews/{cam_id}.jpg |
Получить бинарное превью камеры. Запрос: отсутствует; ответ: 200 без схемы. |
3.13.5. Основные схемы данных image-storage
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
3.13.6. Проверка image-storage
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/inference/image-storage/images/{cam_id}.jpg |
Возвращает успешный ответ заявленной схемы 200 без схемы. |
| Проверка доступа через gateway |
Операции без security-схемы дополнительно проверяются через правила gateway и права доступа контура. |
3.14. Подсистема base
Подсистема base содержит базовые служебные проверки доступности. API используется для health-check и проверки прохождения запроса через gateway.
Базовый префикс: /api/base/.
3.14.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Ping.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.14.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Ping |
2 |
Операции группы, выделенной по URL-префиксу. |
3.14.3. Реестр endpoint-ов base
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/base/ping/ |
Ping |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/base/ping/ |
Ping Query |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
PingResponse |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.14.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/base/ping/ |
Ping. Запрос: отсутствует; ответ: отсутствует. |
POST /api/base/ping/ |
Ping Query. Запрос: отсутствует; ответ: PingResponse. |
3.14.5. Основные схемы данных base
| Схема |
Назначение |
Ключевые поля |
PingResponse |
Схема типа object. |
result |
3.14.6. Проверка base
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/base/ping/ |
Возвращает успешный ответ заявленной схемы отсутствует. |
POST /api/base/ping/ |
Принимает тело отсутствует и возвращает PingResponse. |
| Проверка доступа через gateway |
Операции без security-схемы дополнительно проверяются через правила gateway и права доступа контура. |
3.15. Подсистема config
Подсистема config является API-группой gateway/UI и не означает наличие отдельного compose-домена config в составе поставки. API отдаёт клиентскую и системную конфигурацию UI/API и используется фронтендом и служебными клиентами при инициализации.
Базовый префикс: /api/config/.
3.15.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API / UI
participant Gateway as REST gateway
participant Config as config
Client->>Gateway: GET /api/config/
Gateway->>Config: Получение действующей конфигурации
Config-->>Client: Конфигурация
Client->>Gateway: PUT /api/config/
Gateway->>Config: Обновление конфигурации
Config-->>Client: HTTP-статус
Client->>Gateway: POST /api/config/revert/
Gateway->>Config: Возврат конфигурации по умолчанию
Config-->>Client: HTTP-статус
Исходный Mermaid-код схемы: ПА-MER-015. 3.15.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Конфигурация, Revert.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.15.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Конфигурация |
2 |
Получение клиентских и служебных настроек. |
| Revert |
1 |
Операции группы, выделенной по URL-префиксу. |
3.15.3. Реестр endpoint-ов config
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/config/ |
Получить конфиг. |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/config/ |
Обновить конфиг |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/config/revert/ |
Восстановить дефолтный конфиг. |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.15.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/config/ |
Получить конфиг.. Запрос: отсутствует; ответ: отсутствует. |
PUT /api/config/ |
Обновить конфиг. Запрос: отсутствует; ответ: отсутствует. |
POST /api/config/revert/ |
Восстановить дефолтный конфиг.. Запрос: отсутствует; ответ: отсутствует. |
3.15.5. Основные схемы данных config
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
3.15.6. Проверка config
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/config/ |
Возвращает успешный ответ заявленной схемы отсутствует. |
POST /api/config/revert/ |
Принимает тело отсутствует и возвращает отсутствует. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.16. Подсистема models-storage
Подсистема models-storage является API-группой, исторически опубликованной по префиксу /api/inference/models-storage/. Сервисным владельцем сведений о моделях в составе поставки является svr-models-registry; API используется для получения списка и состояния моделей.
Базовый префикс: /api/inference/models-storage/.
3.16.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Models storage, Translations.
3.16.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Models storage |
1 |
Операции группы, выделенной по URL-префиксу. |
| Translations |
1 |
Операции группы, выделенной по URL-префиксу. |
3.16.3. Реестр endpoint-ов models-storage
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/inference/models-storage/ |
Получение моделей |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/models-storage/translations/ |
Переводы нарушений |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.16.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/inference/models-storage/ |
Получение моделей. Запрос: отсутствует; ответ: array. |
GET /api/inference/models-storage/translations/ |
Переводы нарушений. Запрос: отсутствует; ответ: отсутствует. |
3.16.5. Основные схемы данных models-storage
| Схема |
Назначение |
Ключевые поля |
ModelInfo |
Схема типа object. |
is_error, error_msg, model_id, version, zones, primary_categories, secondary_categories, additional_categories |
Zone |
Схема типа object. |
zid, name, color, polygon, is_none, translations |
Category |
Схема типа object. |
id, supercategory, name, ru_name, en_name, is_violation, is_primary, threshold, color, is_active |
3.16.6. Проверка models-storage
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/inference/models-storage/ |
Возвращает успешный ответ заявленной схемы array<ModelInfo>. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
3.17. Подсистема gateway
Подсистема gateway отдаёт изображения и превью камер через inference gateway. API используется интерфейсом для быстрых визуальных представлений.
Базовый префикс: /api/inference/gateway/.
3.17.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Images, Previews.
3.17.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Images |
1 |
Операции группы, выделенной по URL-префиксу. |
| Previews |
1 |
Операции группы, выделенной по URL-префиксу. |
3.17.3. Реестр endpoint-ов gateway
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/inference/gateway/images/ |
Получить изображения камер |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/gateway/previews/ |
Получить превью камер |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.17.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/inference/gateway/images/ |
Получить изображения камер. Запрос: отсутствует; ответ: array. |
GET /api/inference/gateway/previews/ |
Получить превью камер. Запрос: отсутствует; ответ: array. |
3.17.5. Основные схемы данных gateway
| Схема |
Назначение |
Ключевые поля |
GatewayImage |
Схема типа object. |
cam_id, img_base64, width, height |
3.17.6. Проверка gateway
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/inference/gateway/images/ |
Возвращает успешный ответ заявленной схемы array<GatewayImage>. |
| Проверка доступа через gateway |
Операции без security-схемы дополнительно проверяются через правила gateway и права доступа контура. |
3.18. Подсистема load-balancer
Подсистема load-balancer управляет состоянием балансировщика инференса и маршрутами камер. API используется для контроля доступности обработчиков и распределения нагрузки.
Базовый префикс: /api/inference/load-balancer/.
3.18.1. Основные сценарии
sequenceDiagram
participant UI as Клиент API / UI
participant Gateway as REST gateway
participant LB as load-balancer
participant Node as Узел inference
UI->>Gateway: GET /api/inference/load-balancer/info/with_monitoring/
Gateway->>LB: Получение распределения камер и мониторинга
LB->>Node: Сбор состояния узлов и камер
LB-->>UI: Список NodeBalancerInfoWithMonitoring
UI->>Gateway: GET /api/inference/load-balancer/video/camera/{camera_id}.m3u8
Gateway->>LB: Запрос HLS-плейлиста камеры
LB-->>UI: m3u8 playlist
UI->>Gateway: GET /api/inference/load-balancer/video/camera/{camera_id}/{chank_name}
Gateway->>LB: Запрос HLS-чанка
LB-->>UI: HLS chunk
UI->>Gateway: POST /api/inference/load-balancer/webrtc/
Gateway->>LB: Передача WebRTC offer
LB-->>UI: WebRTC answer
Исходный Mermaid-код схемы: ПА-MER-016. 3.18.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Cameras licensing, Info, Видео, Webrtc.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.18.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Видео |
4 |
Получение видеопотоков и видеофрагментов. |
| Info |
2 |
Операции группы, выделенной по URL-префиксу. |
| Cameras licensing |
1 |
Операции группы, выделенной по URL-префиксу. |
| Webrtc |
1 |
Операции группы, выделенной по URL-префиксу. |
3.18.3. Реестр endpoint-ов load-balancer
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/inference/load-balancer/cameras-licensing/ |
Получение информации о лицензировании |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
CamerasLicensingInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/load-balancer/info/ |
Получение информации о распределении камер |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/load-balancer/info/with_monitoring/ |
Получение информации о распределении камер вместе с их состоянием |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/load-balancer/video/camera/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с камеры |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/load-balancer/video/camera/{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с камеры |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/load-balancer/video/inference/inference-{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с инференса |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/inference/load-balancer/video/inference/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с инференса |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/inference/load-balancer/webrtc/ |
Обработка WebRTC-предложения |
не задана в OpenAPI |
query по OpenAPI при наличии |
application/json WebRTCOffer |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.18.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/inference/load-balancer/cameras-licensing/ |
Получение информации о лицензировании. Запрос: отсутствует; ответ: CamerasLicensingInfo. |
GET /api/inference/load-balancer/info/ |
Получение информации о распределении камер. Запрос: отсутствует; ответ: array. |
GET /api/inference/load-balancer/info/with_monitoring/ |
Получение информации о распределении камер вместе с их состоянием. Запрос: отсутствует; ответ: array. |
GET /api/inference/load-balancer/video/camera/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с камеры. Запрос: отсутствует; ответ: отсутствует. |
GET /api/inference/load-balancer/video/camera/{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с камеры. Запрос: отсутствует; ответ: отсутствует. |
GET /api/inference/load-balancer/video/inference/inference-{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с инференса. Запрос: отсутствует; ответ: отсутствует. |
3.18.5. Основные схемы данных load-balancer
| Схема |
Назначение |
Ключевые поля |
CamerasLicensingInfo |
Схема типа object. |
used_count, total_count, is_unlimited |
NodeBalancerInfo |
Схема типа object. |
cameras, docker_host, node_host, weight |
NodeBalancerInfoWithMonitoring |
Схема типа object. |
cameras, docker_host, node_host, node_info |
WebRTCOffer |
Схема типа object. |
camid, video_type, offer |
LBCameraInfo |
Схема типа object. |
id, name |
CameraStateWithMonitoring |
Схема типа object. |
state, system_info |
NodeInfo |
Схема типа object. |
cpu_number, gpu |
3.18.6. Проверка load-balancer
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/inference/load-balancer/cameras-licensing/ |
Возвращает успешный ответ заявленной схемы CamerasLicensingInfo. |
POST /api/inference/load-balancer/webrtc/ |
Принимает тело application/json WebRTCOffer и возвращает отсутствует. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
3.19. Подсистема monitoring
Подсистема monitoring предоставляет служебные данные мониторинга inference-контура. API используется для проверки состояния обработки.
Базовый префикс: /api/inference/monitoring/.
3.19.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: Monitoring.
3.19.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Monitoring |
1 |
Операции группы, выделенной по URL-префиксу. |
3.19.3. Реестр endpoint-ов monitoring
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/inference/monitoring/ |
Получение информации работе камер и инференса |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
array |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.19.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/inference/monitoring/ |
Получение информации работе камер и инференса. Запрос: отсутствует; ответ: array. |
3.19.5. Основные схемы данных monitoring
| Схема |
Назначение |
Ключевые поля |
CameraState |
Схема типа object. |
id, name, cam_id, failures_count, camera_heartbeat, inference_heartbeat |
CameraHeartbeat |
Схема типа object. |
fps, is_alive, resolution |
InferenceHeartbeat |
Схема типа object. |
fps, is_alive, gpu_id |
3.19.6. Проверка monitoring
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/inference/monitoring/ |
Возвращает успешный ответ заявленной схемы array<CameraState>. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
3.20. Подсистема consul
Подсистема consul отдаёт настройки UI, полученные через конфигурационный контур. API используется при загрузке клиентского приложения.
Базовый префикс: /api/consul/.
3.20.1. Основные сценарии
sequenceDiagram
participant UI as Клиентское приложение
participant Gateway as REST gateway
participant Consul as consul
UI->>Gateway: GET /api/consul/ui-config/
Gateway->>Consul: Чтение UI-конфигурации
Consul-->>UI: Конфигурация UI
UI->>Gateway: PUT /api/consul/ui-config/
Gateway->>Consul: Сохранение UI-конфигурации
Consul-->>UI: HTTP-статус
Исходный Mermaid-код схемы: ПА-MER-017. 3.20.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Ui config.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.20.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Ui config |
2 |
Операции группы, выделенной по URL-префиксу. |
3.20.3. Реестр endpoint-ов consul
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/consul/ui-config/ |
Прочитать конфиг для UI |
не задана в OpenAPI |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
PUT |
/api/consul/ui-config/ |
Записать конфиг для UI |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.20.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/consul/ui-config/ |
Прочитать конфиг для UI. Запрос: отсутствует; ответ: отсутствует. |
PUT /api/consul/ui-config/ |
Записать конфиг для UI. Запрос: отсутствует; ответ: отсутствует. |
3.20.5. Основные схемы данных consul
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
3.20.6. Проверка consul
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/consul/ui-config/ |
Возвращает успешный ответ заявленной схемы отсутствует. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
| Проверка изменяющих операций |
Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом. |
3.21. Подсистема s3
Подсистема s3 предоставляет прикладной доступ к объектному хранилищу. API используется для получения объектов, связанных с событиями и файлами.
Базовый префикс: /api/s3/.
3.21.1. Основные сценарии
- Клиент получает и обрабатывает данные групп: S3.
3.21.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| S3 |
1 |
Операции группы, выделенной по URL-префиксу. |
3.21.3. Реестр endpoint-ов s3
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/s3/{bucket}/{date}/{file_name} |
Получить изображение из MinIO |
не задана в OpenAPI |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.21.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/s3/{bucket}/{date}/{file_name} |
Получить изображение из MinIO. Запрос: отсутствует; ответ: отсутствует. |
3.21.5. Основные схемы данных s3
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
3.21.6. Проверка s3
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/s3/{bucket}/{date}/{file_name} |
Возвращает успешный ответ заявленной схемы отсутствует. |
| Проверка доступа через gateway |
Операции без security-схемы дополнительно проверяются через правила gateway и права доступа контура. |
3.22. Подсистема data-storage
Подсистема data-storage обслуживает хранение прикладных файлов и связанных метаданных. API используется для загрузки, получения и удаления файлов.
Базовый префикс: /api/data-storage/.
3.22.1. Основные сценарии
sequenceDiagram
participant Client as Клиент API
participant Gateway as REST gateway
participant Storage as data-storage
participant ObjectStore as MinIO / DataTemporaryStorage
Client->>Gateway: POST /api/data-storage/image-dts/
Gateway->>Storage: Загрузка изображения
Storage->>ObjectStore: Сохранение изображения
Storage-->>Client: DSDataInfo
Client->>Gateway: GET /api/data-storage/image-dts/?uuid=...
Gateway->>Storage: Получение изображения по uuid
Storage->>ObjectStore: Чтение изображения
Storage-->>Client: Изображение
Client->>Gateway: POST /api/data-storage/minio/
Gateway->>Storage: Загрузка файла в объектное хранилище
Storage->>ObjectStore: Сохранение файла
Storage-->>Client: HTTP-статус
Исходный Mermaid-код схемы: ПА-MER-018. 3.22.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Временное хранилище изображений, MinIO.
- Изменяющие операции выполняются на контрольных сущностях с последующей проверкой результата чтением.
3.22.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Временное хранилище изображений |
2 |
Загрузка и получение изображений из DataTemporaryStorage. |
| MinIO |
1 |
Загрузка файла в объектное хранилище MinIO. |
3.22.3. Реестр endpoint-ов data-storage
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/data-storage/image-dts/ |
Получить изображение из DataTemporaryStorage |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/data-storage/image-dts/ |
Загрузить изображение в DataTemporaryStorage |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
multipart/form-data Body_image_dts_upload_file_api_data_storage_image_dts__post |
DSDataInfo |
400/401/403/404/409/422/5xx по схеме endpoint-а |
POST |
/api/data-storage/minio/ |
Загрузить файл в MinIO |
OAuth2PasswordBearer |
query по OpenAPI при наличии |
multipart/form-data Body_minio_upload_file_api_data_storage_minio__post |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.22.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/data-storage/image-dts/ |
Получить изображение из DataTemporaryStorage. Запрос: отсутствует; ответ: отсутствует. |
POST /api/data-storage/image-dts/ |
Загрузить изображение в DataTemporaryStorage. Запрос: multipart/form-data Body_image_dts_upload_file_api_data_storage_image_dts__post; ответ: DSDataInfo. |
POST /api/data-storage/minio/ |
Загрузить файл в MinIO. Запрос: multipart/form-data Body_minio_upload_file_api_data_storage_minio__post; ответ: отсутствует. |
3.22.5. Основные схемы данных data-storage
| Схема |
Назначение |
Ключевые поля |
Body_image_dts_upload_file_api_data_storage_image_dts__post |
Схема типа object. |
image |
DSDataInfo |
Схема типа object. |
uuid |
Body_minio_upload_file_api_data_storage_minio__post |
Схема типа object. |
file |
3.22.6. Проверка data-storage
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/data-storage/image-dts/ |
Возвращает успешный ответ заявленной схемы отсутствует. |
POST /api/data-storage/image-dts/ |
Принимает тело multipart/form-data Body_image_dts_upload_file_api_data_storage_image_dts__post и возвращает DSDataInfo. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |
Подсистема mediaserver отдаёт HLS-плейлисты и чанки видео для камер, инференса и тепловизионных потоков. API используется браузером и видеокомпонентами интерфейса.
Базовый префикс: /api/thermal/mediaserver/video/.
3.23.1. Основные сценарии
sequenceDiagram
participant Player as Видеоплеер
participant Gateway as REST gateway
participant Media as mediaserver
Player->>Gateway: GET /api/thermal/mediaserver/video/camera/{camera_id}.m3u8
Gateway->>Media: Запрос HLS-плейлиста камеры
Media-->>Player: m3u8 playlist
loop Воспроизведение потока
Player->>Gateway: GET /api/thermal/mediaserver/video/camera/{camera_id}/{chank_name}
Gateway->>Media: Запрос HLS-чанка
Media-->>Player: HLS chunk
end
Player->>Gateway: GET /api/thermal/mediaserver/video/inference/{camera_id}.m3u8
Gateway->>Media: Запрос плейлиста инференс-потока
Media-->>Player: m3u8 playlist
Исходный Mermaid-код схемы: ПА-MER-019. 3.23.1. Основные сценарии.
- Клиент получает и обрабатывает данные групп: Камеры, Инференс-поток, Тепловизионный поток.
3.23.2. Группы endpoint-ов
| Группа |
Endpoint-ы |
Назначение |
| Камеры |
2 |
Операции с камерами и их представлениями. |
| Инференс-поток |
2 |
Получение HLS-плейлистов и чанков обработанного видеопотока. |
| Тепловизионный поток |
2 |
Получение HLS-плейлистов и чанков тепловизионного видеопотока. |
| Метод |
Путь |
Назначение |
Авторизация |
Параметры |
Тело запроса |
Успешный ответ |
Типовые ошибки |
GET |
/api/thermal/mediaserver/video/camera/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с камеры |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/thermal/mediaserver/video/camera/{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с камеры |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/thermal/mediaserver/video/inference/inference-{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с камеры |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/thermal/mediaserver/video/inference/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с камеры |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/thermal/mediaserver/video/thermal/thermal-{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с инференса |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
GET |
/api/thermal/mediaserver/video/thermal/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с инференса |
OAuth2PasswordBearer |
path-параметры; query по OpenAPI |
отсутствует |
отсутствует |
400/401/403/404/409/422/5xx по схеме endpoint-а |
3.23.4. Детализация ключевых endpoint-ов
| Endpoint |
Роль в сценариях |
GET /api/thermal/mediaserver/video/camera/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с камеры. Запрос: отсутствует; ответ: отсутствует. |
GET /api/thermal/mediaserver/video/camera/{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с камеры. Запрос: отсутствует; ответ: отсутствует. |
GET /api/thermal/mediaserver/video/inference/inference-{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с камеры. Запрос: отсутствует; ответ: отсутствует. |
GET /api/thermal/mediaserver/video/inference/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с камеры. Запрос: отсутствует; ответ: отсутствует. |
GET /api/thermal/mediaserver/video/thermal/thermal-{camera_id}/{chank_name} |
Получение чанка видео для видеопотока с инференса. Запрос: отсутствует; ответ: отсутствует. |
GET /api/thermal/mediaserver/video/thermal/{camera_id}.m3u8 |
Получение плейлиста HLS для видеопотока с инференса. Запрос: отсутствует; ответ: отсутствует. |
OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.
Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.
| Проверка |
Ожидаемый результат |
GET /api/thermal/mediaserver/video/camera/{camera_id}.m3u8 |
Возвращает успешный ответ заявленной схемы отсутствует. |
| Проверка авторизации |
Защищённые операции выполняются только при передаче действующего Bearer-токена. |