REST API: Эндпоинты управления камерами
API управления камерами позволяет настраивать параметры RTSP-потоков, политики записи архива, теги и считывать метрики потока в реальном времени.
1. Список камер (GET /api/cameras)
Возвращает список всех зарегистрированных камер и их текущее рабочее состояние.
- Требуемая роль:
viewer,operatorилиadmin
bash
curl -H "Authorization: Bearer <TOKEN>" http://localhost:8080/api/camerasОтвет (200 OK):
json
[
{
"id": "cam-01",
"url": "rtsp://admin:secret@192.168.1.100:554/live",
"record": true,
"retention_days": 7,
"tags": ["entrance", "outdoor"],
"folder_id": "building-a",
"comment": "Главный вход",
"sim_phone": "+1234567890",
"sim_iccid": "8901234567890123456",
"lazy_hls": false,
"transport": "tcp",
"token_auth": false,
"traffic_limit": 10737418240,
"disabled": false,
"state": "streaming",
"fps": 25.0,
"bitrate": 4096000,
"codec": "h264",
"resolution": "1920x1080",
"width": 1920,
"height": 1080,
"uptime_sec": 86400,
"traffic_used_mb": 1420.5
}
]2. Добавление камеры (POST /api/cameras)
- Требуемая роль:
operator,adminилиservice
bash
curl -X POST http://localhost:8080/api/cameras \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"id": "cam-dock",
"url": "rtsp://admin:pass@192.168.1.105:554/stream1",
"record": true,
"retention_days": 14,
"folder_id": "warehouse",
"tags": ["warehouse", "dock"],
"transport": "tcp",
"lazy_hls": false
}'Ответ (201 Created): Возвращает созданную камеру.
3. Обновление камеры (PUT /api/cameras/:id)
Обновляет настройки в BadgerDB и перезапускает захват без сбоя других камер.
bash
curl -X PUT http://localhost:8080/api/cameras/cam-dock \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"url": "rtsp://admin:newpass@192.168.1.105:554/high_res",
"record": true,
"retention_days": 30
}'Ответ (200 OK).
4. Удаление камеры (DELETE /api/cameras/:id)
- Требуемая роль:
operator,adminилиservice
bash
curl -X DELETE http://localhost:8080/api/cameras/cam-dock \
-H "Authorization: Bearer <TOKEN>"Ответ (200 OK): {"message": "camera deleted"}.
5. Генерация токена стрима (GET /api/cameras/:id/stream-token)
Создает короткоживущий (60 секунд) JWT токен для безопасного встраивания видеопотока в веб-плееры.
bash
curl -H "Authorization: Bearer <TOKEN>" http://localhost:8080/api/cameras/cam-01/stream-tokenОтвет (200 OK):
json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}