🛣️ Invitation routes
Invitation route は SDK composer であり、Express ミドルウェアではありません。各ルートは isAuthenticated() と checkIdentityType(['admin']) を呼び出します。
目録
| ルート | メソッド / プロトコル | パス | スキーマ | バリデータ | 成功ステータス |
|---|---|---|---|---|---|
createInvitationRoute | POST / HTTP | /invitations | createInvitationSchema | isAuthenticated()、checkIdentityType(['admin']) | 201 |
findInvitationsRoute | GET / HTTP | /invitations | findInvitationsSchema | isAuthenticated()、checkIdentityType(['admin']) | 200 |
getInvitationByIdRoute | GET / HTTP | /invitations/:invitationId | getInvitationSchema | isAuthenticated()、checkIdentityType(['admin']) | 200 |
deleteInvitationRoute | DELETE / HTTP | /invitations/:invitationId | deleteInvitationSchema | isAuthenticated()、checkIdentityType(['admin']) | 204 |
詳細
createInvitationRoute
実装
エンドポイント: POST /invitations
認証済み管理者のために招待を作成し、ワンタイムトークンを生成してメールを送信します。
アクセス: 認証済み管理者。ファクトリはソースの順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin'])。選択された context.authenticate アダプターはデフォルトで Bearer トークンを読み取ります;authService は authMode: 'cookie' のみクッキー認証を選択します。
リクエスト: createInvitationSchema は、メール形式の email と文字列の fromIdentityId を要求する application/json ボディを必要とします;オプションの orgId と role はボディスキーマが厳密であるため追加フィールドのみです。アクセスには選択された Bearer ヘッダーまたは accessToken クッキーが必要です。mailService と有効化された完全な招待メール設定はランタイム要件です。
パイプライン: createInvitation → getInvitationById → buildInvitationOnetimeTokenPayload → generateOnetimeToken → sendInvitationEmail → createInvitationTerminator、すべてログ記録済み。
成功: 201 { invitationId }。
失敗: ソース定義の失敗には、ボディ欠落、招待挿入失敗、招待 ID/トークン欠落、または配信のための招待/トークン欠落が含まれます;作成された招待が取得できない場合 404;データベース、トークン、メール設定、配信、または作成ターミネーターの失敗による 500。共有バリデータ契約はまた認証/認可失敗も決定します。完全なソースを表示
findInvitationsRoute
実装
エンドポイント: GET /invitations
認証済み管理者のために招待を一覧表示し、返されたすべての項目からデータベース専用の _id フィールドを削除します。
アクセス: 認証済み管理者。ファクトリはソースの順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin']);選択されたアダプターはデフォルトで Bearer を受け入れ、または authService によって選択されたクッキー転送を受け入れます。
リクエスト: findInvitationsSchema はオプションのクエリ email、fromIdentityId、orgId、role、page(1–1000)、limit(1–50)と選択されたアクセストークン転送を受け入れます。リクエストボディまたはパスパラメータは定義されていません。
パイプライン: ページネーション付き findInvitations → normalizeInvitationsListTerminator。
成功: サービスの通常の res.json(result) 経路による 200:正規化された配列または { data, metadata: { pagination } }、_id が削除されています。withPagination はターミネーターが消費するページネーション結果を供給します。
失敗: クエリ失敗による 500 Failed to find invitations と共有バリデーション失敗。完全なソースを表示
getInvitationByIdRoute
実装
エンドポイント: GET /invitations/:invitationId
認証済み管理者のために 1 つの招待を取得し、_id なしで公開された形状を返します。
アクセス: 認証済み管理者。ファクトリはソースの順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin']);選択されたアダプターはデフォルトで Bearer を受け入れ、または authService によって選択されたクッキー転送を受け入れます。
リクエスト: getInvitationSchema は文字列のパスパラメータ invitationId と選択されたアクセストークン転送を必要とします。リクエストボディまたはクエリパラメータは定義されていません。
パイプライン: getInvitationById → normalizeInvitationTerminator。
成功: 招待の _id が削除された、サービスの通常の res.json(result) 経路による 200。
失敗: 取得または正規化による 400 Invitation ID is required、404 Invitation not found、および 500 Failed to get invitation by id、 plus 共有バリデータ失敗。完全なソースを表示
deleteInvitationRoute
実装
エンドポイント: DELETE /invitations/:invitationId
認証済み管理者のために 1 つの招待を削除し、明示的な空の 204 応答記述子を返します。
アクセス: 認証済み管理者。ファクトリはソースの順序で実行されます:isAuthenticated()、次に checkIdentityType(['admin']);選択されたアダプターはデフォルトで Bearer を受け入れ、または authService によって選択されたクッキー転送を受け入れます。
リクエスト: deleteInvitationSchema は文字列のパスパラメータ invitationId と選択されたアクセストークン転送を必要とします。リクエストボディまたはクエリパラメータは定義されていません。
パイプライン: deleteInvitation → deleteInvitationTerminator。
成功: ボディなしの 204。
失敗: 削除による 400 Invitation ID is required、404 Invitation not found、500 Failed to delete invitation、またはターミネーターによる 500 Unknown error deleting invitation、 plus 共有バリデータ失敗。完全なソースを表示