- Главная
- Интеграции
- Webhook
Подписанные webhook: полный инцидент в JSON
Tenium отправляет на ваш адрес JSON, когда инцидент открывается, подтверждается или закрывается, а также когда внимания требует SSL-сертификат или heartbeat. Каждый запрос подписан HMAC-SHA256, так что ваш endpoint может убедиться, что он от нас.
Простой
POST https://example.com/tenium-hook Content-Type: application/json X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
"event": "down",
"sentAt": "2026-01-19T09:39:14Z",
"account": {
"id": "0f8e…",
"name": "Your Studio"
},
"clientWorkspace": {
"id": "9a8b…",
"name": "Client A"
},
"monitor": {
"id": "a3f1…",
"name": "Client A shop",
"type": "http",
"url": "https://shop.clienta.com"
},
"incident": {
"id": "e5b4…",
"status": "open",
"startedAt": "2026-01-19T09:35:02Z",
"resolvedAt": null,
"durationSec": null,
"summary": "HTTP 503 Service Unavailable",
"confirmedBy": [
"fra",
"lon",
"nyc"
],
"url": "https://app.tenium.app/incidents/e5b4…"
}
} Восстановлено
POST https://example.com/tenium-hook Content-Type: application/json X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
"event": "up",
"sentAt": "2026-01-19T09:39:14Z",
"account": {
"id": "0f8e…",
"name": "Your Studio"
},
"clientWorkspace": {
"id": "9a8b…",
"name": "Client A"
},
"monitor": {
"id": "a3f1…",
"name": "Client A shop",
"type": "http",
"url": "https://shop.clienta.com"
},
"incident": {
"id": "e5b4…",
"status": "resolved",
"startedAt": "2026-01-19T09:35:02Z",
"resolvedAt": "2026-01-19T09:39:14Z",
"durationSec": 252,
"summary": "4m 12s",
"confirmedBy": [
"fra",
"lon",
"nyc"
],
"url": "https://app.tenium.app/incidents/e5b4…"
}
} Срок SSL
POST https://example.com/tenium-hook Content-Type: application/json X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
"event": "ssl_expiry",
"sentAt": "2026-01-19T09:39:14Z",
"account": {
"id": "0f8e…",
"name": "Your Studio"
},
"clientWorkspace": {
"id": "9a8b…",
"name": "Client A"
},
"monitor": {
"id": "a3f1…",
"name": "Client A shop",
"type": "http",
"url": "https://shop.clienta.com"
},
"expiry": {
"kind": "ssl",
"daysLeft": 7,
"expiresAt": "2026-01-26T00:00:00Z"
}
} Пропущенный heartbeat
POST https://example.com/tenium-hook Content-Type: application/json X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
"event": "heartbeat_missed",
"sentAt": "2026-01-19T09:39:14Z",
"account": {
"id": "0f8e…",
"name": "Your Studio"
},
"clientWorkspace": {
"id": "9a8b…",
"name": "Client A"
},
"monitor": {
"id": "a3f1…",
"name": "Nightly backup",
"type": "heartbeat",
"url": "https://shop.clienta.com"
},
"incident": {
"id": "e5b4…",
"status": "open",
"startedAt": "2026-01-19T09:35:02Z",
"resolvedAt": null,
"durationSec": null,
"summary": "No ping received for 26 min",
"confirmedBy": [
"fra",
"lon",
"nyc"
],
"url": "https://app.tenium.app/incidents/e5b4…"
}
} Симуляция: эта страница ничего не отправляет.
Как настроить
- 1
Подготовьте endpoint
Создайте https-endpoint, принимающий JSON POST и отвечающий кодом 2xx. Всё остальное считается неудачной доставкой.
WebhookСохранено - 2
Вставьте адрес и сохраните секрет
Откройте «Интеграции», выберите Webhook, вставьте адрес и при необходимости задайте секрет для подписанных запросов. Нажмите «Отправить тест» — вы получите событие test.
Сначала сохраните контакт
- 3
Проверьте подпись, затем привяжите
Вычислите HMAC-SHA256 от сырого тела запроса с вашим секретом и сравните с заголовком. Затем привяжите контакт к мониторам.
Сначала сохраните контакт
Интерактивный макет, ничего не сохраняется.
Что есть в сообщении
- JSON с событием, монитором, учётной записью, клиентом и инцидентом
- События: down, blocked, up, degraded, heartbeat_missed, ssl_expiry, domain_expiry, test
- Заголовок X-Tenium-Signature, который можно проверить
Текст оповещений формирует Tenium, и пока он на английском.
Тариф и лимиты
- Доступно с тарифа Pro ($29 в месяц)
- Входит вPro, Agency
- Исходящих оповещений в час на вашем тарифеFree 40 · Starter 300 · Pro 1 500 · Agency 6 000
- Задержка перед отправкойДоступна на Pro и Agency
Стоит знать
- Полный список полей и пример проверки на Node: документация, API webhook payloads.
- Неудачные доставки (не 2xx, 429, сетевые ошибки или таймаут 10 с) повторяются до 3 попыток всего с интервалом 30 секунд.
Как работают оповещения и эскалация
Контакты, маршрутизация, задержки и подтверждение описаны в документации.
Вопросы о Webhook
Как проверить, что запрос пришёл от Tenium?
Прочитайте заголовок X-Tenium-Signature (t=время,v1=подпись), вычислите HMAC-SHA256 от времени, точки и сырого тела с вашим секретом, сравните за постоянное время и отклоняйте запросы старше пяти минут. В документации есть пример для Node.
Что будет, если мой endpoint недоступен?
Ответ не 2xx, 429, сетевая ошибка или таймаут 10 секунд считаются неудачной доставкой и повторяются, до 3 попыток всего с интервалом 30 секунд.
Можно ли открывать тикеты или перезапускать сервер?
Да, для этого он и нужен: в данных есть всё для создания тикета, сообщения во внутренний инструмент или запуска скрипта. Zapier (Agency) делает то же без кода.
Какой тариф включает Webhook?
Webhook доступен с тарифа Pro ($29 в месяц) и на всех более высоких.
Как проверить оповещения Webhook?
Откройте «Настройки», «Контакты» и нажмите «Отправить тест» у контакта. За несколько секунд придёт сообщение с пометкой TEST. Сначала добавьте хотя бы один монитор, потому что оповещения отправляет проверяющий сервер.
Можно ли отложить Webhook, пока никто не отреагировал?
Да, на Pro и Agency. Задайте контакту задержку в минутах: он сработает, только если инцидент ещё открыт, а подтверждение инцидента отменяет отправку.
Подключите первый канал за минуту
Начните бесплатно с e-mail, Discord и Google Chat. 30 мониторов, без карты.