
# Revoca le sessioni di un'organizzazione

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

Revoca ogni sessione attiva aperta nel contesto dell'organizzazione, per tutti i suoi utenti, insieme alle famiglie di refresh token emesse per l'organizzazione o associate a tali sessioni. Da quel momento i token di accesso emessi per l'organizzazione smettono di essere accettati dall'introspezione e dal controllo di revoca. Usarlo dopo un incidente di sicurezza o quando un'organizzazione viene dismessa; per disconnettere un singolo utente o una singola sessione, usare [Revoca le sessioni di un utente](../users/revoke-sessions.md).

Il corpo deve contenere un `reason`. Viene memorizzato solo come nota nel record di audit di gestione; le sessioni stesse terminano con il motivo di revoca `admin`. Le sessioni già revocate o scadute non vengono conteggiate, quindi una chiamata ripetuta ha successo con conteggi pari a zero. Inviare un'intestazione `Idempotency-Key` per rendere sicuri i nuovi tentativi.

## Richiesta

| Parametro | In | Obbligatorio | Descrizione |
|---|---|---|---|
| `org_id` | path | sì | ID organizzazione, con prefisso `org_`. |

Corpo:

| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `reason` | string | sì | La nota per il log di audit: da 1 a 256 caratteri, senza caratteri di controllo né interruzioni di riga. |

## Risposta

`200 OK`.

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

| Campo | Descrizione |
|---|---|
| `revoked_sessions` | Sessioni revocate da questa chiamata. |
| `revoked_token_families` | Famiglie di refresh token revocate da questa chiamata. |

## Errori

Ogni errore è un body `application/problem+json` con un `code` stabile.

| HTTP | `code` | Quando |
|---|---|---|
| 400 | `malformed_request`, `unknown_field` | Il corpo non è JSON valido oppure contiene un campo sconosciuto. |
| 415 | `unsupported_media_type` | Il corpo è stato inviato senza `Content-Type: application/json`. |
| 422 | `validation_failed` | `reason` manca o è vuoto (`required`), supera 256 caratteri (`too_long`) oppure contiene un carattere di controllo o un'interruzione di riga (`invalid_value`). |
| 404 | `not_found` | L'organizzazione non esiste in questo ambiente. |
| 401 | `unauthenticated` | La chiave API manca, non è valida o è stata revocata. |
| 403 | `insufficient_permissions` | La chiave non ha il permesso `sessions:write`. |
| 429 | `rate_limited` | È stato superato il limite di frequenza; attendi il periodo indicato in `Retry-After`. |
| 503 | `service_unavailable` | Una dipendenza non è disponibile temporaneamente; riprova più tardi. |

## Esempio

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