🏢 組織ルートブロック
組織ルートブロックは、Nodeblocksアプリケーションにおける組織管理操作のための事前設定されたHTTPエンドポイントを提供します。これらのルートは、ハンドラー、バリデーター、ミドルウェアを組み合わせて、適切な認証、認可、エラー処理を備えた完全なAPIエンドポイントを作成します。
🎯 概要
組織ルートブロックは以下を目的として設計されています:
- 組織管理操作のための完全なAPIエンドポイントの提供
- 安全な操作のためのハンドラーとバリデーターの組み合わせ
- 認証と認可チェックの包含
- 関数コンポジションパターンのサポート
- ログとエラー管理の自動処理
📋 ルート構造
各組織ルートは一貫したパターンに従います:
- HTTPメソッド: 操作タイプを定義(GET、POST、PATCH、DELETE)
- パス: パラメータを含むエンドポイントURLを指定
- ハンドラー: ビジネスロジック用のコンポーズされた関数チェーン
- バリデーター: 認証と認可のチェック
🔧 利用可能な組織ルート
createOrganizationRoute
新しい組織を作成し、作成されたリソースを返します。
目的: 完全なリソース取得による組織作成を処理
ルート詳細:
- メソッド:
POST
- パス:
/organizations
- 認証: 必須(Bearerトークン)
ハンドラー: createOrganization
, getOrganizationById
, normalizeOrganizationTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.createOrganizationRoute);
getOrganizationRoute
IDで特定の組織を取得します。
目的: アクセス制御による組織データの取得
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId
- 認証: 必須(Bearerトークン)
ハンドラー: getOrganizationById
, normalizeOrganizationTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin', 'member'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.getOrganizationRoute);
findOrganizationsRoute
正規化されたリストフォーマットですべての組織を取得します。
目的: ページネーションとアクセス制御による組織リスト
ルート詳細:
- メソッド:
GET
- パス:
/organizations
- 認証: 必須(Bearerトークン)
ハンドラー: findOrganizations
, normalizeOrganizationsListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin'], getBearerTokenInfo)
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findOrganizationsRoute);
updateOrganizationRoute
既存の組織を更新し、更新されたリソースを返します。
目的: アクセス制御による組織データの変更
ルート詳細:
- メソッド:
PATCH
- パス:
/organizations/:organizationId
- 認証: 必須(Bearerトークン)
ハンドラー: updateOrganization
, getOrganizationById
, normalizeOrganizationTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.updateOrganizationRoute);
deleteOrganizationRoute
IDで組織を削除します。
目的: アクセス制御による組織の削除
ルート詳細:
- メソッド:
DELETE
- パス:
/organizations/:organizationId
- 認証: 必須(Bearerトークン)
ハンドラー: deleteOrganization
, deleteOrganizationTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteOrganizationRoute);
📋 ルートパターン
認証要件
すべての組織ルートは有効なBearerトークンによる認証が必要です。
アクセス制御
組織ルートは以下のアクセスレベルをサポートします:
- owner: 組織の所有者アクセス
- admin: 管理者レベルアクセス
- member: 組織メンバーアクセス
エラー処理
すべてのルートには自動エラー処理とログが含まれています。
getOrganizationUserRoleRoute
組織内での特定のユーザーの役割を取得します。
目的: 組織内でのユーザー役割を取得
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/users/:userId/role
- 認証: 必須(Bearerトークン)
ハンドラー: getOrganizationUserRole
, normalizeOrganizationUserRoleTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.getOrganizationUserRoleRoute);
checkOrganizationUserExistenceRoute
組織内にユーザーが存在するかをチェックします。
目的: 組織内でのユーザーメンバーシップを検証
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/users/checkExistence
- 認証: 必須(Bearerトークン)
ハンドラー: checkOrganizationUserExistence
, normalizeOrganizationUserExistenceTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.checkOrganizationUserExistenceRoute);
findOrganizationUsersRoute
組織内のすべてのユーザーを取得します。
目的: 組織メンバーをリスト
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/users
- 認証: 必須(Bearerトークン)
ハンドラー: findOrganizationUsers
, normalizeOrganizationUsersListTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findOrganizationUsersRoute);
upsertOrganizationUsersRoute
組織内でユーザーを作成または更新します。
目的: 組織ユーザーメンバーシップを管理
ルート詳細:
- メソッド:
PATCH
- パス:
/organizations/:organizationId/users
- 認証: 必須(Bearerトークン)
ハンドラー: upsertOrganizationUsers
, upsertOrganizationUsersTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.upsertOrganizationUsersRoute);
deleteOrganizationUserRoute
組織からユーザーを削除します。
目的: 組織メンバーシップからユーザーを削除
ルート詳細:
- メソッド:
DELETE
- パス:
/organizations/:organizationId/users/:userId
- 認証: 必須(Bearerトークン)
ハンドラー: deleteOrganizationUser
, deleteOrganizationUserTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), some(validateResourceAccess
(['admin'], getBearerTokenInfo), validateOrganizationAccess
(['owner', 'admin'], getBearerTokenInfo)))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.deleteOrganizationUserRoute);
findOrganizationsForUserRoute
特定のユーザーのすべての組織を取得します。
目的: ユーザーがメンバーである組織をリスト
ルート詳細:
- メソッド:
GET
- パス:
/users/:userId/organizations
- 認証: 必須(Bearerトークン)
ハンドラー: findOrganizationsForUser
, normalizeOrganizationsForUserTerminator
バリデーター: verifyAuthentication
(getBearerTokenInfo), validateResourceAccess
(['admin', 'self'], getBearerTokenInfo))
使用方法:
import { routes } from '@nodeblocks/backend-sdk';
// Expressアプリでルートを登録
app.use('/api', routes.findOrganizationsForUserRoute);
🔗 関連ドキュメント
- 組織ハンドラーブロック - 組織ビジネスロジック関数
- 組織スキーマブロック - 組織データ検証と契約
- 組織バリデーターブロック - 組織検証関数
- 組織フィーチャーブロック - 組織コンポーズ機能