Görünüm
Olay kataloğu
Aşağıdaki tablo koddan üretilir. Katalogda olmayan bir ada abone olamazsınız: yazım hatası sessizce "kurulu ama hiç tetiklenmeyen" bir abonelik üretmesin diye istek reddedilir.
Kim abone olabilir sütunu asıl soruyu yanıtlar: bir olayın sahibi restoransa, partner anahtarıyla ona abone olamazsınız.
| Olay | Kim abone olabilir | Ne zaman gider |
|---|---|---|
api_key.expiringtr.com.veni.accesskey.expiring.v1 | Kurye şirketiPartnerPlatformRestoran | Erişim anahtarının süresi dolmak üzere (30/7/1 gün kala) |
btrans.report_blockedtr.com.veni.btrans.report.blocked.v1 | Platform | BTRANS dönemi gönderilemiyor: vergi kimliği eksik taraflar var |
btrans.report_readytr.com.veni.btrans.report.ready.v1 | Platform | BTRANS dönem raporu hazırlandı, gönderilmeyi bekliyor |
connector.event_receivedtr.com.veni.connectors.event.received.v1 | Platform | Konnektör sağlayıcısından gelen webhook alındı |
delivery.assignedtr.com.veni.b2b.delivery.assigned.v1 | Partner | Teslimata kurye atandı |
delivery.cancelledtr.com.veni.b2b.delivery.cancelled.v1 | Partner | Teslimat iptal edildi |
delivery.createdtr.com.veni.b2b.delivery.created.v1 | Partner | B2B teslimat siparişi oluşturuldu |
delivery.deliveredtr.com.veni.b2b.delivery.delivered.v1 | Partner | Paket teslim edildi |
delivery.picked_uptr.com.veni.b2b.delivery.picked_up.v1 | Partner | Kurye paketi teslim aldı |
kyc.approvedtr.com.veni.kyc.approved.v1 | Platform | KYC onaylandı ve rol verildi |
kyc.rejectedtr.com.veni.kyc.rejected.v1 | Platform | KYC reddedildi |
order.acceptedtr.com.veni.restaurant.order.accepted.v1 | Restoran | Restoran siparişi kabul etti |
order.cancelledtr.com.veni.food.order.cancelled.v1 | Platform | Sipariş iptal edildi (müşteri veya sistem) |
order.completedtr.com.veni.food.order.completed.v1 | Platform | Sipariş teslim edildi |
order.createdtr.com.veni.food.order.created.v1 | Platform | Yemek siparişi oluşturuldu |
order.preparingtr.com.veni.restaurant.order.preparing.v1 | Restoran | Sipariş hazırlanmaya başlandı |
order.readytr.com.veni.restaurant.order.ready.v1 | Restoran | Sipariş hazır (kurye alabilir) |
order.rejectedtr.com.veni.restaurant.order.rejected.v1 | Restoran | Restoran siparişi reddetti |
payment.failedtr.com.veni.payment.failed.v1 | Platform | Ödeme başarısız |
payment.refundedtr.com.veni.payment.refunded.v1 | Platform | Ödeme iade edildi (tam veya kısmi) |
payment.succeededtr.com.veni.payment.succeeded.v1 | Platform | Ödeme başarıyla tahsil edildi |
ride.completedtr.com.veni.tag.ride.completed.v1 | Platform | TAG yolculuğu tamamlandı |
subscription.cancelledtr.com.veni.subscription.cancelled.v1 | Platform | Abonelik iptal edildi |
subscription.renewal_failedtr.com.veni.subscription.renewal_failed.v1 | Platform | Abonelik yenileme tahsilatı başarısız |
subscription.renewedtr.com.veni.subscription.renewed.v1 | Platform | Abonelik yenilendi |
user.registeredtr.com.veni.auth.user.registered.v1 | Platform | Yeni kullanıcı kaydı |
webhook.dlq_growingtr.com.veni.webhooks.dlq.growing.v1 | Platform | Kalıcı teslim edilemeyen olaylar birikiyor (DLQ) |
Olay adları değişmez
Kısa ad (order.ready) bir sözleşmedir ve değişmez. CloudEvents tipi sütunundaki ters-DNS değer sürümü taşır (…v1).
Gövdeye yeni alan eklemek sürümü artırmaz — tanımadığınız alanı yok sayın. Bir alanın kaldırılması ya da anlamının değişmesi yeni sürüm (…v2) demektir ve ayrı bir olay tipi olarak gelir.
Ayrıntı: Sürümleme.
Gövde biçimleri
Dış zarf bütün olaylarda aynıdır (Webhook'lar). data içeriği olaya göre değişir; aşağıda en çok kullanılan üçü.
Yemek siparişi olayları
order.created, order.completed, order.cancelled — platform sahipliğindedir.
json
{
"order_id": "…",
"restaurant_id": "…",
"user_id": "…",
"status": "pending",
"payment_method": "card",
"currency": "TRY",
"total_amount": "149.90",
"item_count": 3,
"created_at": "2026-10-12T10:00:00Z"
}order.completed aynı alanları status: "delivered" ile taşır (item_count gelmeyebilir). order.cancelled ise status: "cancelled" ve bir reason alanı ekler.
Para alanları metindir
total_amount gibi tutarlar JSON sayısı değil metin olarak gelir ("149.90") — kayan nokta yuvarlaması tutarı bozmasın diye. Para birimi ayrı alanda (currency), v1'de daima "TRY".
Restoranın sipariş geçişleri
order.accepted, order.rejected, order.preparing, order.ready — restoran sahipliğindedir; restoran panelden abone olur ve entegratör seçer. Bu dördünde data, sipariş nesnesini taşır:
json
{
"event": "order.ready",
"occurred_at": "2026-10-12T09:14:07Z",
"order": {
"id": "…",
"restaurant_id": "…",
"status": "ready",
"total_amount": 348.5,
"delivery_fee": 29.9,
"courier_type": "platform",
"address_text": "",
"items": [{ "name": "Tavuk dürüm", "quantity": 2 }],
"created_at": "2026-10-12T09:02:11Z"
}
}Bu gövde müşteri verisi taşır
Sipariş notu (order.notes) gövdede yer alır. Saklama süresi, erişim kısıtı ve silme sorumluluğu sizdedir.
Gövdedeki müşteri verisi, POS API'nin sipariş yanıtıyla aynı kuralla kırpılır: courier_type: "platform" siparişlerde adres boş, koordinat yok, telefon maskeli; own_courier siparişlerde tam. Tablo: POS API — siparişler.
Teslimat olayları
delivery.created, delivery.assigned, delivery.picked_up, delivery.delivered, delivery.cancelled — partner sahipliğindedir ve Partner API ile açtığınız teslimatları izler. Zarf yerine düz gövdeyle giderler (ayrıntı).
⚠️ Bu beşinin ikisi yayınlanıyor: delivery.created ve delivery.cancelled. Kurye adımlarını GET /api/v1/b2b/deliveries/{id} ile sorgulayın — ayrıntı Teslimatlar.
Abone olunabilecek güncel liste
Yukarıdaki tablo katalogun tamamıdır. Bir restoran hesabının o anda abone olabileceği liste ise webhook listeleme yanıtındaki supported_events alanıdır — kodunuza sabit yazmak yerine oradan okuyun (Yönetim uçları).