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.