
# ユーザーをブロックする

`POST /v1/users/{user_id}:block` · 権限 `users:write`

顧客ブロック（`source = admin_api`）でユーザーをブロックし、ステータスを `blocked` にします。すでにブロックされているユーザーをブロックした場合は、変更なしで成功します。削除保留中のユーザーはブロックできません。ユーザーのセッションの取り消しは非同期で実行されます。再試行を安全にするには、`Idempotency-Key` ヘッダーを送信してください。

## リクエスト

| パラメーター | 場所 | 必須 | 説明 |
|---|---|---|---|
| `user_id` | path | はい | ユーザー ID。接頭辞は `usr_` です。 |

任意のボディ:

| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| `note` | string | いいえ | 最大 1000 文字。個人データは記載しないでください。 |

## レスポンス

`200 OK`。ボディはユーザーオブジェクトです。`ETag` ヘッダーにはユーザーのバージョンが含まれます。

API キーに `users:read_pii` 権限がない場合、個人データはマスクされます。`email` は `a***@e***.com` になり、`phone_number` は末尾 2 桁のみ残ります（`+**********67`）。`name`、`given_name`、`family_name`、`middle_name`、`nickname` はイニシャルになります（`A. L.`）。`username` は先頭 1 文字のみ残ります（`a***`）。`birthdate` は `****-**-**` になり、`address` は `{"redacted": true}` になります。`user_metadata` と `app_metadata` はマスクされません。

```json
{
  "id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
  "kind": "regular",
  "status": "active",
  "external_id": null,
  "username": null,
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "email_verified": true,
  "phone_number": null,
  "phone_verified": false,
  "user_metadata": {},
  "app_metadata": {},
  "created_via": "admin_api",
  "created_at": "2026-01-15T09:30:00Z",
  "updated_at": "2026-01-15T09:30:00Z",
  "last_sign_in_at": null,
  "deletion_requested_at": null,
  "deletion_due_at": null
}
```

## エラー

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

| HTTP | `code` | 発生条件 |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | ボディが有効な JSON ではないか、不明なフィールドが含まれています。 |
| 409 | `conflict` | ユーザーが削除保留中です（`errors[].code` は `user_pending_deletion`）。 |
| 415 | `unsupported_media_type` | `Content-Type: application/json` なしでボディが送信されました。 |
| 422 | `validation_failed` | `note` が長すぎます。 |
| 404 | `not_found` | この環境にユーザーが存在しないか、ID の形式が不正です。 |
| 401 | `unauthenticated` | API キーがないか、無効または取り消されています。 |
| 403 | `insufficient_permissions` | キーに `users:write` 権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` に従ってください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。後で再試行してください。 |

## 例

```bash
curl -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p:block \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"note": "Suspected account takeover"}'
```

## 個人データ

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