# התראות Webhook

Source: https://instatus.com/help/he/status-page/notifications/webhook

## הוספת מנוי webhook

התחברו ל‑Instatus מ[instatus.com/login](https://dashboard.instatus.com/login) ובחרו את דף הסטטוס שלכם.

עברו אל **מנויים** ואז אל **Webhook**.

לחצו על **הוספת מנוי webhook**,

יופיע טופס חדש שבו אפשר להזין:

- כתובת Webhook
- כתובת אימייל

![מנוי Webhook](https://instatus.com/help/notification/webhook1.png)

אנחנו נשלח בקשות לכתובת שלכם לפי ה[פורמט](https://instatus.com/help/he/webhooks) הזה,
ואימייל יישלח לכתובת האימייל שציינתם כשתהיה תקלה עם הכתובת.

אפשר לתת שם למנוי ה‑webhook שלכם על ידי לחיצה עליו והקלדת שם בטופס. אפשר גם למחוק את המנוי הזה בלחיצה על ביטול מנוי.

## אימות מטען ה‑Webhook

**מומלץ מאוד לאמת את מטען ה‑webhook בנקודת הקצה שלכם.**

אנחנו חותמים על מטעני webhook עם סוד וכוללים את החתימה בכותרת בשם `x-instatus-webhook-signature`. החתימה הזו מאפשרת לכם לאמת שה‑webhook הגיע מ‑Instatus.

### שלבים לאימות ה‑Webhook

1. שלפו את **סוד ה‑Webhook** שלכם מהדאשבורד (אפשר למצוא אותו בעת עריכה או יצירה של webhook, ואפשר גם להתאים אותו שם).

![סוד ה‑Webhook](https://instatus.com/help/notification/webhook-secret-example.png)

2. צרו נקודת קצה חדשה בשרת שלכם שתקבל את ה‑webhook.

3. השוו את החתימה לחתימה שנוצרה בשרת שלכם כדי לאמת.

4. אם החתימות תואמות, עבדו את ה‑webhook.

#### דוגמת קוד

```javascript
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'))
```

### למה האימות חשוב

- **מבטיח מקוריות**: מוודא שה‑webhook מגיע מהפלטפורמה שלנו.
- **מונע שינויים**: מזהה שינויים במטען.
- **משפר אבטחה**: מגן מפני התקפות שחזור וגישה לא מורשית.

- [התראות ב‑X](https://instatus.com/help/he/status-page/notifications/x): למדו איך לשלוח התראות ב‑X.
