GET /api/v2/events への長時間維持する接続を開き、Server-Sent Events (SSE) ストリームとしてイベントを受け取ります。いつ接続するか、切断後にどのように再開するか、どのくらいの速度でイベントを取り込むかは、すべてアプリケーション側で制御できます。
このアプローチは、次のような場合に役立ちます。
- webhook エンドポイントを用意せずに、自分のペースでイベントを処理したい。
- バックフィルや復旧のために、特定の時点からイベントを再生したい。
- プッシュ型の配信よりもポーリングを好むシステムと統合したい。
Events API の仕組み
id フィールドが含まれます。接続が切断された場合、アプリケーションは再接続し、最後に受信した オフセット を渡します。Auth0 はその位置から配信を再開するため、イベントが失われることはありません。
SSE ストリームには、次のメッセージタイプが含まれます。
SSEストリームの例
前提条件
-
Events が有効化されている Auth0 テナント。利用可能な Event Stream 接続数は、ご利用のプランによって異なります。
-
read:eventsスコープを持つ Management API アクセストークン。詳しくは、Management API Access Tokens をご覧ください。
Events API に接続する
curl を使用します。
クエリパラメータ
切断後の再開
Last-Event-IDヘッダー — 標準的な SSE の再接続メカニズムです。ほとんどの SSE クライアントライブラリは、再接続時にこのヘッダーを自動的に設定します。fromquery parameter — クライアントがLast-Event-IDヘッダーをサポートしていない場合は、こちらを使用します。
Last-Event-ID ヘッダーが優先されます。
すべてのメッセージ (
offset-only メッセージを含む) の最新の id 値を永続ストレージに保存してください。アプリケーションが再起動した場合は、保存したオフセットを使って中断した箇所から配信を再開します。メッセージの種類を処理
実際のイベント
event フィールドが既知のイベントタイプ (たとえば user.created) に一致するメッセージには、data フィールドにイベントの完全なペイロードが含まれます。JSON を解析し、ビジネスロジックに従ってイベントを処理してください。
オフセットのみのメッセージ
offset-only メッセージを送信します。これらのメッセージにはイベント ペイロード は含まれません。受信したら保存しているオフセットを更新してください。そうすることで、今後再接続した際に、すでに通過したイベントが再送されるのを防げます。
エラーメッセージ
event: error メッセージは、オフセットの有効期限切れやサーバー側の問題など、回復不能な問題を示します。このメッセージを受信すると、ストリームは終了します。アプリケーションではエラーを記録したうえで、適切なオフセットまたは新しい from_timestamp を指定して再接続する必要があります。
ハートビート
: で始まる行は、ハートビート用のSSEコメントです。これにより、プロキシやロードバランサーを経由しても接続を維持できます。特別な処理は必要ありません。
サーバー側での接続の切り替え
eventsource npm パッケージを含む) は、Last-Event-ID ヘッダーを使って自動的に再接続するため、アプリケーションはイベントを取りこぼすことなく正しいオフセットから再開できます。
カスタムの SSE クライアントを実装する場合は、最新のオフセットを保持し、その値を使って再接続することで、接続の切断に適切に対応できるようにしてください。
コンシューマーを実装する
eventsource npm パッケージは SSE プロトコルを実装しており、Last-Event-ID ヘッダーを使って自動的に再接続します。別の SSE ライブラリを使用する場合は、自動再接続とオフセットの引き継ぎに対応していることを確認してください。