Skip to content

Архитектура API и соглашения маршрутизации ​

Подсистема API в RUSEON Core построена на базе веб-фреймворка Gin и сервера gRPC (internal/api/router.go).


1. Пространства маршрутов API ​

Эндпоинты сгруппированы по функциональным пространствам:

Пространство путейАвторизацияНазначение
/api/*JWT Bearer / Публичный (/api/login)Управление камерами, пользователями, тегами, папками, бэкапом
/stream/*Публичный или токен стрима (60с)Живая раздача (WHEP WebRTC, WebCodecs WebSocket, HLS)
/hls/*Публичный / ТокенВоспроизведение архива (archive.m3u8, segment.ts)
/models/*ПубличныйХаб загрузки и кеширования ONNX AI-моделей (GET /models/:filename)
/livez, /readyzПубличныйKubernetes-пробы жизнеспособности и готовности
/metricsПубличный / ScraperЭкспортер метрик Prometheus

2. Стандартные ответы JSON и ошибки ​

Ответы возвращаются в виде структурированных JSON-объектов.

Успешная авторизация (POST /api/login): ​

json
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Ошибка: ​

json
{
  "error": "camera not found"
}

HTTP-статусы: ​

  • 200 OK: Запрос успешно выполнен.
  • 201 Created: Создана сущность или инициализирована сессия WHEP.
  • 400 Bad Request: Некорректный JSON или параметры запроса.
  • 401 Unauthorized: Отсутствует или истек токен JWT / токен стрима.
  • 403 Forbidden: Недостаточно прав роли RBAC.
  • 404 Not Found: Камера, пользователь или файл архива не найдены.
  • 500 Internal Server Error: Ошибка файловой системы или сервера.

3. Стриминг логов в реальном времени (SSE) ​

Подписка на логи ядра через Server-Sent Events (SSE):

http
GET /api/logs/stream
Authorization: Bearer <JWT_TOKEN>
Accept: text/event-stream

Связанная документация ​

Released under the MIT License.