組織管理
概要
組織管理APIは、テナント内の組織(グループ)を管理するためのエンドポイントを提供します。組織の階層構造、メンバーシップ、組織単位でのアクセス制御が可能です。
エンドポイント一覧
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/admin/organizations | 組織一覧取得 |
| GET | /api/admin/organizations/:id | 組織詳細取得 |
| POST | /api/admin/organizations | 組織作成 |
| PUT | /api/admin/organizations/:id | 組織更新 |
| DELETE | /api/admin/organizations/:id | 組織削除 |
| GET | /api/admin/organizations/:id/members | メンバー一覧取得 |
| POST | /api/admin/organizations/:id/members | メンバー追加 |
| DELETE | /api/admin/organizations/:id/members/:userId | メンバー削除 |
| GET | /api/admin/organizations/:id/hierarchy | 階層構造取得 |
組織一覧取得
テナント内の組織一覧を取得します。
エンドポイント
GET /api/admin/organizations
クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
limit | integer | - | 取得件数(デフォルト: 20、最大: 100) |
cursor | string | - | ページネーションカーソル |
search | string | - | 名前で検索 |
parent_id | string | - | 親組織IDでフィルタ |
include_children | boolean | - | 子組織を含める |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/organizations" \ -H "Authorization: Bearer {token}"レスポンス例
{ "items": [ { "id": "org_abc123", "name": "Engineering", "display_name": "エンジニアリング部", "description": "エンジニアリング部門", "parent_id": null, "member_count": 25, "created_at": 1705881600, "updated_at": 1705968000 }, { "id": "org_def456", "name": "Backend", "display_name": "バックエンドチーム", "description": "バックエンド開発チーム", "parent_id": "org_abc123", "member_count": 10, "created_at": 1705968000, "updated_at": 1706054400 } ], "total": 15, "cursor": null}組織詳細取得
指定された組織の詳細情報を取得します。
エンドポイント
GET /api/admin/organizations/:id
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
id | string | ○ | 組織ID |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/organizations/org_abc123" \ -H "Authorization: Bearer {token}"レスポンス例
{ "id": "org_abc123", "name": "Engineering", "display_name": "エンジニアリング部", "description": "エンジニアリング部門", "parent_id": null, "parent": null, "children": [ { "id": "org_def456", "name": "Backend", "display_name": "バックエンドチーム" }, { "id": "org_ghi789", "name": "Frontend", "display_name": "フロントエンドチーム" } ], "member_count": 25, "metadata": { "cost_center": "CC-001", "location": "Tokyo" }, "created_at": 1705881600, "updated_at": 1705968000}組織作成
新しい組織を作成します。
エンドポイント
POST /api/admin/organizations
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | ○ | 組織名(英数字、ハイフン、アンダースコア) |
display_name | string | ○ | 表示名 |
description | string | - | 説明 |
parent_id | string | - | 親組織ID |
metadata | object | - | カスタムメタデータ |
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/organizations" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "name": "DevOps", "display_name": "DevOpsチーム", "description": "インフラストラクチャとDevOps", "parent_id": "org_abc123", "metadata": { "cost_center": "CC-003" } }'レスポンス例
{ "id": "org_xyz789", "name": "DevOps", "display_name": "DevOpsチーム", "description": "インフラストラクチャとDevOps", "parent_id": "org_abc123", "member_count": 0, "created_at": 1706140800}組織更新
既存の組織情報を更新します。
エンドポイント
PUT /api/admin/organizations/:id
リクエスト例
curl -X PUT "https://{tenant-domain}/api/admin/organizations/org_abc123" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "display_name": "エンジニアリング本部", "description": "エンジニアリング本部(更新)" }'組織削除
組織を削除します。
エンドポイント
DELETE /api/admin/organizations/:id
リクエスト例
curl -X DELETE "https://{tenant-domain}/api/admin/organizations/org_abc123" \ -H "Authorization: Bearer {token}"レスポンス
ステータスコード 204 No Content(ボディなし)
メンバー一覧取得
指定された組織のメンバー一覧を取得します。
エンドポイント
GET /api/admin/organizations/:id/members
クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
limit | integer | - | 取得件数(デフォルト: 20、最大: 100) |
cursor | string | - | ページネーションカーソル |
role | string | - | 組織内ロールでフィルタ |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/organizations/org_abc123/members" \ -H "Authorization: Bearer {token}"レスポンス例
{ "items": [ { "user_id": "usr_member001", "name": "山田 太郎", "organization_role": "admin", "joined_at": 1705881600 }, { "user_id": "usr_member002", "name": "佐藤 花子", "organization_role": "member", "joined_at": 1705968000 } ], "total": 25, "cursor": "eyJ1c2VyX2lkIjoidXNyX21lbWJlcjAwMiJ9"}メンバー追加
組織にメンバーを追加します。
エンドポイント
POST /api/admin/organizations/:id/members
リクエストボディ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
user_id | string | ○ | ユーザーID |
role | string | - | 組織内ロール(admin, member、デフォルト: member) |
リクエスト例
curl -X POST "https://{tenant-domain}/api/admin/organizations/org_abc123/members" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "user_id": "usr_new789", "role": "member" }'レスポンス例
{ "organization_id": "org_abc123", "user_id": "usr_new789", "role": "member", "joined_at": 1706140800}メンバー削除
組織からメンバーを削除します。
エンドポイント
DELETE /api/admin/organizations/:id/members/:userId
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
id | string | ○ | 組織ID |
userId | string | ○ | ユーザーID |
リクエスト例
curl -X DELETE "https://{tenant-domain}/api/admin/organizations/org_abc123/members/usr_member002" \ -H "Authorization: Bearer {token}"レスポンス
ステータスコード 204 No Content(ボディなし)
階層構造取得
組織の階層構造を取得します。
エンドポイント
GET /api/admin/organizations/:id/hierarchy
クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
depth | integer | - | 取得する階層の深さ(デフォルト: 無制限) |
リクエスト例
curl -X GET "https://{tenant-domain}/api/admin/organizations/org_abc123/hierarchy?depth=3" \ -H "Authorization: Bearer {token}"レスポンス例
{ "id": "org_abc123", "name": "Engineering", "display_name": "エンジニアリング部", "member_count": 25, "children": [ { "id": "org_def456", "name": "Backend", "display_name": "バックエンドチーム", "member_count": 10, "children": [ { "id": "org_sub001", "name": "API", "display_name": "APIチーム", "member_count": 5, "children": [] } ] }, { "id": "org_ghi789", "name": "Frontend", "display_name": "フロントエンドチーム", "member_count": 8, "children": [] } ]}