İçeriğe geç
Atlas

Webhooklar

Olay aboneliği kurma, imza doğrulama, yeniden deneme davranışı ve yerelde test etme.

Güncelleme: 8 Ağustos 2026

Webhook, bir olay gerçekleştiğinde Atlas’ın sizin adresinize POST isteği göndermesidir. Sürekli sorgu atmak yerine olayı beklemenizi sağlar.

Abonelik kurma

curl -X POST https://api.atlas.example/v1/webhooks \
  -H "Authorization: Bearer atl_live_••••••••" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://ornek.com/atlas/olaylar",
    "events": ["user.created", "publication.live"]
  }'

Yanıtta dönen secret değerini saklayın — imza doğrulaması bu değerle yapılır ve sonradan tekrar görüntülenemez.

Olaylar

OlayNe zaman tetiklenir
user.createdDavet edilen kullanıcı daveti kabul ettiğinde
user.deletedKullanıcı çalışma alanından çıkarıldığında
publication.liveYayın dağıtımı tamamlandığında
publication.failedYayın hata verdiğinde
collection.deletedKoleksiyon silindiğinde

Gövde biçimi

Her istek aynı zarfı kullanır; olaya özgü veriler data içindedir.

{
  "id": "evt_7Kq2",
  "type": "publication.live",
  "created_at": "2026-08-09T10:31:20Z",
  "data": {
    "publication_id": "pub_44Qn",
    "collection_id": "col_82Kd",
    "duration_ms": 19400
  }
}

İmzayı doğrulayın

Her istek X-Atlas-Signature başlığı taşır. Başlığın değeri, zaman damgası ve ham gövdenin secret ile HMAC-SHA256 özetidir.

import crypto from 'node:crypto';

export function verify(rawBody, header, secret) {
  const [tsPart, sigPart] = header.split(',');
  const timestamp = tsPart.replace('t=', '');
  const signature = sigPart.replace('v1=', '');

  // 5 dakikadan eski istekleri reddedin — yeniden oynatmayı önler
  const age = Math.abs(Date.now() / 1000 - Number(timestamp));
  if (age > 300) return false;

  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${timestamp}.${rawBody}`)
    .digest('hex');

  // Sabit süreli karşılaştırma — zamanlama saldırısını önler
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

Gövdeyi JSON’a çevirmeden ham hâliyle imzalayın. Çoğu çatı gövdeyi otomatik ayrıştırır; ham gövdeyi ayrıca saklamanız gerekir, aksi hâlde imza tutmaz.

Yeniden deneme

5 saniye içinde 2xx dönmezse istek başarısız sayılır ve artan aralıklarla yeniden denenir: 1 dk, 5 dk, 30 dk, 2 sa, 6 sa. Altıncı denemeden sonra abonelik disabled durumuna geçer ve çalışma alanı yöneticilerine e-posta gider.

İşi uç noktada senkron yapmayın: isteği kuyruğa alıp hemen 200 dönün.

Yerelde test

Yerel sunucunuzu geçici bir adresle dışarı açıp o adresi kaydedin. Panelden Test olayı gönder ile gerçek bir olay beklemeden zarf biçimini görebilirsiniz.

Bu sayfa yardımcı oldu mu?