メンバーのロールを設定する
PUT /fapi/v1/organizations/{org_id}/memberships/{membership_id}/roles · 環境のサインインホストから呼び出します
組織のプロフィール画面で使用するため、メンバーシップのロールを完全なセットで置き換えます。このセットに含まれるのは、この組織で見えるロール、つまりこの組織のロールと、組織管理者が利用できる環境のロールのみです。メンバーの他のロールは維持されます。空のセットを指定すると、見えるロールがすべて削除されます。メンバーにロールが残らない場合は、組織のデフォルトロールが割り当てられます。
認証済みユーザーの __Host-idp_session Cookie と完全一致する Origin、またはファーストパーティアプリのフロント API アクセストークン(DPoP 証明付きの Authorization: DPoP <token>。フロント API アクセストークンを参照してください)が必要です。ユーザーは、idp_members:update_roles 権限を持つ組織のアクティブなメンバーである必要があります。メンバーではないユーザーには 404 not_found が返されます。権限のないメンバーには 403 insufficient_permissions が返されます。
割り当てのルール:
- 割り当てる各ロールのすべての権限は、ご自身が保有している必要があります。
- 特権ロールを割り当てられるのは、管理者ロールを持つメンバーのみです。
- ご自身のロールは変更できません。
- 最後のアクティブな管理者から管理者ロールを外すことはできません(
409 last_org_admin)。
@keenauth/js を使用する場合: await keenauth.organizations.setMemberRoles(orgId, membershipId, [roleId], { expectedVersion: 3 })
リクエスト
ヘッダー:
| ヘッダー | 必須 | 説明 |
|---|---|---|
Idp-Client |
はい | SDK 識別子です。 |
Origin |
Cookie を使用する場合は必須 | https://<サインインホスト>。 |
If-Match |
いいえ | メンバー一覧から取得した 1 つのバージョン "<version>"。一致しないバージョン、または複数のバージョンを指定すると 412 precondition_failed が返されます。 |
org_id: 組織の識別子(org_…)です。membership_id: メンバーシップの識別子(mem_…)です。
ボディ: {"role_ids": ["rol_…"]}。最大 50 件のロールを指定できます。role_ids は必須です。[] は有効なセットです。
レスポンス
200 OK とメンバーシップ(メンバー一覧の項目と同じフィールド)、および ETag: "<version>" が返されます。
エラー
| ステータス | コード | 発生条件 |
|---|---|---|
| 400 | malformed_request |
If-Match の形式が正しくありません。 |
| 400 | unknown_field |
ボディに role_ids 以外のフィールドが含まれています。 |
| 401 | unauthenticated |
有効なセッション Cookie またはトークンがありません。 |
| 403 | insufficient_permissions |
ユーザーに組織内の idp_members:update_roles 権限がありません。 |
| 403 | role_not_assignable |
上記の割り当てルールにより、この変更は拒否されます。 |
| 403 | origin_not_allowed |
Origin が一致しません。 |
| 404 | not_found |
このユーザーに対して、該当する組織、メンバーシップ、またはロールが存在しません。存在しない識別子、形式が不正な識別子、他の組織の識別子はいずれも同じ応答になります。 |
| 409 | last_org_admin |
変更すると、組織にアクティブな管理者がいなくなります。 |
| 409 | role_limit_reached |
メンバーが 50 件を超えるロールを保持することになります。 |
| 409 | organization_disabled |
組織が無効化されているか、削除保留中です(organization_pending_deletion)。 |
| 412 | precondition_failed |
If-Match がメンバーシップの現在のバージョンを指定していません。 |
| 422 | validation_failed |
role_ids が欠けているか、長すぎるか、または形式の不正な識別子を含んでいます。 |
| 503 | service_unavailable |
一時的に利用できません。Retry-After の後に再試行してください。 |
例
curl -X PUT "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b/roles" \
-H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
-H "Origin: https://example.keenauth.app" \
-H "Content-Type: application/json" \
-H 'If-Match: "3"' \
-b cookies.txt \
-d '{"role_ids":["rol_01jbz6x8kq3m2n4p5r6s7t8v9w"]}'
{
"id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
"user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
"status": "active",
"roles": [{ "role_id": "rol_01jbz6x8kq3m2n4p5r6s7t8v9w", "source": "admin_api" }],
"created_at": "2026-11-03T09:00:00Z",
"activated_at": "2026-11-03T09:00:00Z",
"expires_at": null,
"updated_at": "2026-11-03T10:00:00Z",
"version": 4
}
個人データ
このエンドポイントは個人データ(組織のメンバーシップと招待)を扱います。KeenAuth API における個人データでは、保存される内容、保存期間、削除方法について説明しています。いずれのフィールドにも、特別な種類の個人データ(健康、生体情報、宗教、政治的意見、性的指向)を送信しないでください。