
# Desbloquear un usuario

`POST /v1/users/{user_id}:unlock` · permiso `user-credentials:write`

Elimina todos los bloqueos de cuenta abiertos de un usuario, en todas las vías de inicio de sesión, y reinicia sus contadores de fallos. Por cada bloqueo eliminado se registra el evento `user.unlocked` (`by = admin`), y un registro de auditoría de administración (`user.unlocked`) enumera los bloqueos eliminados, con sus credenciales como actor. Un usuario sin bloqueos abiertos recibe `unlocked: 0` y no se escribe nada, por lo que la llamada puede repetirse sin riesgo. Para eliminar un solo bloqueo, use [`DELETE /v1/attack-protection/lockouts/{lockout_id}`](../attack-protection/delete-lockout.md).

## Solicitud

| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
| `user_id` | ruta | sí | Id. del usuario, con prefijo `usr_`. |

La operación no admite cuerpo.

## Respuesta

`200 OK`.

```json
{"unlocked": 2}
```

`unlocked` es el número de bloqueos eliminados (como máximo uno por vía de inicio de sesión).

## Errores

Cada error es un cuerpo `application/problem+json` con un `code` estable.

| HTTP | `code` | Cuándo |
|---|---|---|
| 404 | `not_found` | El usuario no existe en este entorno (o el id tiene un formato incorrecto). |
| 401 | `unauthenticated` | La clave de API falta, no es válida o fue revocada. |
| 403 | `insufficient_permissions` | La clave no tiene el permiso `user-credentials:write`. |
| 429 | `rate_limited` | Se superó el límite de tasa; respete `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; vuelva a intentarlo más tarde. |

## Ejemplo

```bash
curl -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p:unlock \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth users unlock usr_0a1b2c3d4e5f6g7h8j9k0m1n2p`
