Публичный API

Статус и происшествия

Два запроса: актуальное состояние анализа и журнал тревог с временем.

https://vapi.i-crm.club

Авторизация

Заголовок X-API-Token или параметр ?token=. Токен задаётся в config/analytics.jsonapi_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

Актуальное состояние: профиль, запущен ли анализ, счётчики, последний кадр анализа.

ПолеОписание
runningtrue — анализ сейчас работает
profileАктивная площадка: id, name, host
stats.framesСколько кадров обработано с запуска
stats.alertsСколько тревог зафиксировано
stats.started_atUnix-время старта анализа (или 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

Журнал происшествий — когда сработал триггер и что именно.

ПараметрГдеОписание
limitqueryСколько последних событий (1–200, по умолчанию 50)
sincequeryUnix timestamp — только события не раньше этого времени
X-API-TokenheaderТокен доступа
Поле событияОписание
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.