
# Angriffsmodus einschalten

`POST /v1/attack-protection/attack-mode:activate` · Berechtigung `attack-protection:write`

Versetzt die Umgebung für `duration_minutes` (15 bis 1.440) ab jetzt in den Angriffsmodus, unabhängig von `bot_protection.mode` und `credential_stuffing`. Danach verlangt jeder Schritt mit Passwort oder Einmalcode eine strengere Bot-Prüfung; Passkey und Social Sign-in werden nicht geprüft. Verwenden Sie dies, wenn Sie einen Angriff erkennen, bevor der automatische Auslöser reagiert.

Ist Ihr manueller Zeitraum bereits offen, wird sein Ende auf jetzt plus `duration_minutes` gesetzt, sofern das später liegt. Eine kürzere Dauer beendet ihn nie früher (verwenden Sie dafür [`deactivate`](deactivate-attack-mode.md)). Das Öffnen eines Zeitraums schreibt das Ereignis `attack_mode_activated` und einen Verwaltungs-Audit-Eintrag (`attack_mode.activated`); eine Verlängerung schreibt den Audit-Eintrag `attack_mode.extended`. Akteur ist Ihre Anmeldeinformation. Senden Sie einen `Idempotency-Key`-Header, um sicher wiederholen zu können.

## Anfrage

```json
{ "duration_minutes": 60 }
```

| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| `duration_minutes` | integer | ja | 15 bis 1.440. |

## Antwort

`200 OK` mit dem aktuellen Status, so wie ihn [`GET /v1/attack-protection/attack-mode`](get-attack-mode.md) zurückgibt.

## Fehler

Jeder Fehler ist ein `application/problem+json`-Body mit einem stabilen `code`.

| HTTP | `code` | Wann |
|---|---|---|
| 400 | `malformed_request` | Der Body ist kein JSON-Objekt. |
| 400 | `unknown_field` | Der Body enthält ein anderes Feld als `duration_minutes`. |
| 422 | `validation_failed` | `duration_minutes` fehlt, ist keine ganze Zahl oder liegt außerhalb von 15 bis 1.440 (`errors[].pointer` ist `/duration_minutes`). |
| 401 | `unauthenticated` | Der API-Schlüssel fehlt, ist ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Dem Schlüssel fehlt die Berechtigung `attack-protection:write`. |
| 429 | `rate_limited` | Das Ratenlimit wurde überschritten; beachten Sie `Retry-After`. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; versuchen Sie es später erneut. |

## Beispiel

```bash
curl -X POST https://api.eu.keenauth.com/v1/attack-protection/attack-mode:activate \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7b2f0c1e-attack-mode-1" \
  -d '{"duration_minutes": 60}'
```

CLI: `keenauth attack-protection attack-mode activate --duration-minutes 60`
