
# メンバーを削除

`DELETE /fapi/v1/organizations/{org_id}/memberships/{membership_id}` · 環境のサインインホストから呼び出します

組織からメンバーを削除します。メンバーシップは `removed` になり、ユーザーのこの組織に対するセッションとトークンは取り消されます。ユーザーのアカウントや他の組織には影響しません。

`Origin` が完全一致する認証済みユーザーの `__Host-idp_session` Cookie、または自社アプリのフロント API アクセストークン（`Authorization: DPoP <token>` と DPoP 証明書を使用します。[フロント API アクセストークン](/docs/api/fapi/front-api-token)を参照してください）が必要です。ユーザーは組織のアクティブなメンバーであり、`idp_members:remove` 権限を持っている必要があります。メンバーではないユーザーには `404 not_found` を返します。権限を持たないメンバーには `403 insufficient_permissions` を返します。

メンバーの削除は機密性の高い操作です。ユーザーは過去 5 分以内にサインインしている必要があります。そうでない場合は、`WWW-Authenticate` に `max_age=300` を指定した `401 step_up_required` を返します。`maxAge: 300` を指定してユーザーに再度サインインしてもらい、リクエストを再試行してください。この確認は、組織の情報を読み取る前に行われます。

- ここで自分のメンバーシップを削除することはできません（`403 insufficient_permissions`）。
- 特権ロールを持つメンバーを削除できるのは、管理者ロールを持つメンバーのみです（`403 role_not_assignable`）。
- 最後のアクティブな管理者は削除できません（`409 last_org_admin`）。

`@keenauth/js` を使用する場合: `await keenauth.organizations.removeMember(orgId, membershipId)`。

## リクエスト

ヘッダー:

| ヘッダー | 必須 | 説明 |
| --- | --- | --- |
| `Idp-Client` | はい | SDK の識別子です。 |
| `Origin` | はい（Cookie を使用する場合） | `https://<サインインホスト>`。 |
| `If-Match` | いいえ | メンバー一覧から取得した一つのバージョン `"<version>"`。一致しないバージョン、または複数のバージョンを指定した場合は `412 precondition_failed` を返します。 |

`org_id`: 組織の識別子（`org_…`）です。`membership_id`: メンバーシップの識別子（`mem_…`）です。

ボディはありません。

## レスポンス

`204 No Content`。

## エラー

| ステータス | コード | 発生条件 |
| --- | --- | --- |
| 400 | `malformed_request` | `If-Match` の形式が正しくありません。 |
| 401 | `unauthenticated` | 有効なセッション Cookie またはトークンがありません。 |
| 401 | `step_up_required` | ユーザーが 5 分より前にサインインしています。 |
| 403 | `insufficient_permissions` | ユーザーに `idp_members:remove` がないか、対象のメンバーシップがユーザー自身のものです。 |
| 403 | `role_not_assignable` | メンバーが特権ロールを持ち、ユーザーが管理者ロールを持っていません。 |
| 403 | `origin_not_allowed` | `Origin` が一致しません。 |
| 404 | `not_found` | このユーザーに対して該当する組織またはメンバーシップがありません。存在しない識別子、形式が正しくない識別子、他のユーザーの識別子に対しては、同じ応答を返します。 |
| 409 | `last_org_admin` | メンバーが組織の最後のアクティブな管理者です。 |
| 409 | `organization_disabled` | 組織が無効化されているか、削除保留中です（`organization_pending_deletion`）。 |
| 412 | `precondition_failed` | `If-Match` がメンバーシップの現在のバージョンを指定していません。 |
| 503 | `service_unavailable` | 一時的に利用できません。`Retry-After` の後に再試行してください。 |

## 例

```bash
curl -X DELETE "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -b cookies.txt
```

## 個人データ

このエンドポイントは個人データを扱います。組織のメンバーシップと招待が対象です。[KeenAuth API における個人データ](/docs/policies/personal-data)では、保存される内容、保管期間、削除方法を説明しています。どのフィールドにも、特別な種類の個人データ（健康、生体情報、宗教、政治的意見、性的指向）を送信しないでください。
