Lymo は Svix 経由で Webhook を配信します。各配信には、Svix SDK で検証可能な標準署名ヘッダーが付きます。
登録前に確認: ホスト名の許可リスト
Webhook の配信先は、組織単位のホスト名許可リスト でゲートされています。Svix 側の URL バリデーションに加えた多層防御で、API キーが漏洩した場合に Svix 経由で SSRF の踏み台にされることを防ぐ仕組みです。
新規組織の既定の許可リストは 空 です。つまり、許可リストに配信先ホスト名を追加するまで、POST /v1/webhooks はすべて 422 invalid_webhook_url で失敗します。統合作業を始める前に、Lymo の担当者(CSM・管理者)に organization_settings.webhook_allowed_hostnames への追加を依頼してください。
許可リストのルール:
- スキームは
https:// のみ。
- 完全一致:
webhook.site は webhook.site のみを許可します。
- サブドメインのワイルドカード:
*.example.com は a.example.com・foo.bar.example.com を許可しますが、apex の example.com 自体は許可しません。
- 大文字小文字は区別せず、punycode 形式で比較されます。
エンドポイントを登録する
レスポンスに含まれる secret(whsec_ で始まる)は、作成時に必ず保存してください。署名検証に必須であり、返却は作成時の 1 回のみです。現時点ではシークレットのローテーション用エンドポイントはありません。紛失・漏洩した場合は、エンドポイントを削除して作り直してください。
events を省略(または [] を指定)すると、すべてのイベント種別を購読します。
イベント種別
deal.scoring.* は、SDK の型を安定させる目的でスキーマには定義されていますが、配信側の実装はまだ入っていないため、現時点で購読しても通知は届きません。将来のリリースで有効化予定です。
各イベントのペイロードスキーマは APIリファレンス タブに記載があります。
署名検証
すべての配信には以下のヘッダーが付きます。
svix-id — 配信ごとに一意な ID。再送でも変わりません。
svix-timestamp — 送信時の Unix 秒。
svix-signature — HMAC 署名。シークレットのローテーション中はスペース区切りで複数の署名が送られ、いずれか一致すれば検証成功となります(切り替え時の検証窓口確保のため)。
各言語の Svix SDK で検証してください。
検証に失敗したリクエストは拒否してください。verify には 生のリクエストボディ を渡す必要があります。一度パースして再シリアライズした JSON では検証できません。
配信セマンティクス
- 受信の応答は任意の
2xx ステータスで構いません。非 2xx やネットワーク失敗は指数バックオフで再試行されます。
svix-id は再送間で安定するため、受信済み ID を保存して重複処理をスキップすれば、ハンドラを冪等にできます。
- 再試行スケジュール、タイムアウト、保持期間は Svix 側で管理されます。詳細は Svix の配信ドキュメント を参照してください。
一覧取得と削除
エンドポイント ID は Svix が発行し、ep_ で始まります。削除は即時反映されます。配信中のイベントは完了しますが、以降の新規イベントは送られません。