Webhook'lar

Uç nokta kaydetme

Bir soket tutmak yerine çağrılmayı tercih ediyorsanız bir HTTPS uç noktası kaydedin. Eşleşen her olayı aynı JSON zarfı olarak, ham gövde üzerinden HMAC-SHA256 ile imzalanmış şekilde X-XSF-Signature başlığıyla POST ederiz.

kaydet — gizli anahtar yalnızca bir kez gösterilir
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"}'

Teslimatı doğrulama

Ham gövde üzerinden doğrulayın. Ayrıştırılmış JSON'u yeniden serileştirmek baytları değiştirir ve imza asla eşleşmez. Gövdeyi, başka hiçbir şey dokunmadan önce bayt olarak okuyun.
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)

Yeniden denemeler ve kurtarma

2xx dışı bir yanıtta veya zaman aşımında üç kez yeniden deneriz, sonra o teslimatı bırakırız. Hiçbir şey sonsuza kadar kuyrukta kalmaz. Uç noktanız kapalıysa sakladığınız son sid değerini alın ve GET /v1/events ya da yeniden oynatan bir WebSocket ile açığı kapatın — gerçek kurtarma yolu yeniden deneme politikası değil, budur.