Webhook

Mendaftarkan endpoint

Jika Anda lebih suka dipanggil daripada mempertahankan soket, daftarkan sebuah endpoint HTTPS. Kami mem-POST setiap peristiwa yang cocok sebagai amplop JSON yang sama, ditandatangani dengan HMAC-SHA256 atas body mentah di X-XSF-Signature.

daftarkan — secret hanya ditampilkan sekali
curl -X PUT https://api.xsignalfeed.com/v1/account/webhook \
  -H "Authorization: Bearer xsf_your_key" -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/hooks/xsf"}'

Memverifikasi pengiriman

Verifikasi atas body mentah. Menserialisasi ulang JSON yang sudah diurai mengubah byte-nya dan tanda tangannya tidak akan pernah cocok. Baca body sebagai byte sebelum apa pun menyentuhnya.
import hmac, hashlib

def valid(raw_body: bytes, signature: str, secret: str) -> bool:
    want = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(want, signature)

Percobaan ulang dan pemulihan

Kami mencoba ulang tiga kali pada respons non-2xx atau timeout, lalu membuang pengiriman itu. Tidak ada yang diantrekan selamanya. Jika endpoint Anda sedang mati, ambil sid terakhir yang Anda simpan dan kejar ketinggalan lewat GET /v1/events atau WebSocket dengan pemutaran ulang — itulah jalur pemulihan yang sebenarnya, bukan kebijakan coba ulang.