Формат webhook-уведомлений
Webhook-уведомления позволяют интегрировать UpRadar с любой внешней системой: Slack, PagerDuty, собственным сервером обработки инцидентов или корпоративным чат-ботом. При каждом событии инцидента UpRadar отправляет HTTP POST-запрос на указанный вами URL с JSON-телом в стандартизированном формате.
Формат payload
Пример тела запроса для события incident_down:
{
"event": "incident_down",
"monitor": {
"id": 42,
"name": "API Production",
"url": "https://api.example.com/health",
"type": "http"
},
"incident": {
"id": 101,
"startedAt": "2024-01-15T10:30:00Z",
"reason": "HTTP 503"
},
"project_id": 5,
"timestamp": "2024-01-15T10:30:05Z"
} Пример тела запроса для события incident_up (добавляется поле resolvedAt):
{
"event": "incident_up",
"monitor": {
"id": 42,
"name": "API Production",
"url": "https://api.example.com/health",
"type": "http"
},
"incident": {
"id": 101,
"startedAt": "2024-01-15T10:30:00Z",
"resolvedAt": "2024-01-15T11:05:33Z",
"reason": "HTTP 503"
},
"project_id": 5,
"timestamp": "2024-01-15T11:05:38Z"
}Описание полей
event- Тип события:
incident_down(монитор упал) илиincident_up(монитор восстановлен). monitor.id- Уникальный числовой идентификатор монитора в UpRadar.
monitor.type- Тип монитора:
http,sslилиdomain. incident.startedAt- Время начала инцидента в формате ISO 8601 (UTC).
incident.resolvedAt- Время разрешения инцидента (только в событии
incident_up). incident.reason- Причина сбоя: HTTP-статус, текст ошибки или тип таймаута.
project_id- Числовой идентификатор проекта, к которому относится монитор.
timestamp- Время отправки webhook-запроса в формате ISO 8601 (UTC).
Заголовки запроса
Каждый webhook-запрос отправляется со следующими HTTP-заголовками:
Content-Type: application/json User-Agent: UpRadar/1.0
Повторные попытки
UpRadar выполняет однократную попытку доставки с таймаутом 5 секунд. Если ваш сервер не ответил в течение этого времени или вернул код ответа, отличный от 2xx, событие фиксируется в журнале ошибок webhook-интеграции в личном кабинете.
Идемпотентность. Поскольку запрос может быть доставлен несколько раз, рекомендуется использовать incident.id как уникальный ключ события на вашей стороне — это предотвратит дублирование обработки одного и того же инцидента.