Webhook連携ガイド
イベントをエンドポイントに配信するためにWebhookを連携します。
Webhookの仕組み
Webhookは、HTTP POSTリクエストをエンドポイントに送信します。各リクエストには、次の特徴があります。
- 完全なイベントペイロードをJSONとして含みます。
- CloudEvents仕様 (新しいウィンドウで開きます)に従います。
- 検証に使用するIndeed署名が含まれます。
Webhookリクエスト形式
Webhookシステムは、CloudEvents仕様 (新しいウィンドウで開きます)を実装しています。
| リクエスト | 説明 |
|---|---|
| メソッド | HTTP POST |
| Content-Type | application/cloudevents+json |
| ヘッダー |
|
| ボディ | CloudEvents形式のイベントデータを含むJSONペイロードです。 |
| ボディ属性 |
|
HTTPレスポンスコードの処理
| カテゴリ | HTTPコード | Webhookシステムのアクション | パートナーのアクション |
|---|---|---|---|
| 成功 |
| 配信を完了としてマークします。再試行しません。 | イベントを処理する前にレスポンスを返します。 |
| リダイレクト |
| レスポンスをクライアントエラーとして扱います。 | エンドポイントの設定を修正します。 |
| クライアントエラー |
( | 指数バックオフを使用して再試行します。 | エンドポイントの設定を確認してから、エンドポイントを修正します。 |
| レート制限エラー | 429 | レート制限ヘッダーを読み取り、指定された遅延後に再試行します。アラートは送信しません。 | 不要です。 |
| サーバーエラー |
| 指数バックオフを使用して再試行します。 |
|
再試行動作
Webhookシステムは、エンドポイントが受け入れるまで、失敗した配信を再試行します。
| 特性 | 値 |
|---|---|
| 最大再試行回数 | 実質的に無制限です。 |
| 初回再試行間隔 | 10ミリ秒 |
| バックオフ乗数 | 2.0 各試行後に間隔が2倍になります。 |
| 最大間隔 | 7,200秒(2時間) |
再試行があるため、イベントは複数回、かつ順不同で到着する場合があります。対応方法については、べき等なイベント処理のためにイベントIDを使用するをご覧ください。
連携手順
パートナー連携チェックリスト
特に記載がない限り、すべての手順が必須です。
- 1.有効なSSL証明書を持つHTTPSエンドポイントを設定する。
- 2.Webhook署名検証を実装する(任意)。
- 3.イベントを非同期で処理する。処理する前に
2xxでレスポンスを返します。 - 4.べき等なイベント処理のためにイベントIDを使用する。
- 5.WebhookルートのCSRF保護を無効にする。
- 6.適切なステータスコードでエラーを処理する。
- 7.必要に応じて、レート制限ヘッダーをサポートする。
- 8.配信の失敗を監視し、アラートを設定する。
1. 有効なSSL証明書を持つHTTPSエンドポイントを設定する
サーバー上に、POSTリクエストを受信するHTTPSエンドポイントを作成します。IndeedはTLS v1.2およびv1.3をサポートしています。
2. Webhook署名検証を実装する
Indeedがイベントを送信したことを確認するために、X-Indeed-Signatureヘッダーを検証します。
署名ヘッダーの形式は次のとおりです。
X-Indeed-Signature: <signature>