
# Activer le mode d'attaque

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

Place l'environnement en mode d'attaque pendant `duration_minutes` (de 15 à 1 440) à partir de maintenant, quelles que soient les valeurs de `bot_protection.mode` et de `credential_stuffing`. Chaque étape de mot de passe et de code à usage unique exige alors une vérification anti-bot plus stricte ; la connexion par passkey et la connexion sociale ne sont pas soumises à cette vérification. Utilisez cette action lorsque vous détectez une attaque avant le déclenchement automatique.

Si votre période manuelle est déjà ouverte, sa fin passe à maintenant plus `duration_minutes`, lorsque cette date est postérieure. Une durée plus courte ne la termine jamais plus tôt (utilisez [`deactivate`](deactivate-attack-mode.md) pour cela). L'ouverture d'une période écrit l'événement `attack_mode_activated` et un enregistrement d'audit de gestion (`attack_mode.activated`) ; une prolongation écrit l'enregistrement d'audit `attack_mode.extended`. Votre identifiant est l'acteur. Envoyez un en-tête `Idempotency-Key` pour pouvoir réessayer sans risque.

## Requête

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

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `duration_minutes` | integer | oui | De 15 à 1 440. |

## Réponse

`200 OK` avec l'état actuel, tel que le renvoie [`GET /v1/attack-protection/attack-mode`](get-attack-mode.md).

## Erreurs

Chaque erreur est un corps `application/problem+json` contenant un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `malformed_request` | Le corps n'est pas un objet JSON. |
| 400 | `unknown_field` | Le corps contient un champ autre que `duration_minutes`. |
| 422 | `validation_failed` | `duration_minutes` est absent, n'est pas un entier ou est hors de la plage 15 à 1 440 (`errors[].pointer` vaut `/duration_minutes`). |
| 401 | `unauthenticated` | La clé d'API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de l'autorisation `attack-protection:write`. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; respectez `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez plus tard. |

## Exemple

```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`
