Elenca le sessioni di un utente

GET /v1/users/{user_id}/sessions · autorizzazione sessions:read

Elenca le sessioni dell'utente in un'unica pagina, prima quelle viste più di recente, al massimo 1.000. L'elenco non ha limit, after, before o order, e list_metadata ha sempre valore null. Per impostazione predefinita vengono restituite solo le sessioni attive; con include_inactive=true vengono restituite anche quelle scadute e revocate (ancora entro il periodo di conservazione). L'indirizzo IP completo viene mostrato e ogni visualizzazione viene registrata nel log di audit di gestione. Cookie, token e impronte del dispositivo non vengono mai restituiti.

Ambito dell'organizzazione

Passa org_id per costruire una vista diagnostica dei membri per un amministratore dell'organizzazione. La chiave deve avere anche l'autorizzazione organizations:read; altrimenti la richiesta fallisce con 403 insufficient_permissions prima che venga letto qualsiasi dato. Se l'utente non è membro di quell'organizzazione (nessuna appartenenza invited, active o suspended), la richiesta fallisce con 404 not_found, la stessa risposta di un utente sconosciuto. Se l'utente è membro, vengono restituite solo le sessioni aperte secondo la policy di quell'organizzazione (sessioni il cui org_id corrisponde a quell'organizzazione); le sessioni dell'utente nel contesto di un'altra organizzazione, o al di fuori di qualsiasi organizzazione, non vengono mai restituite. ip_address e user_agent sono null in questa vista. Senza org_id la risposta non cambia.

Richiesta

Parametro In Obbligatorio Descrizione
user_id path sì ID utente, con prefisso usr_.
include_inactive query no true per restituire anche le sessioni scadute e revocate. Il valore predefinito è false.
org_id query no ID dell'organizzazione, con prefisso org_. Limita la vista a quell'organizzazione; vedi Ambito dell'organizzazione. Richiede organizations:read.

Risposta

200 OK. I campi vuoti sono null.

{
  "data": [
    {
      "id": "ses_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "user_id": "usr_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "status": "active",
      "login_host": "login.example.com",
      "auth_time": "2026-02-01T08:00:00Z",
      "acr": "mfa",
      "amr": ["pwd", "otp"],
      "created_at": "2026-02-01T08:00:00Z",
      "last_seen_at": "2026-02-01T09:15:00Z",
      "idle_expires_at": "2026-02-08T09:15:00Z",
      "absolute_expires_at": "2026-03-03T08:00:00Z",
      "org_id": null,
      "ip_address": "203.0.113.10",
      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0)",
      "revoked_at": null,
      "revoke_reason": null
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}

status: active, expired, revoked · acr: 1fa, mfa, phr · org_id: l'organizzazione della sessione, se presente.

Errori

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

HTTP code Quando
422 validation_failed include_inactive non è true o false.
404 not_found L'utente non esiste in questo ambiente (o l'ID non è valido), oppure org_id è presente e l'utente non è membro di quell'organizzazione.
401 unauthenticated La chiave API manca, non è valida o è stata revocata.
403 insufficient_permissions La chiave non ha l'autorizzazione sessions:read, oppure org_id è presente e la chiave non ha organizations:read.
429 rate_limited È stato superato il limite di richieste; rispetta Retry-After.
503 service_unavailable Una dipendenza non è temporaneamente disponibile; riprova più tardi.

Esempio

curl "https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/sessions?include_inactive=true" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"

CLI: keenauth users sessions list usr_0a1b2c3d4e5f6g7h8j9k0m1n2p --include-inactive

Dati personali

Questo endpoint tratta dati personali: sessioni. 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.