メインコンテンツまでスキップ
バージョン: 0.13.0 (Previous)

🛣️ Invitation routes

Invitation route は SDK composer であり、Express ミドルウェアではありません。各ルートは isAuthenticated() と checkIdentityType(['admin']) を呼び出します。

目録​

ルートメソッド / プロトコルパススキーマバリデータ成功ステータス
createInvitationRoutePOST / HTTP/invitationscreateInvitationSchemaisAuthenticated()、checkIdentityType(['admin'])201
findInvitationsRouteGET / HTTP/invitationsfindInvitationsSchemaisAuthenticated()、checkIdentityType(['admin'])200
getInvitationByIdRouteGET / HTTP/invitations/:invitationIdgetInvitationSchemaisAuthenticated()、checkIdentityType(['admin'])200
deleteInvitationRouteDELETE / HTTP/invitations/:invitationIddeleteInvitationSchemaisAuthenticated()、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。共有バリデータ契約はまた認証/認可失敗も決定します。

完全なソースを表示
export const createInvitationRoute = withRoute({
handler: compose(
withLogging(createInvitation),
flatMapAsync(withLogging(getInvitationById)),
flatMapAsync(withLogging(buildInvitationOnetimeTokenPayload)),
flatMapAsync(withLogging(generateOnetimeToken)),
flatMapAsync(withLogging(sendInvitationEmail)),
lift(withLogging(createInvitationTerminator)),
),
method: 'POST',
path: '/invitations',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

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 と共有バリデーション失敗。

完全なソースを表示
export const findInvitationsRoute = withRoute({
handler: compose(withPagination(withLogging(findInvitations)), lift(withLogging(normalizeInvitationsListTerminator))),
method: 'GET',
path: '/invitations',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

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 共有バリデータ失敗。

完全なソースを表示
export const getInvitationByIdRoute = withRoute({
handler: compose(withLogging(getInvitationById), lift(withLogging(normalizeInvitationTerminator))),
method: 'GET',
path: '/invitations/:invitationId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});

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 共有バリデータ失敗。

完全なソースを表示
export const deleteInvitationRoute = withRoute({
handler: compose(withLogging(deleteInvitation), lift(withLogging(deleteInvitationTerminator))),
method: 'DELETE',
path: '/invitations/:invitationId',
validators: [isAuthenticated(), checkIdentityType(['admin'])],
});