Lister les sessions d'un utilisateur
GET /v1/users/{user_id}/sessions · autorisation sessions:read
Liste les sessions de l'utilisateur sur une seule page, les plus récemment vues en premier, à raison de 1 000 au maximum. La liste n'accepte ni limit, ni after, ni before, ni order, et list_metadata vaut toujours null. Par défaut, seules les sessions actives sont renvoyées ; avec include_inactive=true, les sessions expirées et révoquées (encore dans la durée de conservation) le sont aussi. L'adresse IP complète est affichée et chaque consultation est enregistrée dans le journal d'audit de gestion. Les cookies, les jetons et les empreintes d'appareil ne sont jamais renvoyés.
Périmètre de l'organisation
Transmettez org_id pour construire une vue de diagnostic d'un membre à l'intention d'un administrateur d'organisation. La clé doit alors aussi disposer de l'autorisation organizations:read ; sans elle, la requête échoue avec 403 insufficient_permissions avant toute lecture. Si l'utilisateur n'est pas membre de cette organisation (aucune adhésion invited, active ou suspended), la requête échoue avec 404 not_found, la même réponse que pour un utilisateur inconnu. Si l'utilisateur est membre, seules les sessions ouvertes selon la politique de cette organisation (sessions dont org_id correspond à cette organisation) sont renvoyées ; les sessions de l'utilisateur dans le contexte d'une autre organisation, ou hors de toute organisation, ne le sont jamais. ip_address et user_agent valent null dans cette vue. Sans org_id, la réponse est inchangée.
Requête
| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
user_id |
chemin | oui | Identifiant de l'utilisateur, préfixé usr_. |
include_inactive |
requête | non | true pour renvoyer aussi les sessions expirées et révoquées. Vaut false par défaut. |
org_id |
requête | non | Identifiant de l'organisation, préfixé org_. Limite la vue à cette organisation ; voir Périmètre de l'organisation. Requiert organizations:read. |
Réponse
200 OK. Les champs vides valent 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'organisation de la session, le cas échéant.
Erreurs
Chaque erreur est un corps application/problem+json accompagné d'un code stable.
| HTTP | code |
Quand |
|---|---|---|
| 422 | validation_failed |
include_inactive n'est ni true ni false. |
| 404 | not_found |
L'utilisateur n'existe pas dans cet environnement (ou l'identifiant est mal formé), ou org_id est fourni et l'utilisateur n'est pas membre de cette organisation. |
| 401 | unauthenticated |
La clé d'API est absente, invalide ou révoquée. |
| 403 | insufficient_permissions |
La clé ne dispose pas de l'autorisation sessions:read, ou org_id est fourni et la clé ne dispose pas de organizations:read. |
| 429 | rate_limited |
La limite de débit a été dépassée ; respectez Retry-After. |
| 503 | service_unavailable |
Une dépendance est temporairement indisponible ; réessayez plus tard. |
Exemple
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
Données personnelles
Cet endpoint traite des données personnelles : des sessions. Données personnelles dans les API KeenAuth décrit les données stockées, leur durée de conservation et leur mode de suppression. N'envoyez pas de catégories particulières de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.