Malzeme Event'leri — 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 Kataloğu

Ne zaman tetiklenir?

EventTetik
ingredient.createdYeni malzeme eklendiğinde
ingredient.updatedMalzeme düzenlendiğinde (güncel hâl)
ingredient.deletedMalzeme silindiğinde (silinen malzemenin son hâli)

Üçü de async webhook. Şekil aynı, yalnız type farklı.

Abonelik

  • Manifest: events: ["ingredient.created", "ingredient.updated", "ingredient.deleted"] + events:subscribe.
  • ingredients:read (envanter; PII değil) — yoksa data boş gelir.

HTTP, imza & teslimat

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>
  • İmzayı ham gövde üzerinden doğrula ("<t>.<rawBody>"), ±5 dk replay — bkz. imza şeması.
  • Header'lar: X-Restomenum-Event: <type>, X-Restomenum-Delivery: <id>.
  • Idempotency: envelope id tekildir (at-least-once → dedup, 200 dön).
  • Ack: 2xx → işlendi. 5xx/timeout → retry → dead-letter.

Tam örnek payload

ingredient.created
{
  "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ı.

data alanları

AlanTipZorunluAçıklama
idstringMalzeme id'si (ingredients/list ile aynı).
titlestringMalzeme adı.
unitstringBirim (kg, lt, adet…).
stocknumberToplam stok miktarı.
alertnumberDüşük-stok uyarı eşiği.
taxnumberVergi/KDV oranı.

Sızıntı önlemi

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.
Envanter senkronu: ilk yüklemede ingredients/list (snapshot) + sonra bu event'ler (delta). İlgili: ingredients:read.