Report sui membri inattivi

GET /v1/reports/inactive-members · autorizzazione reports:read

Elenca i membri attivi di un'organizzazione che non hanno effettuato alcun accesso riuscito in quell'organizzazione negli ultimi days giorni. Usalo per trovare gli account da rimuovere quando una connessione non ha il provisioning SCIM: controlla l'elenco, poi sospendi le appartenenze selezionate con POST /v1/organizations/{org_id}/memberships/{membership_id}:suspend.

L'ambiente proviene sempre dalla chiave API; non esiste un parametro per l'ambiente. Le righe contengono solo identificatori e timestamp, nessun nome, indirizzo email, indirizzo IP o User-Agent. Poiché gli identificatori utente sono dati personali, il report è limitato alle chiavi con reports:read.

Cosa conta come accesso

Un'autenticazione riuscita conta quando è stata completata nel contesto di questa organizzazione. Un accesso senza un'organizzazione selezionata non conta. Un'appartenenza la cui attivazione (activated_at, oppure il suo orario di creazione se non è mai stata attivata) è più recente della soglia non viene elencata, quindi un membro entrato ieri non compare mai in un report di 30 giorni.

Richiesta

Parametro In Obbligatorio Descrizione
organization_id query sì L'organizzazione (org_…).
days query no Soglia di inattività in giorni, da 7 a 365. Predefinito 30.
limit query no Dimensione della pagina, da 1 a 100. Predefinito 50.
cursor query no next_cursor della pagina precedente. Valido solo per l'ambiente, organization_id e days per cui è stato emesso.

Le righe seguono l'ordine in cui le appartenenze sono state aggiornate per ultime. La soglia (inactive_since) viene calcolata una sola volta, nella prima pagina, e riportata nel cursore, così ogni pagina dello stesso report usa lo stesso istante.

Una pagina analizza al massimo 500 appartenenze e può restituire meno righe di limit, anche nessuna. Continua a seguire next_cursor finché non è null.

Risposta

200 OK.

Campo Descrizione
organization_id L'organizzazione del report.
days La soglia utilizzata.
inactive_since L'istante della soglia (orario della richiesta meno days, RFC 3339, UTC). Vengono elencati i membri senza accessi da allora.
data_since Orario della prima autenticazione riuscita registrata per l'ambiente; gli accessi precedenti sono sconosciuti. null quando l'ambiente non ha ancora alcuna registrazione.
complete true quando data_since non è successivo a inactive_since, quindi l'elenco copre l'intera finestra della soglia.
data Le righe di questa pagina (vedi sotto).
next_cursor Cursore per la pagina successiva, null nell'ultima pagina.

Ogni riga in data:

Campo Descrizione
membership_id mem_….
user_id usr_….
activated_at Quando l'appartenenza è diventata attiva (oppure il suo orario di creazione se non è mai stata attivata).
last_authenticated_at Ultima autenticazione riuscita in questa organizzazione, oppure null quando non ne è stata registrata alcuna dopo data_since.

Quando complete è false, un membro elencato potrebbe aver effettuato l'accesso prima di data_since, quindi non considerare l'elenco come definitivo. Quando data_since è null, per l'ambiente non è ancora stato registrato alcun accesso e vengono elencati tutti i membri abbastanza vecchi.

{
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4d",
  "days": 30,
  "inactive_since": "2027-02-03T09:30:00Z",
  "data_since": "2026-12-01T08:00:00Z",
  "complete": true,
  "data": [
    {
      "membership_id": "mem_01j9xk3m7q8r2s4t6v8w0y2z4e",
      "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4f",
      "activated_at": "2026-12-10T10:00:00Z",
      "last_authenticated_at": "2027-01-05T17:45:00Z"
    }
  ],
  "next_cursor": null
}

Errori

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

HTTP code Quando
400 invalid_cursor Il cursore è malformato oppure è stato emesso per un altro ambiente, un'altra organizzazione o un altro days.
404 not_found L'organizzazione non esiste oppure appartiene a un altro ambiente.
422 validation_failed organization_id manca o è malformato, days o limit è fuori intervallo, oppure un parametro è ripetuto.
401 unauthenticated La chiave API manca, non è valida o è stata revocata.
403 insufficient_permissions La chiave non dispone di reports:read.
429 rate_limited È stato superato il limite di richieste; rispetta Retry-After.
503 service_unavailable Il servizio di reportistica è temporaneamente non disponibile; riprova più tardi.

Esempio

curl "https://api.eu.keenauth.com/v1/reports/inactive-members?organization_id=org_01j9xk3m7q8r2s4t6v8w0y2z4d&days=60" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth reports inactive-members org_01j9xk3m7q8r2s4t6v8w0y2z4d --days 60

Dati personali

Questo endpoint contiene dati personali: appartenenze alle organizzazioni e inviti (identificatori di utenti e appartenenze con orari di accesso). Dati personali nelle API di KeenAuth 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.