
# Elenca i membri di un'organizzazione

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

Elenca le appartenenze di un'organizzazione, ordinate per ultima modifica, per una schermata del profilo dell'organizzazione. Gli inviti in sospeso non compaiono mai qui. Ogni riga indica l'utente solo tramite il suo identificatore `usr_…`; questo endpoint non restituisce nomi né indirizzi email. Richiede il cookie `__Host-idp_session` dell'utente autenticato; se il cookie manca, è scaduto o è stato revocato, restituisce `401 unauthenticated`. Un'applicazione di prima parte su un'altra origin può invece inviare il proprio access token della front API (`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:read`. Un utente che non è membro riceve `404 not_found`; un membro senza l'autorizzazione riceve `403 insufficient_permissions`.

Con `@keenauth/js`: `await keenauth.organizations.members(orgId, { status: "active" })`.

## Richiesta

Intestazioni:

| Intestazione | Obbligatoria | Descrizione |
| --- | --- | --- |
| `Idp-Client` | sì | Identificatore dell'SDK. |

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

Parametri query:

| Parametro | Obbligatorio | Descrizione |
| --- | --- | --- |
| `status` | no | `active`, `suspended` o `removed`; tutti e tre se omesso. |
| `role_id` | no | Solo le appartenenze che hanno questo ruolo (`rol_…`). |
| `after` | no | Il valore `next_after` della pagina precedente (opaco). |
| `limit` | no | Da 1 a 100, predefinito 20. |

Nessun body.

## Risposta

`200 OK` con `{"data": [...], "next_after": "..."}`; `next_after` è assente nell'ultima pagina.

Ogni elemento: `id` (`mem_…`), `user_id` (`usr_…`), `status`, `roles` (ciascuno con `role_id` e `source`, cioè l'origine dell'assegnazione, come `admin_api` o `default`), `created_at`, `activated_at` (o `null`), `expires_at` (o `null`), `updated_at`, `version`.

## Errori

| Stato | Codice | Quando |
| --- | --- | --- |
| 400 | `invalid_cursor` | `after` è malformato. |
| 401 | `unauthenticated` | Nessun cookie di sessione valido. |
| 403 | `insufficient_permissions` | L'utente non ha `idp_members:read` nell'organizzazione. |
| 404 | `not_found` | Nessuna organizzazione del genere per questo utente; un identificatore sconosciuto, malformato o di un altro utente riceve la stessa risposta. |
| 422 | `validation_failed` | `status`, `role_id` o `limit` non sono validi. |
| 503 | `service_unavailable` | Temporaneamente non disponibile; riprova dopo `Retry-After`. |

## Esempio

```bash
curl "https://example.keenauth.app/fapi/v1/organizations/org_01jbz6x8kq3m2n4p5r6s7t8v9a/memberships?status=active&limit=2" \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -b cookies.txt
```

```json
{
  "data": [
    {
      "id": "mem_01jbz6x8kq3m2n4p5r6s7t8v9b",
      "user_id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9c",
      "status": "active",
      "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-03T09:00:00Z",
      "version": 1
    }
  ],
  "next_after": "AAAYQ3dAgGUBmgAAAABwAIAAAAAAAADh"
}
```

## 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.
