Personel Event'leri — user.created · updated · deleted ✓ Canlı PII

Personel (staff) yaşam döngüsü: ekleme/düzenleme/silme. Async webhook. PII içerir — users:read + tenant consent gerektirir. actor.userId ile etkileşimi yapan kullanıcıyı personel kaydıyla eşleyebilirsin.

← Event Kataloğu

Ne zaman tetiklenir?

EventTetik
user.createdYeni personel eklendiğinde
user.updatedPersonel düzenlendiğinde (güncel hâl)
user.deletedPersonel silindiğinde (tüm silme yollarını yakalar)

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

Abonelik

  • Manifest: events: ["user.created", "user.updated", "user.deleted"] + events:subscribe.
  • users:read (PII) — kurulumda açık consent ister; yoksa data boş / name kırpılır.

HTTP, imza & teslimat

POST {webhookUrl}
Content-Type: application/json
X-Restomenum-Signature: t=<unixSec>,v1=<HMAC_SHA256(webhookSecret, "<t>.<rawBody>")>
X-Restomenum-Event: user.created | user.updated | user.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

Tenant PII consent verdiyse name döner:

user.created (consent ile)
{
  "id": "evt_<uuid>",
  "type": "user.created",
  "version": "1",
  "tenantId": "<tenantId>",
  "occurredAt": 1781000000000,
  "data": { "id": "lZz6BqN46Og4HKrhjf6eflOgWnA2", "name": "Test User" }
}
consent / scope yoksa
// PII consent YOKSA → name kırpılır
"data": { "id": "lZz6BqN46Og4HKrhjf6eflOgWnA2" }

// users:read scope YOKSA → data boş
"data": {}

user.updated güncel personeli; user.deleted silinen personelin {id, name}'ini taşır — yalnız type farklı.

data alanları

AlanTipZorunluAçıklama
idstringPersonel uid'si (her zaman) — hook/action actor.userId ve users/get id'si ile aynı.
namestringPersonel adı — yalnız PII consent verildiyse.

Sızıntı önlemi

pincode (POS kredisi), authority (iç yetki), email, mesai (isbasi/issonu/gunler), storages ASLA dönmez — yalnız { id, name }.
  • name çalışan PII'si → users:read + consent ile; aksi halde kırpılır.
  • data yalnız users:read onaylıysa dolu.
Notlar: user.deleted tüm silme yollarını yakalar (admin/sistem hesapları gönderilmez). id = hook/action actor.userId → etkileşimi yapan kullanıcıyı personel kaydıyla eşle. Tam liste için users/get (snapshot) + bu event'ler (delta).