
# Réinitialiser tous les deuxièmes facteurs d'un utilisateur

`POST /v1/users/{user_id}/authenticators:reset` · autorisation `user-credentials:write`

Révoque tous les deuxièmes facteurs de l'utilisateur et supprime ses codes de récupération ; l'utilisateur enregistre à nouveau un facteur lors de sa prochaine connexion. `include_passkeys` vaut `true` par défaut ; avec `false`, les clés d'accès (y compris celles ayant le rôle `both`) sont conservées. Les étapes s'exécutent au mieux et peuvent être répétées ; un échec de notification ne fait pas échouer l'appel (`notified`). La réponse contient des compteurs, jamais des codes ni des secrets. Envoyez un en-tête `Idempotency-Key` pour rendre les nouvelles tentatives sans risque.

## Requête

| Paramètre | Dans | Requis | Description |
|---|---|---|---|
| `user_id` | path | oui | Identifiant de l'utilisateur, préfixé `usr_`. |

Corps facultatif :

| Champ | Type | Requis | Description |
|---|---|---|---|
| `include_passkeys` | boolean | non | `true` par défaut : les clés d'accès sont aussi révoquées. Avec `false`, les clés d'accès (y compris celles ayant le rôle `both`) sont conservées. |
| `locale` | string | non | Étiquette de langue BCP 47 de la notification, par exemple `tr`. Par défaut, la langue de l'utilisateur ou celle de l'environnement. |

## Réponse

`200 OK`. Le corps indique le nombre d'opérations effectuées.

```json
{
  "revoked_authenticators": 3,
  "recovery_codes_deleted": true,
  "notified": true
}
```

## Erreurs

Chaque erreur est un corps `application/problem+json` accompagné d'un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Le corps n'est pas du JSON valide ou contient un champ inconnu. |
| 415 | `unsupported_media_type` | Un corps a été envoyé sans `Content-Type: application/json`. |
| 422 | `validation_failed` | `locale` n'est pas une étiquette de langue BCP 47 valide, ou un champ a un type incorrect. |
| 404 | `not_found` | L'utilisateur n'existe pas dans cet environnement (ou l'identifiant est mal formé). |
| 401 | `unauthenticated` | La clé API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne possède pas l'autorisation `user-credentials: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/authenticators:reset \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"include_passkeys": false, "locale": "en"}'
```

## Données personnelles

Ce point de terminaison contient des données personnelles : identifiants. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit ce qui est stocké, la durée de conservation et la manière dont elles sont supprimées. N'envoyez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.
