Сповіщення через вебхук

Додайте підписника на вебхук

Увійдіть в Instatus на instatus.com/login і виберіть свою сторінку статусу.

Перейдіть до розділу Підписники, а потім до Вебхук.

Натисніть Додати підписника на вебхук,

Зʼявиться нова форма, у якій можна вказати:

  • URL вебхука
  • Адресу email
Підписник на вебхук

Ми надсилатимемо запити на ваш URL у цьому форматі, а на вказану адресу email надійде лист, якщо з URL виникне проблема.

Підписнику на вебхук можна дати назву: натисніть на нього й введіть назву у формі. Тут же можна видалити підписника, натиснувши «Відписатися».

Перевірка корисного навантаження вебхука

Наполегливо рекомендуємо перевіряти корисне навантаження вебхука на своєму ендпоїнті.

Ми підписуємо корисне навантаження вебхука секретом і додаємо підпис у заголовок x-instatus-webhook-signature. Цей підпис дає змогу переконатися, що вебхук надійшов від Instatus.

Кроки перевірки вебхука

  1. Отримайте свій секрет вебхука в панелі (його видно під час створення чи редагування вебхука; там само його можна змінити).
Секрет вебхука
  1. Створіть на своєму сервері новий ендпоїнт, який прийматиме вебхук.

  2. Для перевірки порівняйте отриманий підпис із підписом, згенерованим на вашому сервері.

  3. Якщо підписи збігаються, обробіть вебхук.

Приклад коду

import crypto from 'crypto'
import express from 'express'
const app = express()
app.use(express.json())
const WEBHOOK_SECRET = 'your-webhook-secret'
function isVerifiedPayload(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret)
const digest = hmac.update(JSON.stringify(payload)).digest('hex')
return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature))
}
app.post('/endpoint/to/webhook', (req, res) => {
const payload = req.body
const signature = req.header('x-instatus-webhook-signature')
if (!signature) {
return res.status(400).send('Signature missing')
}
if (!isVerifiedPayload(payload, signature, WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature')
}
// Process the valid webhook
res.status(200).send('Webhook received')
})
app.listen(3000, () => console.log('Server running on port 3000'))

Чому перевірка важлива

  • Підтверджує справжність: гарантує, що вебхук надійшов саме з нашої платформи.
  • Запобігає підробці: виявляє зміни в корисному навантаженні.
  • Підвищує безпеку: захищає від атак повторного відтворення та несанкціонованого доступу.