🏢 Organization ルート
Organization ルートは、NodeBlocks アプリケーションにおける組織管理操作のための事前構成済み HTTP エンドポイントを提供します。これらのルートは、ブロック、ターミネーター、バリデーターを組み合わせて、適切な認証、認可、エラー処理を持つ完全な API エンドポイントを作成します。
🎯 概要
Organization ルートは以下を目的として設計されています:
- 組織管理操作のための完全な API エンドポイントを提供
- 安全な操作のためにブロックをターミネーターと組み合わせ
- 認証と認可チェックを含む
- 関数型構成パターンをサポート
- ログとエラー管理を自動的に処理
📋 ルート構造
各組織ルートは、一貫したパターンに従います:
- HTTP メソッド: 操作タイプを定義(GET、POST、PATCH、DELETE)
- パス: パラメータを含むエンドポイント URL を指定
- ハンドラー: ブロックとターミネーターを使用した構成関数チェーン
- バリデーター: 認証と認可チェック
🔧 利用可能な Organization ルート
createOrganizationRoute
新しい組織を作成し、作成されたリソースを返します。
目的: 完全なリソース取得で組織作成を処理
ルート詳細:
- メソッド:
POST
- パス:
/organizations
- 認証: 必須(Bearer トークン)
ブロック: createOrganization
, getOrganizationById
, calculateChildAncestors
, normalizeLogoOfOwner
ターミネーター: normalizeOrganizationTerminator
バリデーター: isAuthenticated
, checkIdentityType
(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.createOrganizationRoute);
getOrganizationRoute
ID で特定の組織を取得します。
目的: アクセス制御付きで組織データを取得
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId
- 認証: 必須(Bearer トークン)
ブロック: getOrganizationById
, normalizeLogoOfOwner
ターミネーター: normalizeOrganizationTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin', 'member'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.getOrganizationRoute);
findOrganizationsRoute
正規化されたリスト形式ですべての組織を取得します。
目的: ページネーションとアクセス制御付きで組織を一覧表示
ルート詳細:
- メソッド:
GET
- パス:
/organizations
- 認証: 必須(Bearer トークン)
ブロック: findOrganizations
, normalizeLogosOfOwners
ターミネーター: normalizeOrganizationsListTerminator
バリデーター: isAuthenticated
, checkIdentityType
(['admin'])
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findOrganizationsRoute);
updateOrganizationRoute
既存の組織を更新し、更新されたリソースを返します。
目的: アクセス制御付きで組織データを変更
ルート詳細:
- メソッド:
PATCH
- パス:
/organizations/:organizationId
- 認証: 必須(Bearer トークン)
ブロック: updateOrganization
, getOrganizationById
, normalizeLogoOfOwner
ターミネーター: normalizeOrganizationTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.updateOrganizationRoute);
deleteOrganizationRoute
ID で組織を削除します。
目的: アクセス制御付きで組織を削除
ルート詳細:
- メソッド:
DELETE
- パス:
/organizations/:organizationId
- 認証: 必須(Bearer トークン)
ブロック: getOrganizationById
, deleteLogoOfOwner
, deleteOrganization
ターミネーター: deleteOrganizationTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.deleteOrganizationRoute);
getOrganizationMemberRoleRoute
組織内の特定のメンバーの役割を取得します。
目的: 組織内のメンバー役割を取得
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/members/:identityId/role
- 認証: 必須(Bearer トークン)
ブロック: getOrganizationById
, buildOrganizationsForMemberByIdsQuery
, findOrganizations
, calculateMemberRole
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.getOrganizationMemberRoleRoute);
checkOrganizationMemberExistenceRoute
組織内にメンバーが存在するかどうかをチェックします。
目的: 組織内のメンバーシップを確認
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/members/check-existence
- 認証: 必須(Bearer トークン)
ブロック: getOrganizationById
, checkOrganizationMemberExistence
ターミネーター: normalizeOrganizationMemberExistenceTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.checkOrganizationMemberExistenceRoute);
findOrganizationMembersRoute
組織内のすべてのメンバーを取得します。
目的: 組織メンバーを一覧表示
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/members
- 認証: 必須(Bearer トークン)
ブロック: findOrganizationMembers
ターミネーター: normalizeOrganizationMembersListTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findOrganizationMembersRoute);
upsertOrganizationMembersRoute
組織内でメンバーを作成または更新します。
目的: 組織メンバーのメンバーシップを管理
ルート詳細:
- メソッド:
PATCH
- パス:
/organizations/:organizationId/members
- 認証: 必須(Bearer トークン)
ブロック: getOrganizationById
, upsertOrganizationMembers
ターミネーター: upsertOrganizationMembersTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.upsertOrganizationMembersRoute);
deleteOrganizationMemberRoute
組織からメンバーを削除します。
目的: 組織メンバーシップからメンバーを削除
ルート詳細:
- メソッド:
DELETE
- パス:
/organizations/:organizationId/members/:identityId
- 認証: 必須(Bearer トークン)
ブロック: deleteOrganizationMember
ターミネーター: deleteOrganizationMemberTerminator
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.deleteOrganizationMemberRoute);
findOrganizationsForMemberRoute
特定のアイデンティティ(メンバー)のすべての組織を取得します。includeInherited=true
クエリパラメータ経由で子孫組織からの継承役割のオプションを含むをサポートします。
目的: アイデンティティがメンバーである組織を一覧表示、オプションで継承役割付き
ルート詳細:
- メソッド:
GET
- パス:
/organizations/members/:identityId
- 認証: 必須(Bearer トークン)
ブロック: buildOrganizationsForMemberByRoleQuery
, findOrganizations
, normalizeLogosOfOwners
, buildOrganizationsWithDescendantsQuery
, extractAncestors
, buildOrganizationsForMemberByIdsQuery
, calculateMemberRoleForOrganizations
, normalizeOrganizationsForMember
ターミネーター: 役割情報付きで組織リストをフォーマット;orThrow
経由で成功/エラーマッピング
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), isSelf
(['params', 'requestParams', 'identityId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findOrganizationsForMemberRoute);
getLogoUploadUrlRoute
GET /organizations/:organizationId/logo-upload-url
経由で組織ロゴの署名付きアップロード URL を生成します。
目的: 組織ロゴを安全にアップロードするための署名付き URL を発行します。
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/logo-upload-url
- 認証: 必須(Bearer トークン)
ブロック: generateSignedLogoUploadUrl
ターミネーター: orThrow
経由の組み込み成功/エラーマッピング
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// 機能構成で使用:
export const logoUploadFeature = compose(logoUploadSchema, getLogoUploadUrlRoute);
findOrganizationDescendantsRoute
指定された組織のすべての子孫組織を取得します。
目的: 組織ツリーの子孫を一覧表示;?depth=<n>
クエリパラメータ経由で深さをサポート
ルート詳細:
- メソッド:
GET
- パス:
/organizations/:organizationId/descendants
- 認証: 必須(Bearer トークン)
ブロック: getOrganizationById
, buildDescendantsQuery
, findOrganizations
, normalizeOrganizations
ターミネーター: orThrow
経由の成功/エラーマッピングで子孫組織リストを正規化
バリデーター: isAuthenticated
, some
(checkIdentityType
(['admin']), hasOrgRole
(['owner', 'admin'], ['params', 'requestParams', 'organizationId']))
使用法:
import { routes } from '@nodeblocks/backend-sdk';
// Express アプリにルートを登録
app.use('/api', routes.findOrganizationDescendantsRoute);