Публичный API
Статус и происшествия
Два запроса: актуальное состояние анализа и журнал тревог с временем.
https://vapi.i-crm.club
Авторизация
Заголовок X-API-Token или параметр ?token=.
Токен задаётся в config/analytics.json → api_token.
curl -H "X-API-Token: kamera-exchange-token" \ https://vapi.i-crm.club/api/v1/exchange/status
Как пользоваться
1. Статус
Периодически опрашивайте
/exchange/status — работает ли анализ, сколько кадров и тревог, последний результат.
2. Происшествия
Опрашивайте
/exchange/events. Поле ts — unix-время события. Параметр since — только новые после последнего опроса.
GET
/api/v1/exchange/status
Актуальное состояние: профиль, запущен ли анализ, счётчики, последний кадр анализа.
| Поле | Описание |
|---|---|
running | true — анализ сейчас работает |
profile | Активная площадка: id, name, host |
stats.frames | Сколько кадров обработано с запуска |
stats.alerts | Сколько тревог зафиксировано |
stats.started_at | Unix-время старта анализа (или null) |
last_analysis | Последний результат детекции (люди, движение, scores) |
config.criteria | Включённые триггеры: motion, fight, lying_person, black_dumbbells, audio |
{
"ok": true,
"profile": { "id": "office_a", "name": "Офис A", "host": "92.255.187.187" },
"running": true,
"stats": { "frames": 120, "alerts": 3, "started_at": 1722850000.5 },
"last_analysis": {
"time": "14:32:01",
"camera_id": "cam80",
"motion": true,
"people": 2
},
"config": {
"criteria": ["motion", "fight", "lying_person"],
"poll_interval_sec": 4,
"video_camera_id": "cam80"
}
}
GET
/api/v1/exchange/events
Журнал происшествий — когда сработал триггер и что именно.
| Параметр | Где | Описание |
|---|---|---|
limit | query | Сколько последних событий (1–200, по умолчанию 50) |
since | query | Unix timestamp — только события не раньше этого времени |
X-API-Token | header | Токен доступа |
| Поле события | Описание |
|---|---|
ts | Время происшествия (unix, секунды) — для сортировки и since |
time | Время для отображения (HH:MM:SS) |
type | Тип: motion, fight, lying_person, black_dumbbells, audio |
message | Текст тревоги |
confidence | Уверенность 0–1 |
snapshot | Имя снимка (если сохранён) |
{
"ok": true,
"count": 1,
"profile_id": "office_a",
"events": [
{
"ts": 1722851523.4,
"time": "14:32:03",
"type": "motion",
"message": "Движение в кадре",
"confidence": 0.87,
"snapshot": "alert_motion_1722851523.jpg"
}
]
}
Пример опроса
BASE="https://vapi.i-crm.club" TOKEN="kamera-exchange-token" # статус curl -s -H "X-API-Token: $TOKEN" "$BASE/api/v1/exchange/status" # все последние происшествия curl -s -H "X-API-Token: $TOKEN" "$BASE/api/v1/exchange/events?limit=50" # только новые (подставьте ts последнего события) curl -s -H "X-API-Token: $TOKEN" \ "$BASE/api/v1/exchange/events?since=1722851523"
Рекомендуемый интервал: статус каждые 10–30 с, события каждые 5–15 с с параметром since.