Obtener el estado del modo de ataque
GET /v1/attack-protection/attack-mode · permiso attack-protection:read
Devuelve si el entorno está en modo de ataque y los periodos de modo de ataque que comenzaron en los últimos 90 días o que siguen abiertos, del más reciente al más antiguo (como máximo 100; more indica que existen periodos más antiguos dentro de ese intervalo).
Mientras el entorno esté en modo de ataque, cada paso de contraseña y de código de un solo uso exige un desafío de bot más estricto, independientemente de lo que indique bot_protection.mode. El inicio de sesión con clave de acceso y con redes sociales no se somete a desafío. Un periodo se abre de una de tres formas:
auto: los inicios de sesión fallidos en una ventana de 5 minutos superaron el umbral de activación (el mayor entre 50 y diez veces la mediana del entorno). En modologdecredential_stuffing, el periodo se registra conwould_have: truey no se aplica nada, salvo que la ventana supere tres veces el umbral.manual_customer: lo activó usted conactivate.manual_platform: lo activaron las operaciones de KeenAuth.
active es true solo mientras un periodo aplicado (would_have: false) cubra todo el entorno; en ese caso, active_until es el fin más tardío de esos periodos. Un periodo cuyo fin ya pasó, pero que la limpieza todavía no ha cerrado, aparece como finalizado en ends_at. Quién abrió un periodo manual consta en el registro de auditoría de gestión, no en esta respuesta.
Respuesta
200 OK
| Campo | Tipo | Descripción |
|---|---|---|
active |
boolean | El entorno está ahora en modo de ataque. |
active_until |
string (date-time) o null | Cuándo termina el modo de ataque actual, salvo que se prolongue un periodo automático; null cuando active es false. |
periods[] |
array | Periodos, del más reciente al más antiguo. |
periods[].id |
string | Identificador del periodo, con el prefijo atm_. |
periods[].scope |
string | environment u org_domain. |
periods[].org_domain |
string o null | El dominio de correo electrónico de la organización de un periodo org_domain. |
periods[].trigger |
string | auto, manual_customer o manual_platform. |
periods[].would_have |
boolean | true: registrado en modo log, no aplicado. |
periods[].trigger_value |
integer o null | Intentos fallidos en la ventana de 5 minutos que abrieron un periodo auto; null en periodos manuales. |
periods[].threshold |
integer o null | El umbral que superó esa ventana; null en periodos manuales. |
periods[].started_at |
string (date-time) | Cuándo comenzó el periodo. |
periods[].ends_at |
string (date-time) | Cuándo termina el periodo por sí mismo. Un periodo auto se prolonga mientras continúe el ataque. |
periods[].ended_at |
string (date-time) o null | Cuándo terminó el periodo; null mientras siga abierto. |
more |
boolean | Existen periodos más antiguos en los últimos 90 días. |
{
"active": true,
"active_until": "2026-10-20T10:00:00Z",
"periods": [
{
"id": "atm_01jaz8m5c3f6t9w2y4b7d0g3k6",
"scope": "environment",
"org_domain": null,
"trigger": "manual_customer",
"would_have": false,
"trigger_value": null,
"threshold": null,
"started_at": "2026-10-20T09:00:00Z",
"ends_at": "2026-10-20T10:00:00Z",
"ended_at": null
}
],
"more": false
}
Errores
Cada error es un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 401 | unauthenticated |
La clave de API falta, no es válida o ha sido 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/attack-mode \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth attack-protection attack-mode get