قالب وبهوکها
اگر از طریق وبهوک مشترک شده باشید، وبهوکها را در این قالبها دریافت میکنید:
وقتی حادثهای اضافه یا بهروزرسانی میشود:
{"meta": {"unsubscribe": "","documentation": ""},"page": {"id": "","status_indicator": "","status_description": "","url": ""},"incident": {"backfilled": false,"created_at": "","impact": "","name": "","resolved_at": "","status": "","updated_at": "","id": "","url": "","incident_updates": [{"id": "","incident_id": "","body": "","status": "","created_at": "","updated_at": ""}]}}
وقتی تعمیراتی اضافه یا بهروزرسانی میشود:
{"meta": {"unsubscribe": "","documentation": ""},"page": {"id": "","status_indicator": "","status_description": "","url": ""},"maintenance": {"backfilled": false,"created_at": "","impact": "","name": "","resolved_at": "","status": "","updated_at": "","id": "","url": "","duration": "","maintenance_updates": [{"id": "","maintenance_id": "","body": "","status": "","created_at": "","updated_at": ""}]}}
وقتی جزئی بهروزرسانی میشود:
{"meta": {"unsubscribe": "https://<status-page-domain>/unsubscribe?id=${subscriber.id}&token=${subscriber.unsubscribeToken}","documentation": ""},"page": {"id": "","status_indicator": "","status_description": "","url": ""},"component_update": {"created_at": "","new_status": "","component_id": ""},"component": {"created_at": "","id": "","name": "","status": ""}}
وضعیتهای ممکن برای صفحه وضعیت:
UPHASISSUESUNDERMAINTENANCE
وضعیتهای ممکن برای اجزا:
OPERATIONALUNDERMAINTENANCEDEGRADEDPERFORMANCEPARTIALOUTAGEMAJOROUTAGE
وضعیتهای ممکن برای حادثه:
INVESTIGATINGIDENTIFIEDMONITORINGRESOLVED
وضعیتهای ممکن برای تعمیرات:
NOTSTARTEDYETINPROGRESSCOMPLETED
راستیآزمایی محتوای وبهوک
اکیداً توصیه میشود محتوای وبهوک را در نقطه پایانی وبهوک اعتبارسنجی کنید.
ما محتوای وبهوک را با یک کلید مخفی امضا میکنیم و امضا را در هدری با نام x-instatus-webhook-signature قرار میدهیم. این امضا به شما امکان میدهد مطمئن شوید وبهوک از Instatus آمده است.
گامهای راستیآزمایی وبهوک
۱. کلید مخفی وبهوک را که هنگام اشتراک در وبهوک ساختید، ذخیره کنید (آن را هنگام اشتراک در یک صفحه از طریق وبهوک میبینید و همانجا هم میتوانید سفارشیاش کنید).

۲. روی سرور خود یک نقطه پایانی جدید بسازید که وبهوک را دریافت کند.
۳. امضا را با امضایی که سرور شما تولید میکند مقایسه کنید تا اعتبارسنجی شود.
۴. اگر امضاها یکسان بودند، وبهوک را پردازش کنید.
نمونه کد
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.bodyconst 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 webhookres.status(200).send('Webhook received')})app.listen(3000, () => console.log('Server running on port 3000'))
چرا راستیآزمایی مهم است
- اصالت را تضمین میکند: مطمئن میشوید وبهوک از پلتفرم ما آمده است.
- از دستکاری جلوگیری میکند: تغییرات در محتوا را تشخیص میدهد.
- امنیت را بالا میبرد: در برابر حملات بازپخش و دسترسی غیرمجاز محافظت میکند.