- Главная
- Документация
- Вебхуки
Webhook-уведомления
Настройка эндпоинта, подпись запросов, структура и примеры тел запросов для всех типов уведомлений
Вебхук в Statuser - это HTTP POST-запрос на ваш URL-эндпоинт при наступлении событий мониторинга и аккаунта.
Этот канал удобно использовать для интеграции с вашими системами: корпоративные чаты, внутренние сервис-дески, SIEM, внутренние панели и собственные автоматизации.
На аккаунт можно добавить до 20 вебхуков. Для каждого вебхука можно отдельно выбрать, какие типы уведомлений отправлять.
Как работает доставка
- Statuser отправляет
POSTcapplication/jsonна URL вебхука. - Успешной доставкой считается только ответ с кодом
2xx. - Таймаут запроса: 7 секунд.
- Редиректы не поддерживаются (
3xxсчитается ошибкой доставки). - Если у эндпоинта задан секрет, запрос подписывается заголовком
X-Statuser-Signature. - Для вебхука нужен публичный URL.
Заголовки запроса
Каждый вебхук-запрос содержит следующие заголовки:
Content-Type: application/json
User-Agent: Mozilla/5.0 (compatible; Statuser Webhook; https://statuser.cloud/)
X-Statuser-Event: service_unavailable
X-Statuser-Subscription-Type: service_alerts
X-Statuser-Signature: sha256=<hex> // только если указан secretГде:
X-Statuser-Event- конкретный тип события (notification_type).X-Statuser-Subscription-Type- группа уведомлений (например,service_alerts,dns_alerts,billing_alerts).X-Statuser-Signature- HMAC-подпись тела запроса.
Подпись секрета (HMAC SHA-256)
Если у вебхука заполнен секрет, Statuser:
- Берет JSON body в строковом виде;
- Считает HMAC SHA-256 по вашему
secret; - Отправляет результат в виде
sha256=<hex>вX-Statuser-Signature.
Проверка подписи на вашей стороне (Node.js):
import crypto from 'crypto';
function verifyStatuserSignature(
rawBody: string,
secret: string,
header?: string
) {
if (!header?.startsWith('sha256=')) return false;
const received = header.slice('sha256='.length);
const expected = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(received, 'hex'),
Buffer.from(expected, 'hex')
);
}Формат payload
Во всех вебхук-событиях есть базовые поля:
{
"notification_type": "service_unavailable",
"subscription_type": "service_alerts",
"created_at": "2026-02-16T10:21:30.000Z",
"account_id": 42
}Дополнительные поля зависят от notification_type.
Контракты body по типам уведомлений
Ниже приведены примеры для каждого типа уведомлений, доступного в вебхуках.