Listar los bloqueos de cuenta
GET /v1/attack-protection/lockouts · permiso attack-protection:read
Lista los bloqueos de cuenta abiertos del entorno, del más antiguo al más reciente. La protección contra fuerza bruta bloquea una vía de inicio de sesión de un usuario (por ejemplo password o totp) después de demasiados fallos; las demás vías del usuario siguen abiertas. Un bloqueo que ya expiró no aparece en la lista, porque ya no bloquea la vía. La lista pagina solo hacia adelante y no devuelve un total. La respuesta no contiene ninguna dirección IP ni ninguna clave del contador de fallos.
Solicitud
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
limit |
query | no | Elementos por página, de 1 a 100 (predeterminado 20). |
after |
query | no | Cursor de list_metadata.after de la página anterior. |
before y order=desc no se admiten y devuelven 422.
Respuesta
200 OK.
{
"data": [
{
"id": "lck_01jaz8m5c3f6t9w2y4b7d0g3k6",
"user_id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
"path": "password",
"locked_at": "2026-10-20T09:00:00Z",
"expires_at": "2026-10-20T09:15:00Z",
"failure_count": 20
}
],
"list_metadata": {"before": null, "after": null}
}
| Campo | Descripción |
|---|---|
id |
Id del bloqueo, con el prefijo lck_. El evento user.unlocked incluye el mismo id. |
user_id |
El usuario bloqueado. |
path |
La vía de inicio de sesión bloqueada: password, totp, sms_2fa, email_2fa, otp o recovery_code. |
locked_at, expires_at |
Cuándo empezó el bloqueo y cuándo termina por sí solo. |
failure_count |
Intentos fallidos en la ventana que causó el bloqueo. |
Errores
Cada error es un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 400 | invalid_cursor |
El cursor está mal formado o pertenece a otra lista. |
| 422 | validation_failed |
limit está fuera de rango, o se envió before o un order descendente. |
| 401 | unauthenticated |
Falta la clave de API, no es válida o está revocada. |
| 403 | insufficient_permissions |
La clave no tiene el permiso attack-protection:read. |
| 429 | rate_limited |
Se superó el límite de frecuencia; respete Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; reintente más tarde. |
Ejemplo
curl https://api.eu.keenauth.com/v1/attack-protection/lockouts?limit=50 \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth attack-protection lockouts list --limit 50