table.created ✓ Canlı

Dine-in bir masa GERÇEKTEN açıldığında (bir masaya ilk sipariş eklendiğinde) eklentinin webhookUrl'ine async (fire-and-forget) imzalı POST edilir. Açılış SONRASI bir bildirimdir.

← Event Kataloğu

Yalnız gerçek dine-in masa açılışında tetiklenir. Masa taşıma (move) veya paket→masa dönüşümünde tetiklenMEZ. Müşteri atanmış açılış paket sayılır → packet.created; müşterisiz masa açılışı → table.created.

Abonelik

HTTP, imza & teslimat

POST {webhookUrl}
Content-Type: application/json
X-Restomenum-Signature: t=<unixSec>,v1=<HMAC_SHA256(webhookSecret, "<t>.<rawBody>")>
X-Restomenum-Event: table.created
X-Restomenum-Delivery: <deliveryId>
  • İmzayı ham gövde üzerinden doğrula ("<t>.<rawBody>"), ±5 dk replay toleransı — bkz. imza şeması.
  • Header'lar: X-Restomenum-Event: table.created, X-Restomenum-Delivery: <id>.
  • Idempotency: envelope id ile dedup (at-least-once → aynı id tekrar gelebilir).
  • Ack: 2xx → tamam; 5xx/timeout → retry → tükenirse dead-letter.

Envelope (tüm event'lerde ortak)

AlanTipZorunluAçıklama
idstringIdempotency anahtarı. Aynı id tekrar gelebilir → dedup et.
typestringtable.created
versionstringEnvelope şema versiyonu ("1").
tenantIdstringRestoran (tenant) id.
occurredAtnumberAçılış zamanı (unix ms).
dataobjectEvent'e özel gövde (aşağıda).

data alanları

AlanTipZorunluAçıklama
tableIdstringMasa id'si — tables/get?id= ile aynı.
tableNamestringMasanın görünen adı (ör. "Masa 1").
docNonumberAdisyon/belge no.
desingstringBölüm (salon/alan) adı (ör. "Bahçe") — tables/get'teki desing ile aynı.
locationstringMasanın görünen adı (ör. "Masa 1") — genelde tableName ile aynı.
personCountnumberKişi sayısı (girilmemişse 0).
customerobject | nullPII — müşteri atanmamış masa açılışında null; doluysa yalnız customers:read + consent ile gelir, aksi halde maskelenir.
orders[]arrayAçılış kalemleri: id, title, quantity, options[], extra, discount, note, lineTotal. options = string array (seçenek adları); lineTotal'ı Restomenum hesaplar.
totalnumberAdisyon toplamı (kuver dahil).
paidnumberÖdenen tutar (açılışta genelde 0).
totalDiscountnumberToplam indirim.

Tam örnek payload

table.created envelope (gerçek)
{
  "id": "evt_<uuid>",
  "type": "table.created",
  "version": "1",
  "tenantId": "<tenantId>",
  "occurredAt": 1781000000000,
  "data": {
    "tableId": "masa-1",
    "tableName": "Masa 1",
    "docNo": 12,
    "desing": "Bahçe",
    "location": "Masa 1",
    "personCount": 2,
    "customer": null,
    "orders": [
      { "id": "masa-1-ab", "title": "Menemen", "quantity": 2, "options": [], "extra": 0, "discount": 0, "note": "", "lineTotal": 38 }
    ],
    "total": 38,
    "paid": 0,
    "totalDiscount": 0
  }
}