
# 管理者がメールアドレスを確認済みに設定

`POST /v1/users/{user_id}/emails/{email_id}:verify` · 権限 `users:write`

お客様の権限により、このアドレスを確認済みに設定します。ユーザーにコードやリンクは送信されず、確認方法は `admin_api` として保存されます。そのため、ユーザーがメールボックスを管理していることの証明にはなりません。お客様自身がアドレスを確認していない場合は、`:send-verification` の使用を推奨します。アドレスがすでに確認済みの場合は何も書き込まれず、`200` が返されます。同じenvironment内の他のアカウントにある、同じアドレスの未確認のコピーは削除されます。変更は管理監査ログに `user.email_verified` として記録され、実行者はAPI キーになります。また、`user.updated` イベントが発行されます。

## リクエスト

| パラメータ | 指定場所 | 必須 | 説明 |
|---|---|---|---|
| `user_id` | path | はい | ユーザー ID。接頭辞は `usr_` です。 |
| `email_id` | path | はい | メールの行の ID（内部 UUID、小文字、ハイフン区切り）。`GET /v1/users/{user_id}/emails` が返す値です。 |

リクエストにはボディを指定しません（空のボディまたは `{}` は受け付けられます）。

## レスポンス

`200 OK`。更新後のメールの行を返します。`users:read_pii` 権限がない場合、アドレスはマスクされます（`a***@e***.com`）。

```json
{
  "id": "0191f0a0-3333-7444-8555-666666666666",
  "email": "ada@example.com",
  "verified": true,
  "primary": false,
  "created_at": "2026-01-15T09:30:00Z"
}
```

## エラー

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

| HTTP | `code` | 発生条件 |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | ボディが有効な JSON ではない、または空でも `{}` でもありません。 |
| 404 | `not_found` | この環境にユーザーまたはメールの行が存在しない、メールがこのユーザーに属さない、あるいはいずれかの ID の形式が不正です。 |
| 401 | `unauthenticated` | API キーが未指定、無効、または取り消されています。 |
| 403 | `insufficient_permissions` | API キーに `users:write` 権限がありません。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` に従ってください。 |
| 503 | `service_unavailable` | 依存先サービスが一時的に利用できません。後で再試行してください。 |

## 例

```bash
curl -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/emails/0191f0a0-3333-7444-8555-666666666666:verify \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

## 個人データ

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