Olay Türleri
Olay türleri, webhook'ları kategorize etmenizi ve doğru uç noktalara yönlendirmenizi sağlar. Onlar olmadan, her webhook her yere gider.
Sorun
Uygulamanız farklı türde olaylar gönderiyorsa — sipariş güncellemeleri, kullanıcı kayıtları, ödeme onayları — muhtemelen bunları işlemek için farklı uç noktalar istersiniz. Sipariş işleme servisiniz kullanıcı kayıt olaylarını almamalıdır.
Olay türleri olmadan, tüketici tarafında filtreleme yapmanız gerekir; bu da bant genişliği ve işlem süresi israfıdır.
Olay Türleri Nasıl Çalışır
Olay türleri, ne olduğunu tanımlayan dizi tanımlayıcılarıdır. resource.action kalıbını izlerler:
order.createdorder.updatedorder.cancelledpayment.succeededpayment.faileduser.createduser.updatedinvoice.paidHerhangi bir dizi formatını kullanabilirsiniz, ancak tutarlılık için resource.action önerilir.
Olay Türlerini Kaydetme
Olay türleri, bir webhook gönderdiğinizde otomatik olarak kaydedilir. Ön kayıt gerekmez:
curl -X POST https://hooksniff-api-1046140057667.europe-west1.run.app/v1/webhooks \
-H "Authorization: Bearer hr_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"endpoint_id": "ep_abc123",
"event": "order.created",
"data": {"order_id": "12345"}
}'order.created olay türü artık filtreleme ve arama için kullanılabilir.
Olay Türüne Göre Filtreleme
event_filter alanını kullanarak uç noktaları yalnızca belirli olay türlerini alacak şekilde yapılandırın:
curl -X POST https://hooksniff-api-1046140057667.europe-west1.run.app/v1/endpoints \
-H "Authorization: Bearer hr_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://myapp.com/webhooks/orders",
"description": "Order events only",
"event_filter": "order.*"
}'Desteklenen filtre kalıpları:
order.created— Tam eşleşmeorder.*— Joker (tüm sipariş olayları)*— Tüm olaylar (varsayılan)
Şema Doğrulama
İsteğe bağlı olarak, teslimattan önce payload'ları doğrulamak için olay türleri için JSON şemaları tanımlayın:
{
"event_type": "order.created",
"schema": {
"type": "object",
"required": ["order_id", "total"],
"properties": {
"order_id": { "type": "string" },
"total": { "type": "number", "minimum": 0 },
"currency": { "type": "string", "default": "USD" }
}
}
}Bir şema tanımlandığında, eşleşmeyen payload'lar teslimat pipeline'ına girmeden önce 400 Hatalı İstek hatasıyla reddedilir.
En İyi Uygulamalar
- Spesifik olun: invoice.payment_failed, invoice.error'dan daha iyidir
- Noktaları ayırıcı olarak kullanın: resource.action formatı
- Şekilleri değiştirdiğinizde versiyonlayın: order.created.v2
- Gruplamama için joker kullanın: payment.* tüm ödeme olaylarını yakalar
- Olay türlerinizi belgeleyin: Uygulamanızın yaydığı tüm olay türlerinin bir listesini tutun