Lister les authentificateurs d'un utilisateur

GET /v1/users/{user_id}/authenticators · autorisation users:read

Liste les authentificateurs (clés d'accès, TOTP, SMS, e-mail et facteurs push) d'un utilisateur sur une seule page, y compris ceux révoqués au cours des 90 derniers jours, triés par date de création. Le nombre d'authentificateurs par utilisateur est borné : la liste n'accepte donc ni limit, ni after, ni before, ni order, et list_metadata vaut toujours null. Seules les métadonnées sont renvoyées : jamais les clés publiques, les identifiants de credential, les secrets TOTP ni les codes de récupération.

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, seuls la catégorie de chaque authentificateur et l'état d'inscription à l'authentification multifacteur sont affichés : seuls les authentificateurs actifs sont listés, label, last_used_at, revoked_at, revoked_by et revoke_reason valent null, et synced vaut false, car les détails de l'appareil de la personne en dehors de l'organisation ne la concernent pas. L'authentification multifacteur est active lorsqu'un authentificateur actif a le role second_factor ou both. 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_.
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. data contient les authentificateurs triés par date de création ; list_metadata vaut toujours null car la liste n'est pas paginée. Les champs vides valent null.

Lorsque la clé ne dispose pas de l'autorisation users:read_pii, label est réduit aux initiales (A. L.).

{
  "data": [
    {
      "id": "cred_0a1b2c3d4e5f6g7h8j9k0m1n2p",
      "type": "webauthn",
      "role": "both",
      "label": "Laptop",
      "status": "active",
      "synced": true,
      "created_at": "2026-01-15T09:30:00Z",
      "last_used_at": "2026-02-01T08:00:00Z",
      "revoked_at": null,
      "revoked_by": null,
      "revoke_reason": null
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}

type : webauthn, totp, sms, email, push · role : first_factor, second_factor, both · status : pending, active, revoked, clone_suspected

Erreurs

Chaque erreur est un corps application/problem+json accompagné d'un code stable.

HTTP code Quand
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 users: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/authenticators \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"

Données personnelles

Cet endpoint traite des données personnelles : des identifiants d'authentification. 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.