ingredient.created · updated · deleted ✓ CanlıMalzeme/stok kataloğu değiştiğinde async webhook gelir. Envanter senkronu için: ilk yükleme ingredients/list, sonrası bu event'ler.
| Event | Tetik |
|---|---|
| ingredient.created | Yeni malzeme eklendiğinde |
| ingredient.updated | Malzeme düzenlendiğinde (güncel hâl) |
| ingredient.deleted | Malzeme silindiğinde (silinen malzemenin son hâli) |
Üçü de async webhook. Şekil aynı, yalnız type farklı.
events: ["ingredient.created", "ingredient.updated", "ingredient.deleted"] + events:subscribe.data boş gelir.POST {webhookUrl}
Content-Type: application/json
X-Restomenum-Signature: t=<unixSec>,v1=<HMAC_SHA256(webhookSecret, "<t>.<rawBody>")>
X-Restomenum-Event: ingredient.created | ingredient.updated | ingredient.deleted
X-Restomenum-Delivery: <deliveryId>"<t>.<rawBody>"), ±5 dk replay — bkz. imza şeması.X-Restomenum-Event: <type>, X-Restomenum-Delivery: <id>.id tekildir (at-least-once → dedup, 200 dön).2xx → işlendi. 5xx/timeout → retry → dead-letter.{
"id": "evt_<uuid>",
"type": "ingredient.created",
"version": "1",
"tenantId": "<tenantId>",
"occurredAt": 1781000000000,
"data": { "id": "ab-12", "title": "Domates", "unit": "kg", "stock": 42, "alert": 5, "tax": 1 }
}ingredient.updated güncel malzemeyi; ingredient.deleted silinen malzemenin son hâlini taşır — yalnız type farklı.
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| id | string | ✓ | Malzeme id'si (ingredients/list ile aynı). |
| title | string | ✓ | Malzeme adı. |
| unit | string | ✓ | Birim (kg, lt, adet…). |
| stock | number | ✓ | Toplam stok miktarı. |
| alert | number | – | Düşük-stok uyarı eşiği. |
| tax | number | – | Vergi/KDV oranı. |
ort (ortalama maliyet = ticari sır) ASLA dönmez; stocks (depo-bazlı kırılım) ve storages (iç depo yapısı) dönmez — yalnız toplam stock.