Skip to content

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..."
}

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

Released under the MIT License.