Bloquer un utilisateur
POST /v1/users/{user_id}:block · autorisation users:write
Bloque un utilisateur au moyen d'un blocage client (source = admin_api) ; le statut devient blocked. Bloquer un utilisateur déjà bloqué réussit sans modification. Un utilisateur en attente de suppression ne peut pas être bloqué. La révocation des sessions de l'utilisateur s'exécute de manière asynchrone. Envoyez un en-tête Idempotency-Key pour rendre les nouvelles tentatives sûres.
Requête
| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
user_id |
path | oui | Identifiant de l'utilisateur, préfixé usr_. |
Corps facultatif :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
note |
string | non | Jusqu'à 1000 caractères. N'indiquez pas de données personnelles. |
Réponse
200 OK. Le corps est l'objet utilisateur. L'en-tête ETag porte la version de l'utilisateur.
Les données personnelles sont masquées lorsque la clé ne dispose pas de l'autorisation users:read_pii : email devient a***@e***.com, phone_number ne conserve que ses 2 derniers chiffres (+**********67), name, given_name, family_name, middle_name et nickname deviennent des initiales (A. L.), username ne conserve que son premier caractère (a***), birthdate devient ****-**-** et address devient {"redacted": true}. user_metadata et app_metadata ne sont pas masqués.
{
"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
}
Erreurs
Chaque erreur est un corps application/problem+json avec un code stable.
| HTTP | code |
Quand |
|---|---|---|
| 400 | malformed_request, unknown_field |
Le corps n'est pas du JSON valide ou contient un champ inconnu. |
| 409 | conflict |
L'utilisateur est en attente de suppression (errors[].code vaut user_pending_deletion). |
| 415 | unsupported_media_type |
Un corps a été envoyé sans Content-Type: application/json. |
| 422 | validation_failed |
note est trop long. |
| 404 | not_found |
L'utilisateur n'existe pas dans cet environnement (ou l'identifiant est mal formé). |
| 401 | unauthenticated |
La clé d'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
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"}'
Données personnelles
Cet endpoint traite des données personnelles : profil de l'utilisateur final. Données personnelles dans les API KeenAuth 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.