Sospendi un membro

POST /fapi/v1/organizations/{org_id}/memberships/{membership_id}:suspend · chiamato dall'host di accesso dell'ambiente

Sospende una membership. Il membro mantiene i suoi ruoli ma non può agire nell'organizzazione: le sue sessioni e i suoi token nel contesto di questa organizzazione vengono revocati, e non può selezionare l'organizzazione finché un membro non lo riattiva. Sospendere un membro già sospeso restituisce la membership invariata. L'ultimo amministratore attivo non può essere sospeso (409 last_org_admin).

Richiede il cookie __Host-idp_session dell'utente autenticato con un Origin esatto, oppure un access token dell'API front di un'app first-party (Authorization: DPoP <token> con una prova DPoP; vedi Access token dell'API front). L'utente deve essere un membro attivo dell'organizzazione con entrambe le autorizzazioni idp_members:update_roles e idp_members:remove. Un utente che non è membro riceve 404 not_found; un membro senza entrambe le autorizzazioni riceve 403 insufficient_permissions. Non puoi cambiare qui la tua membership (403 insufficient_permissions), e solo un membro che possiede il ruolo di amministratore può modificare un membro che possiede un ruolo privilegiato (403 role_not_assignable).

Con @keenauth/js: await keenauth.organizations.suspendMember(orgId, membershipId, { expectedVersion: 3 }).

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 della membership (mem_…).

Nessun corpo.

Risposta

200 OK con la membership (gli stessi campi di un elemento di l'elenco dei membri) e ETag: "<versione>".

Errori

Stato Codice Quando
400 malformed_request If-Match non è valida.
401 unauthenticated Nessun cookie di sessione o token valido.
403 insufficient_permissions L'utente non ha idp_members:update_roles o idp_members:remove, oppure la membership è la sua.
403 role_not_assignable Il membro possiede un ruolo privilegiato e l'utente non possiede il ruolo di amministratore.
403 origin_not_allowed L'Origin non corrisponde.
404 not_found Nessuna organizzazione o membership di questo tipo per questo utente; un identificatore inesistente, non valido o di un altro utente produce la stessa risposta.
409 last_org_admin Il membro è l'ultimo amministratore attivo dell'organizzazione.
409 organization_disabled L'organizzazione è disattivata o in attesa di eliminazione (organization_pending_deletion).
412 precondition_failed If-Match non corrisponde alla versione corrente della membership.
422 validation_failed La membership è stata rimossa.
503 service_unavailable Temporaneamente non disponibile; riprova dopo Retry-After.

Esempio

curl -X POST "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships/mem_01jbz6x8kq3m2n4p5r6s7t8v9b:suspend" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H 'If-Match: "3"' \
  -b cookies.txt
{
  "id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
  "user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
  "status": "suspended",
  "roles": [{ "role_id": "rol_01jbz6x8kq3m2n4p5r6s7t8v9w", "source": "admin_api" }],
  "created_at": "2026-11-03T09:00:00Z",
  "activated_at": "2026-11-03T09:00:00Z",
  "expires_at": null,
  "updated_at": "2026-11-03T11:00:00Z",
  "version": 4
}

Dati personali

Questo endpoint contiene dati personali: membership e inviti dell'organizzazione. I dati personali nelle API di KeenAuth descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene eliminato. Non inviare in nessun campo categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale).