صيغة الويب هوك
فيما يلي صيغة رسائل الويب هوك التي ستصلك إذا اشتركت عبر الويب هوك:
عند إضافة حادثة أو تحديثها:
{"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'))
لماذا يهم التحقق
- يضمن الأصالة: يؤكد أن الويب هوك صادر عن منصتنا.
- يمنع التلاعب: يكشف أي تغيير في الحمولة.
- يعزّز الأمان: يحمي من هجمات إعادة الإرسال والوصول غير المصرّح به.