spicyapiドキュメント
本文

Webhook

コールバック形式、HMAC 署名、リプレイ防止、再配信。

createTask の callBackUrl を指定すると、タスクが終端状態になったときに一度通知をキューへ追加します。queued から running への途中通知はありません。 v2 の再送は同じ request_id と業務データを保持し、url と expiresAt のみ更新します。受信した生の本文で署名を検証し、request_id で重複排除してください。

API
signature = base64(
  HMAC-SHA256(
    secret,
    "<task_id>.<timestamp>.<sha256_hex(raw_body)>"
  )
)

署名を検証する

X-Webhook-Signature は HMAC-SHA256 の Base64 です。署名対象は <task_id>.<timestamp>.<sha256_hex(raw_body)> で、task_id は data.taskId から取得します。JSON を再シリアライズせず、受信した raw body をそのままハッシュしてください。

X-Webhook-Timestamp が許容時間外なら、署名が正しくても拒否します。比較は一定時間で行い、アカウントに空でない webhook secret を設定してください。

重複配信に備える

request_id は配信 ID であり、再送でも変わりません。自社データベースで一意制約を設定し、既に処理済みなら 2xx を返します。先に受理して内部キューへ入れ、重い処理は応答後に実行してください。

body の code は failed タスクでも 200 です。成功判定には必ず data.state を使います。

完全なフィールド定義は OpenAPI 3.1 仕様を参照してください。

関連ドキュメント