NexIP Developers · Webhooks
Подписанные Webhooks
Получайте события мониторинга и аккаунта в HTTPS JSON с HMAC-SHA256 подписью, защитой от повторной отправки и предсказуемой политикой повторов.
HTTPS JSON
HMAC-SHA256
Replay protection
Webhook API 1.2
События
NexIP может отправлять события мониторинга, безопасности и жизненного цикла аккаунта.
monitor.downmonitor.recoveredmonitor.degradedmonitor.ssl_warningmonitor.ssl_criticalaccount.password_changedaccount.api_key_createdaccount.plan_expiringaccount.plan_expiredaccount.limit_warningnotification.testФормат события
{
"id": "evt_...",
"event": "monitor.down",
"created_at": "2026-07-11T10:00:00Z",
"severity": "critical",
"data": {
"monitor_id": 123,
"status": "down"
}
}
Заголовки и подпись
X-NexIP-Event: monitor.down X-NexIP-Delivery: 456 X-NexIP-Timestamp: 1783754400 X-NexIP-Signature: sha256=...
Вычисляйте HMAC-SHA256 от timestamp + "." + точного исходного тела запроса. Метки времени старше пяти минут отклоняйте, а подписи сравнивайте в постоянное время.
Проверка подписи на PHP
<?php
$timestamp = $_SERVER['HTTP_X_NEXIP_TIMESTAMP'] ?? '';
$signature = $_SERVER['HTTP_X_NEXIP_SIGNATURE'] ?? '';
$body = file_get_contents('php://input');
if (abs(time() - (int)$timestamp) > 300) {
http_response_code(401);
exit;
}
$expected = 'sha256=' . hash_hmac(
'sha256',
$timestamp . '.' . $body,
$secret
);
if (!hash_equals($expected, $signature)) {
http_response_code(401);
exit;
}
http_response_code(204);
Проверка подписи на Node.js
const signed =
`${request.headers['x-nexip-timestamp']}.${rawBody}`;
const expected =
'sha256=' +
createHmac('sha256', secret)
.update(signed)
.digest('hex');
const valid = timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
Политика доставки
2xx
Событие считается успешно обработанным.
408 / 425
Временная ошибка — доставка будет повторена.
429 / 5xx
Повторяемые ошибки. Для 429 учитывается Retry-After.
400–404
Для постоянных клиентских ошибок повторов нет.
Редиректы не выполняются. Это помогает исключить перенаправление webhook-запросов в приватные сети.
Тестовое событие
notification.test
содержит:
{
"test": true
}