Перейти к содержанию

Приложение. 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-токена.
Проверка изменяющих операций Изменение или удаление выполняется на контрольных сущностях; после операции результат сверяется чтением или статусным ответом.

3.4. Подсистема comments

Подсистема 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-префиксу.

3.4.3. Реестр endpoint-ов comments

Метод Путь Назначение Авторизация Параметры Тело запроса Успешный ответ Типовые ошибки
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.

3.4.5. Основные схемы данных comments

Схема Назначение Ключевые поля
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

3.4.6. Проверка comments

Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, 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-токена.

3.23. Подсистема mediaserver

Подсистема 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-плейлистов и чанков тепловизионного видеопотока.

3.23.3. Реестр endpoint-ов mediaserver

Метод Путь Назначение Авторизация Параметры Тело запроса Успешный ответ Типовые ошибки
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 для видеопотока с инференса. Запрос: отсутствует; ответ: отсутствует.

3.23.5. Основные схемы данных mediaserver

OpenAPI не задаёт отдельные прикладные схемы данных для операций подсистемы; ответ определяется HTTP-статусом, бинарным содержимым или параметрами запроса.

3.23.6. Проверка mediaserver

Проверка выполняется в эксплуатационном контуре без публикации логинов, паролей, JWT и постоянных токенов в документации.

Проверка Ожидаемый результат
GET /api/thermal/mediaserver/video/camera/{camera_id}.m3u8 Возвращает успешный ответ заявленной схемы отсутствует.
Проверка авторизации Защищённые операции выполняются только при передаче действующего Bearer-токена.