웹훅

엔드포인트 등록

소켓을 유지하는 대신 호출받기를 원한다면 HTTPS 엔드포인트를 등록하십시오. 일치하는 각 이벤트를 같은 JSON 엔벨로프로 POST하며, 원시 본문에 대한 HMAC-SHA256 서명을 X-XSF-Signature에 담습니다.

등록 — 시크릿은 한 번만 표시됩니다
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"}'

전달 검증

원시 본문으로 검증하십시오. 파싱한 JSON을 다시 직렬화하면 바이트가 달라져 서명이 절대 일치하지 않습니다. 다른 어떤 것도 건드리기 전에 본문을 바이트로 읽으십시오.
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)

재시도와 복구

2xx가 아닌 응답이나 타임아웃이 발생하면 세 번 재시도한 뒤 해당 전달을 포기합니다. 영원히 큐에 남는 것은 없습니다. 엔드포인트가 다운되었다면 마지막으로 저장한 sid를 가지고 GET /v1/events나 리플레이하는 WebSocket으로 따라잡으십시오. 재시도 정책이 아니라 그것이 진짜 복구 경로입니다.