External API: мониторинг состояния системы
Endpoint мониторинга External API сообщает о состоянии интеграций UnSpot — дисплеев, вебхуков, календарных подключений и синхронизации пользователей — чтобы вы могли встроить UnSpot в свой мониторинг (Zabbix, Grafana, Nagios и т.п.).
Аутентификация
Создайте API-подключение типа Monitoring в разделе Администрирование > Интеграции > External API и скопируйте токен. Создать и скопировать токен может пользователь с ролью Владелец или Администратор интеграций (Настройки > Интеграции > Настройки API, блок «API мониторинга состояния системы»). Передавайте его в каждом запросе:
Authorization: Bearer <token>HTTPЗапросы без действительного токена возвращают 401. При превышении лимита запросов API возвращает 429 с заголовком Retry-After.
Получение данных мониторинга — GET /api/external/v1/monitoring[/{category}]
Без категории endpoint возвращает все разделы, с категорией — только её.
| Категория | Что сообщает |
|---|---|
displays | Каждый дисплей: id, name, status |
webhooks | Счётчики: total, online, failed, disabled |
calendars | Счётчики календарных подключений переговорных: total, online, offline |
user-sync | lastSyncDate — время последней синхронизации каталога (null, если не настроена) |
system | Только для on-premise: статус redis, database, filesystem, smtp и длины очередей queue |
Пример запроса
curl -H "Authorization: Bearer $TOKEN" \
https://acme.unspot.ru/api/external/v1/monitoring/webhooksBashПример ответа — 200
{
"message": "OK",
"body": {
"displays": [ { "id": "b7e1...-uuid", "name": "Дисплей переговорной 4.1", "status": "online" } ],
"webhooks": { "total": 5, "online": 4, "failed": 1, "disabled": 0 },
"calendars": { "total": 12, "online": 12, "offline": 0 },
"userSync": { "lastSyncDate": "2026-07-08T03:00:00+00:00" }
}
}JSONДля on-premise-установок раздел system дополнительно сообщает состояние инфраструктуры:
{
"message": "OK",
"body": {
"system": {
"redis": "online",
"database": "online",
"filesystem": "online",
"smtp": "online",
"queue": [ { "name": "webhooks", "messages": 0 }, { "name": "notification", "messages": 3 } ]
}
}
}JSONОшибки и лимиты
Все ответы обёрнуты в конверт {"message": ..., "body": ...}; тело ошибки:
{ "message": "Too Many Requests", "errors": [] }JSON- 400 — неизвестная категория (допустимы: displays, webhooks, calendars, user-sync, system).
- 403 Forbidden — недостаточно прав доступа.
- 401 — неверный токен, либо
System monitoring is only available for on-premise environmentпри запросеsystemв облаке. - 429 — чаще одного запроса в 30 секунд.