ScanOps Docs

Вебхуки мониторинга

Мониторинг (платные тарифы) шлёт события на ваш URL. Канал-вебхук добавляется в кабинете как канал уведомлений: указываете URL и секрет.

Доставка

  • Метод: POST на ваш URL, тело — JSON.
  • Заголовок подписи: X-ScanOps-Signature: sha256=<hex>, где <hex> — HMAC-SHA256 от сырого тела запроса с ключом-секретом канала.
  • Приёмник должен ответить 2xx.

Тело события

{
  "event": "incident.down",          // тип события (см. таблицу)
  "delivery_id": "550e8400-…",       // уникальный id доставки
  "sent_at": "2026-08-14T10:00:00Z", // RFC 3339
  "host": "example.ru",
  "data": { /* поля, зависящие от типа события */ }
}

Типы событий (event)

eventКогда
incident.downСайт упал (открыт инцидент)
incident.recoveredСайт восстановился
report.changesВ ежедневном скане изменились находки
site.changesИзменилось наблюдаемое содержимое сайта
expiry.domainПриближается окончание регистрации домена
expiry.tlsПриближается окончание TLS-сертификата
testТестовое событие (кнопка проверки в кабинете)

data для expiry.*: { "days_left": 14, "expires_at": "…" }. Для report.changes/site.changes: массив changes с kind и summary. Для test: {}.

Проверка подписи

Всегда проверяйте X-ScanOps-Signature по сырому телу перед обработкой.

import hmac, hashlib

def valid(secret: str, raw_body: bytes, header: str) -> bool:
    expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, header)

Другие каналы

Кроме вебхука, уведомления доставляются на email всем участникам команды и в Telegram. Вебхук — для интеграции с вашими системами (Slack, дежурства, тикеты).