メインコンテンツまでスキップ
バージョン: 0.14.0 (最新)

🛣️ 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 トークンを読み取ります;authServiceauthMode: 'cookie' のみクッキー認証を選択します。

リクエスト: createInvitationSchema は、メール形式の email と文字列の fromIdentityId を要求する application/json ボディを必要とします;オプションの orgIdrole はボディスキーマが厳密であるため追加フィールドのみです。アクセスには選択された Bearer ヘッダーまたは accessToken クッキーが必要です。mailService と有効化された完全な招待メール設定はランタイム要件です。

パイプライン: createInvitationgetInvitationByIdbuildInvitationOnetimeTokenPayloadgenerateOnetimeTokensendInvitationEmailcreateInvitationTerminator、すべてログ記録済み。

成功: 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 はオプションのクエリ emailfromIdentityIdorgIdrolepage11000)、limit150)と選択されたアクセストークン転送を受け入れます。リクエストボディまたはパスパラメータは定義されていません。

パイプライン: ページネーション付き findInvitationsnormalizeInvitationsListTerminator

成功: サービスの通常の 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 と選択されたアクセストークン転送を必要とします。リクエストボディまたはクエリパラメータは定義されていません。

パイプライン: getInvitationByIdnormalizeInvitationTerminator

成功: 招待の _id が削除された、サービスの通常の res.json(result) 経路による 200

失敗: 取得または正規化による 400 Invitation ID is required404 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 と選択されたアクセストークン転送を必要とします。リクエストボディまたはクエリパラメータは定義されていません。

パイプライン: deleteInvitationdeleteInvitationTerminator

成功: ボディなしの 204

失敗: 削除による 400 Invitation ID is required404 Invitation not found500 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'])],
});