
# セッションを取り消す

`POST /v1/sessions/{session_id}:revoke` · 権限 `sessions:write`

セッションと、それに紐づくリフレッシュトークンファミリーを取り消します。そのセッション内で発行されたアクセストークンは、イントロスペクションと失効チェック（`sid`）で受け付けられなくなり、そのセッションのアプリケーションにはログアウト通知が送られます。リクエストにボディはありません。すでに取り消されているか期限切れのセッションを取り消しても何も変わらず、`already_inactive: true` を返します。取り消しは管理監査ログに記録されます。再試行を安全にするには、`Idempotency-Key` ヘッダーを送信してください。

## リクエスト

| パラメータ | 入力 | 必須 | 説明 |
|---|---|---|---|
| `session_id` | path | はい | セッション ID。`ses_` で始まります。 |

## レスポンス

`200 OK`。

```json
{
  "already_inactive": false,
  "revoked_token_families": 2
}
```

## エラー

すべてのエラーは、安定した `code` を含む `application/problem+json` ボディとして返されます。

| HTTP | `code` | 発生条件 |
|---|---|---|
| 400 | `malformed_request`、`unknown_field` | ボディが送信されていて、有効な JSON ではないか、フィールドがあります。 |
| 404 | `not_found` | セッションがこの環境に存在しません（または ID の形式が不正です）。 |
| 401 | `unauthenticated` | API キーがない、無効、または失効しています。 |
| 403 | `insufficient_permissions` | キーに `sessions:write` 権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` に従ってください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。後で再試行してください。 |

## 例

```bash
curl -X POST https://api.eu.keenauth.com/v1/sessions/ses_0a1b2c3d4e5f6g7h8j9k0m1n2p:revoke \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
```

CLI: `keenauth sessions revoke ses_0a1b2c3d4e5f6g7h8j9k0m1n2p --yes`
