
# Révoquer les sessions d'une organisation

`POST /v1/organizations/{org_id}/sessions:revoke` · autorisation `sessions:write`

Révoque toutes les sessions actives ouvertes dans le contexte de l'organisation, pour l'ensemble de ses utilisateurs, ainsi que les familles de jetons d'actualisation émises pour l'organisation ou liées à ces sessions. Les jetons d'accès émis pour l'organisation cessent d'être acceptés par l'introspection et par la vérification de révocation à partir de ce moment. Utilisez-le après un incident de sécurité ou lorsqu'une organisation quitte la plateforme ; pour déconnecter un seul utilisateur ou une seule session, utilisez [Révoquer les sessions d'un utilisateur](../users/revoke-sessions.md).

Le corps doit contenir un `reason`. Il n'est conservé que comme note sur l'enregistrement d'audit de gestion ; les sessions elles-mêmes se terminent avec le motif de révocation `admin`. Les sessions déjà révoquées ou expirées ne sont pas comptées, de sorte qu'un appel répété réussit avec des compteurs à zéro. Envoyez un en-tête `Idempotency-Key` pour rendre les nouvelles tentatives sûres.

## Demande

| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
| `org_id` | chemin | oui | Identifiant d'organisation, préfixé `org_`. |

Corps :

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `reason` | chaîne | oui | Votre note pour le journal d'audit : 1 à 256 caractères, sans caractères de contrôle ni sauts de ligne. |

## Réponse

`200 OK`.

```json
{
  "revoked_sessions": 42,
  "revoked_token_families": 57
}
```

| Champ | Description |
|---|---|
| `revoked_sessions` | Sessions révoquées par cet appel. |
| `revoked_token_families` | Familles de jetons d'actualisation révoquées par cet appel. |

## Erreurs

Chaque erreur est un corps `application/problem+json` accompagné d'un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Le corps n'est pas du JSON valide ou contient un champ inconnu. |
| 415 | `unsupported_media_type` | Un corps a été envoyé sans `Content-Type: application/json`. |
| 422 | `validation_failed` | `reason` est absent ou vide (`required`), dépasse 256 caractères (`too_long`) ou contient un caractère de contrôle ou un saut de ligne (`invalid_value`). |
| 404 | `not_found` | L'organisation n'existe pas dans cet environnement. |
| 401 | `unauthenticated` | La clé d'API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de l'autorisation `sessions:write`. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; respectez l'en-tête `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/organizations/org_0a1b2c3d4e5f6g7h8j9k0m1n2p/sessions:revoke \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Security incident INC-1042"}'
```

CLI : `keenauth organizations sessions revoke org_0a1b2c3d4e5f6g7h8j9k0m1n2p --reason "Security incident INC-1042" --yes`
