33 webhook topic, imzalı payload.
Karum'da gerçekleşen her olay anında sunucuna düşer. HMAC-SHA256 imza, replay koruması, exponential retry, dead-letter queue — kurumsal güvenilirlik.
POST /your-endpoint HTTP/1.1
Content-Type: application/json
X-Karum-Topic: order.placed
X-Karum-Delivery-Id: dlv_01H9X2K...
X-Karum-Signature: t=1716843201,v1=a4b3c92e...
{
"topic": "order.placed",
"deliveryId": "dlv_01H9X2K...",
"tenantId": "ten_main",
"occurredAt": "2026-05-28T09:14:02Z",
"data": {
"orderId": "ord_3Axx",
"total": 1249.90,
"currency": "TRY",
"customerId": "cus_Qh8"
}
}10 kategori, 33 olay tipi.
Sipariş, ödeme, ürün, vendor, payout, güvenlik — her domain için ince taneli topic'ler. Yalnızca dinlemek istediklerine abone ol.
Sipariş yaşam döngüsü
order.placedorder.cancelledÖdeme & iade
payment.capturedpayment.refundedÜrün kataloğu
product.createdproduct.updatedproduct.publishedproduct.archivedB2B onay akışı
approval.request.createdapproval.approvedapproval.rejectedapproval.expiredTeklif yönetimi
quote.sentquote.acceptedquote.rejectedquote.convertedquote.expiredVendor / satıcı
vendor.appliedvendor.approvedvendor.rejectedvendor.suspendedVendor payout
payout.calculatedpayout.paidpayout.failedpayout.retry.scheduledpayout.retry.given_upBuybox
buybox.winner_changedRaporlar
saved_report.dueGüvenlik & uyum
impersonation.startedimpersonation.endedstaff.invitedstaff.acceptedconsent.iys.push_dueHer payload imzalı, replay-proof.
Her isteği imzalarız, timestamp ekleriz, idempotency-key ile çift işlem riskini sıfırlarız. Başarısız delivery'ler dead-letter queue'ya düşer, panelden replay edebilirsin.
HMAC-SHA256 imza
Her istek `X-Karum-Signature: t=<unix>,v1=<hex>` header'ı taşır; payload'ı `t.payload` ile birleştirip imzalarız.
Timestamp toleransı
5 dakikadan eski request'leri reddet — replay attack'ları engelle. Tolerans değiştirilebilir.
Idempotent delivery
Her event benzersiz `deliveryId` taşır. Tekrar gelirse aynı sonuç, çift işlem riski yok.
Dead-letter queue
5 başarısız denemenin ardından DLQ'ya düşer; panelden veya CLI'dan istediğin zaman replay et.
import crypto from "node:crypto"
export function verifyKarumSignature(
payload: string,
header: string,
secret: string,
): boolean {
const parts = Object.fromEntries(
header.split(",").map((p) => p.split("=") as [string, string]),
)
const timestamp = parts.t
const signature = parts.v1
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${payload}`)
.digest("hex")
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature),
)
}Başarısız delivery'ler exponential backoff ile.
Sunucun 2xx yanıt vermezse 6 deneme yapılır, exponential gecikmelerle. 5. başarısızlıkta dead-letter queue'ya düşer, panelden replay edilebilir.
İlk satışınız bu hafta. Kurulum 5 dakika.
Karum kurulum ekibi süreci yönetir. Veri taşıma, ürün eşleme ve kanal bağlama dahil — ortalama 3–7 günde ilk satış.