Webhook リクエストを検証し、複数回配信される可能性のあるイベントを確実に処理します。
Webhook は現在 Beta 機能です。API、フィールド、および動作は今後のバージョンで変更される可能性があります。
HTTP リクエスト
イベントが発生すると、Qoder Cloud Agents は Endpoint URL に HTTP POST リクエストを送信します。
| Header | 説明 |
|---|---|
Webhook-ID | イベント ID。再試行時も同じ値を維持し、コンシューマーの冪等性キーとして使用できます。 |
Webhook-Event-Type | イベントタイプ。 |
Webhook-Timestamp | 署名生成時の Unix 秒タイムスタンプ。 |
Webhook-Signature | リクエスト署名。現在の形式は v1,<base64>。 |
2xx レスポンスが処理成功を示します。署名を検証してイベントを信頼できるキューに書き込み、速やかにレスポンスを返してください。
イベント構造
Forward のビジネスイベントは共通の envelope を使用します。
| フィールド | 型 | 説明 |
|---|---|---|
type | string | 常に event。 |
id | string | Webhook イベント ID。Webhook-ID と一致します。 |
created_at | string | イベント発生日時。RFC 3339 形式。 |
data.type | string | イベントタイプ。Webhook-Event-Type と一致します。 |
data.id | string | イベントが発生したリソース ID。 |
data.schema_version | integer | イベントデータのバージョン。現在は 1。 |
Schedule イベント
以下の 3 種類の Schedule イベントの data には、source と source_session_id が含まれます。意味は Schedule の作成元を参照してください。Run イベントは親 Schedule の作成元を継承します。
サービスのデプロイ後に新たにキューに入ったイベントには、常に両フィールドが含まれます。過去のイベントやその再試行では欠落する場合があるため、クライアントはフィールドの欠落に対応してください。必要に応じてスケジュールを取得するまたはスケジュール実行を取得するで作成元を確認できます。
forward.schedule.created
Schedule が正常に作成されたときに送信されます。
trigger_policy_type と next_trigger_at は、対応する値がある場合にのみ返されます。
forward.schedule_run.succeeded
Schedule Run が正常に完了したときに送信されます。data.status は completed です。
forward.schedule_run.failed
Schedule Run が失敗したときに送信されます。構造は成功イベントと同じで、data.status は failed となり、error_type が含まれる場合があります。
Managed Agents リソースイベント
Forward では、Session、Session Thread、Agent、Environment、Memory Store、Vault、Vault Credential のイベントも購読できます。完全なイベント名とトリガーはサポート対象の公開イベントを参照してください。
これらのイベントは同じ外側の envelope を使用しますが、data にはリソース参照のみが含まれ、Schedule イベントの schema_version、業務ステータス、結果本文は含まれません。たとえば、セッションがアイドル状態になった場合は次のようになります。
| イベントの分類 | data.id | 追加フィールド |
|---|---|---|
session.status_*、session.updated、session.deleted | Session ID | なし。 |
session.thread_* | 所属する Session ID | session_thread_id:個々のスレッド ID。 |
agent.* | Managed Agent ID | なし。 |
environment.* | Environment ID | なし。 |
memory_store.* | Memory Store ID | なし。 |
vault.* | Vault ID | なし。 |
vault_credential.* | Vault Credential ID | vault_id:所属する Vault の ID。 |
* は分類のためだけに使用しており、events に指定できる前方一致ワイルドカードではありません。通知を受け取ったら、リソース ID で最新の詳細を取得できます。削除イベントに対応するリソースは、すでに取得できない場合があります。session.status_idled は業務処理の成功を意味しないため、セッションの出力とステータスを併せて判断してください。
webhook.test は上記のリソースイベント構造を使用しません。テストペイロードはテストイベントを送信するを参照してください。
署名を検証する
Endpoint 作成時に返される signing_secret を使用してリクエスト署名を検証します。署名対象は次の 3 つの要素を連結したものです。
Webhook-Timestampと現在時刻の差が 5 分以内であること。Webhook-Signatureに検証成功するv1署名が 1 つ以上含まれること。- 処理済みの
Webhook-IDで副作用のある業務処理を再実行しないこと。
リトライと冪等性
Webhook は少なくとも 1 回配信されます。ネットワーク障害、タイムアウト、または非 2xx レスポンス時には、同じイベントが再試行される場合があります。
Webhook-IDで重複を排除してください。到着時刻から冪等性キーを生成しないでください。- 同じ
Webhook-IDの重複リクエストには成功を返し、副作用を繰り返さないでください。 - 処理失敗時は非
2xxを返します。処理成功時、またはすでに処理済みの場合は2xxを返します。

