ライフサイクルフック

フックはイベントを購読し、それが発生したときに自分のオペレーションを1つ実行します。各配信はステータスとともに保存されるため、失敗したものを見つけて再実行できます。

イベント

レコードのイベントは、レコードが作成、更新、削除、公開、非公開にされたときに発生します。そのほかのプロジェクトイベントは、エンドユーザーとそのセッション、オペレーションの結果、完了したインポート、マイグレーション、一括変更、そして組織のライフサイクル(作成からメンバーの変更まで)を対象とします。さらに別のイベント群(チームメンバーシップ、プラン、プロジェクト、招待の変更)は、ワークスペースで購読します。

フックの宣言

defineHookは、設定の中で、イベントと、実行するオペレーションのキーを指定します。フィルターは、イベントのトップレベルのキーに対する等価比較でフックを絞り込み、通常は1つのモデルに限定します。コンソールで設定したフックは、組み込みの通知を対象にすることもできます。

配信の内容

配信は、オペレーションのエンドポイントへのHTTP POSTです。認証は、X-Foir-Tokenヘッダーの短命なトークンで行われ、FóirのJWKSに対して検証します。HMAC署名ヘッダーはありません。本文は、レコードIDとモデルキーで何が変わったかを示し、フィールドの内容は含みません。受信側がレコードを読み戻します。

追跡、リトライ、デッドレターキュー

各配信は、ステータスを持つ保存された行です。foir hooksは、フックの失敗した配信を一覧し、1件を再実行し、エンドポイントをテストするための合成配信を送ります。リトライとサーキットブレーカーは、フックが実行するオペレーションに属します。リトライを使い切った実行はデッドレターキューに入り、確認、リトライ、破棄ができます。

順序とループ

配信の順序は保証されません。各配信にはシーケンス番号があり、受信側は最後の書き込みを優先する方式を適用できます。また、重複を除くための実行IDもあります。自分自身を起動するフックが暴走することはありません。原因の連鎖にすでに含まれるオペレーションは再実行されず、連鎖は3ホップで止まります。

詳細を読む

ライフサイクルフックのガイドで、イベント、フックの宣言、配信の確認と再実行を説明しています。