Перейти к содержимому
NexIP Developers · Webhooks

Подписанные Webhooks

Получайте события мониторинга и аккаунта в HTTPS JSON с HMAC-SHA256 подписью, защитой от повторной отправки и предсказуемой политикой повторов.

HTTPS JSON HMAC-SHA256 Replay protection Webhook API 1.2

События

NexIP может отправлять события мониторинга, безопасности и жизненного цикла аккаунта.

monitor.down
monitor.recovered
monitor.degraded
monitor.ssl_warning
monitor.ssl_critical
account.password_changed
account.api_key_created
account.plan_expiring
account.plan_expired
account.limit_warning
notification.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
}

Ресурсы разработчика