
# Rimuovi un membro

`DELETE /fapi/v1/organizations/{org_id}/memberships/{membership_id}` · chiamato dall'host di accesso dell'ambiente

Rimuove un membro dall'organizzazione. L'appartenenza diventa `removed`, e le sessioni e i token dell'utente per questa organizzazione vengono revocati; il suo account e le sue altre organizzazioni non vengono toccati.

Richiede il cookie `__Host-idp_session` dell'utente autenticato con un `Origin` esatto, oppure il access token della front API di un'applicazione di prima parte (`Authorization: DPoP <token>` con una DPoP proof; vedi [Front API access token](/docs/api/fapi/front-api-token)). L'utente deve essere un membro attivo dell'organizzazione con l'autorizzazione `idp_members:remove`. Un utente che non è membro riceve `404 not_found`; un membro senza l'autorizzazione riceve `403 insufficient_permissions`.

Rimuovere un membro è un'azione sensibile: l'utente deve aver effettuato l'accesso negli ultimi 5 minuti. In caso contrario la risposta è `401 step_up_required` con `WWW-Authenticate` che indica `max_age=300`; fai effettuare di nuovo l'accesso all'utente con `maxAge: 300` e riprova. Questo controllo viene eseguito prima di leggere qualsiasi dato sull'organizzazione.

- Non puoi rimuovere qui la tua appartenenza (`403 insufficient_permissions`).
- Solo un membro con il ruolo di admin può rimuovere un membro che ha un ruolo privilegiato (`403 role_not_assignable`).
- L'ultimo admin attivo non può essere rimosso (`409 last_org_admin`).

Con `@keenauth/js`: `await keenauth.organizations.removeMember(orgId, membershipId)`.

## Richiesta

Intestazioni:

| Intestazione | Obbligatoria | Descrizione |
| --- | --- | --- |
| `Idp-Client` | sì | Identificatore dell'SDK. |
| `Origin` | sì, con il cookie | `https://<host di accesso>`. |
| `If-Match` | no | Una sola versione, `"<versione>"`, dall'elenco dei membri. Una versione che non corrisponde, o più di una versione, restituisce `412 precondition_failed`. |

`org_id`: l'identificatore dell'organizzazione (`org_…`). `membership_id`: l'identificatore dell'appartenenza (`mem_…`).

Nessun body.

## Risposta

`204 No Content`.

## Errori

| Stato | Codice | Quando |
| --- | --- | --- |
| 400 | `malformed_request` | `If-Match` è malformato. |
| 401 | `unauthenticated` | Nessun cookie di sessione o token valido. |
| 401 | `step_up_required` | L'utente ha effettuato l'accesso più di 5 minuti fa. |
| 403 | `insufficient_permissions` | L'utente non ha `idp_members:remove`, oppure l'appartenenza è la sua. |
| 403 | `role_not_assignable` | Il membro ha un ruolo privilegiato e l'utente non ha il ruolo di admin. |
| 403 | `origin_not_allowed` | L'`Origin` non corrisponde. |
| 404 | `not_found` | Nessuna organizzazione o appartenenza del genere per questo utente; un identificatore sconosciuto, malformato o di un altro utente riceve la stessa risposta. |
| 409 | `last_org_admin` | Il membro è l'ultimo admin attivo dell'organizzazione. |
| 409 | `organization_disabled` | L'organizzazione è disabilitata o in attesa di cancellazione (`organization_pending_deletion`). |
| 412 | `precondition_failed` | `If-Match` non corrisponde alla versione attuale dell'appartenenza. |
| 503 | `service_unavailable` | Temporaneamente non disponibile; riprova dopo `Retry-After`. |

## Esempio

```bash
curl -X DELETE "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -b cookies.txt
```

## Dati personali

Questo endpoint tratta dati personali: appartenenze alle organizzazioni e inviti. [Dati personali nelle API di KeenAuth](/docs/policies/personal-data) descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale) in nessun campo.
