
# Marquer une adresse e-mail comme vérifiée par un administrateur

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

Marque l'adresse comme vérifiée sous votre responsabilité. Aucun code ni lien n'est envoyé à l'utilisateur, et la méthode de vérification est enregistrée comme `admin_api` ; elle ne prouve donc pas que l'utilisateur contrôle la boîte aux lettres. Privilégiez `:send-verification` lorsque vous n'avez pas vérifié vous-même l'adresse. Si l'adresse est déjà vérifiée, rien n'est écrit et `200` est renvoyé. Les copies non vérifiées de la même adresse sur d'autres comptes de l'environnement sont supprimées. La modification est enregistrée dans le journal d'audit de gestion sous `user.email_verified`, la clé API étant l'auteur, et déclenche l'événement `user.updated`.

## Requête

| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
| `user_id` | path | oui | Identifiant de l'utilisateur, préfixé `usr_`. |
| `email_id` | path | oui | Identifiant de la ligne d'adresse e-mail (UUID interne, en minuscules, avec tirets), tel que renvoyé par `GET /v1/users/{user_id}/emails`. |

La requête ne comporte aucun corps (un corps vide ou `{}` est accepté).

## Réponse

`200 OK` avec la ligne d'adresse e-mail mise à jour. Sans l'autorisation `users:read_pii`, l'adresse est masquée (`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"
}
```

## Erreurs

Toute erreur est un corps `application/problem+json` contenant un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Le corps n'est pas du JSON valide, ou n'est ni vide ni `{}`. |
| 404 | `not_found` | L'utilisateur ou la ligne d'adresse e-mail n'existe pas dans cet environnement, l'adresse n'appartient pas à cet utilisateur, ou un identifiant est mal formé. |
| 401 | `unauthenticated` | La clé API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de l'autorisation `users:write`. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; respectez `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez plus tard. |

## Exemple

```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"
```

## Données personnelles

Cet point de terminaison traite des données personnelles : profil de l'utilisateur final. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit les données stockées, leur durée de conservation et leur suppression. Ne transmettez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.
