Ottieni lo stato della modalità attacco
GET /v1/attack-protection/attack-mode · autorizzazione attack-protection:read
Restituisce se l'ambiente è in modalità attacco e i periodi di modalità attacco iniziati negli ultimi 90 giorni o ancora aperti, dal più recente al più vecchio (al massimo 100; more indica che esistono periodi più vecchi in quella finestra).
Mentre l'ambiente è in modalità attacco, ogni passaggio con password e codice monouso richiede una sfida bot più severa, indipendentemente da ciò che dice bot_protection.mode. Passkey e accesso con social non vengono sottoposti a sfida. Un periodo si apre in uno di tre modi:
auto: gli accessi falliti in una finestra di 5 minuti hanno superato la soglia di attivazione (il valore più alto tra 50 e dieci volte la mediana dell'ambiente). In modalitàlogdicredential_stuffingil periodo viene registrato conwould_have: truee non viene applicato nulla, a meno che la finestra non superi tre volte la soglia.manual_customer: l'hai attivata conactivate.manual_platform: le operazioni di KeenAuth l'hanno attivata.
active è true solo mentre un periodo applicato (would_have: false) copre l'intero ambiente; in quel caso active_until è la fine più tardiva di quei periodi. Un periodo la cui fine è già passata ma che la pulizia non ha ancora chiuso risulta concluso a ends_at. Chi ha aperto un periodo manuale è nel log di audit di gestione, non in questa risposta.
Risposta
200 OK
| Campo | Tipo | Descrizione |
|---|---|---|
active |
boolean | L'ambiente è in modalità attacco adesso. |
active_until |
string (date-time) o null | Quando termina la modalità attacco corrente, a meno che un periodo automatico non venga esteso; null quando active è false. |
periods[] |
array | Periodi, dal più recente al più vecchio. |
periods[].id |
string | Id del periodo, con prefisso atm_. |
periods[].scope |
string | environment oppure org_domain. |
periods[].org_domain |
string o null | Il dominio email dell'organizzazione di un periodo org_domain. |
periods[].trigger |
string | auto, manual_customer oppure manual_platform. |
periods[].would_have |
boolean | true: registrato in modalità log, non applicato. |
periods[].trigger_value |
integer o null | Tentativi falliti nella finestra di 5 minuti che hanno aperto un periodo auto; null per i periodi manuali. |
periods[].threshold |
integer o null | La soglia superata da quella finestra; null per i periodi manuali. |
periods[].started_at |
string (date-time) | Quando è iniziato il periodo. |
periods[].ends_at |
string (date-time) | Quando il periodo termina da solo. Un periodo auto viene esteso finché l'attacco continua. |
periods[].ended_at |
string (date-time) o null | Quando il periodo è terminato; null finché è aperto. |
more |
boolean | Esistono periodi più vecchi negli ultimi 90 giorni. |
{
"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
}
Errori
Ogni errore è un corpo application/problem+json con un code stabile.
| HTTP | code |
Quando |
|---|---|---|
| 401 | unauthenticated |
La chiave API manca, non è valida o è stata revocata. |
| 403 | insufficient_permissions |
La chiave non ha l'autorizzazione attack-protection:read. |
| 429 | rate_limited |
È stato superato il limite di richieste; rispetta Retry-After. |
| 503 | service_unavailable |
Una dipendenza non è disponibile temporaneamente; riprova più tardi. |
Esempio
curl https://api.eu.keenauth.com/v1/attack-protection/attack-mode \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth attack-protection attack-mode get