Obtenir les diagnostics d'un membre

GET /v1/organizations/{org_id}/memberships/{membership_id}/diagnostics · autorisations organizations:read et users:read

Répond à la question « pourquoi ce membre ne peut-il pas se connecter ? » pour un administrateur d'organisation en une seule réponse : l'appartenance, une synthèse des politiques de l'organisation, une invitation en attente, une synthèse des authentificateurs du membre, l'état de connexion dans le contexte de l'organisation, les groupes d'annuaire du membre et son accès aux applications. Elle est en lecture seule : rien ne change, et les actions d'écriture passent par leurs propres points de terminaison. L'activité de connexion se lit avec Lister les journaux d'un utilisateur et org_id.

Seules les données qui appartiennent à l'organisation sont renvoyées. Les libellés, AAGUID, adresses IP, agents utilisateur, adresses e-mail, plages CIDR et enregistrements issus du contexte d'une autre organisation ne figurent jamais dans la réponse.

Requête

Champ Type Requis Description
org_id chemin oui Identifiant de l'organisation (org_…).
membership_id chemin oui Identifiant de l'appartenance (mem_…).

Aucun corps de requête.

Réponse

200 OK avec les champs suivants :

Champ Description
membership L'appartenance telle que la renvoie Obtenir une appartenance : statut, source, rôles et motif de suspension.
policy Les politiques définies sur l'organisation : authentication_methods (clés d'accès et mots de passe autorisés, nombre de connexions autorisées), mfa (qui doit utiliser l'authentification multifacteur et les facteurs autorisés), phishing_resistant, sso_enforcement (mode, et bypass lorsque le membre figure sur la liste de secours d'urgence) et ip_allowlist (présent, et à qui il s'applique). null signifie que l'organisation hérite de la valeur de l'environnement pour cette politique.
invitation Uniquement pour une appartenance invited : l'invitation en attente envoyée à l'adresse e-mail principale de l'utilisateur, avec son envoi et son statut de remise. null sinon. L'adresse e-mail n'est pas renvoyée.
authenticators classes : les types des authentificateurs actifs du membre. mfa_enrolled : true lorsqu'un authentificateur actif a le rôle second_factor ou both.
sign_in locked et locked_until (un verrou bloque la connexion du compte dans tous les contextes), ainsi que la dernière connexion dans le contexte de cette organisation (last_sign_in_at, last_sign_in_amr). Les compteurs d'échecs ne sont pas affichés, car ils n'appartiennent à aucune organisation.
groups Les groupes du membre dans les annuaires de l'organisation (data : id dsg_… et directory_id dir_… ; 100 au maximum, truncated s'il y en a davantage). Seules les appartenances d'un utilisateur d'annuaire lié à cet utilisateur et actif sont comptées. Les noms des groupes ne sont pas renvoyés ; lisez-les avec GET /v1/directories/{directory_id}/groups/{directory_group_id}.
applications L'accès aux applications de cette organisation. Les applications dont org_access_mode est all_organizations sont ouvertes à tous les membres et seulement comptées (open_count). Pour les autres applications (data, par nom, 100 au maximum, truncated s'il y en a davantage) : application_id, name, access_mode, allowed, et reason lorsque l'accès est refusé (application_not_enabled : l'application n'est pas activée pour l'organisation ; application_not_assigned : ni l'appartenance ni l'un de ses groupes d'annuaire n'est assigné). La décision suit la même règle que la vérification lors de la connexion.
{
  "membership": {
    "id": "mem_01j9xn5p9s0t4v6w8x0y2z4a6c",
    "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
    "user_id": "usr_01j9xh2k6p7q1r3s5t7v9w1x3y",
    "status": "suspended",
    "source": "scim",
    "reason": "scim_deprovisioned",
    "roles": [],
    "expires_at": null,
    "created_at": "2026-10-12T09:31:00.123456Z",
    "activated_at": "2026-10-12T09:31:00.123456Z",
    "suspended_at": "2026-10-20T07:00:00Z",
    "removed_at": null,
    "updated_at": "2026-10-20T07:00:00Z",
    "version": 3
  },
  "policy": {
    "authentication_methods": null,
    "mfa": { "required_for": "all", "allowed_factors": ["totp", "webauthn"] },
    "phishing_resistant": null,
    "sso_enforcement": { "mode": "org_context", "bypass": false },
    "ip_allowlist": null
  },
  "invitation": null,
  "authenticators": { "mfa_enrolled": false, "classes": ["webauthn"] },
  "sign_in": {
    "locked": false,
    "locked_until": null,
    "last_sign_in_at": "2026-10-19T08:15:42Z",
    "last_sign_in_amr": ["fed"]
  },
  "groups": {
    "data": [{ "id": "dsg_01j9xp4r8s2t4v6w8x0y2z4a6b", "directory_id": "dir_01j9xm1n5p7q9r1s3t5v7w9x1y" }],
    "truncated": false
  },
  "applications": {
    "open_count": 2,
    "data": [
      {
        "application_id": "app_01j9xq6s0t2v4w6x8y0z2a4b6c",
        "name": "Finance portal",
        "access_mode": "assigned_only",
        "allowed": false,
        "reason": "application_not_assigned"
      }
    ],
    "truncated": false
  }
}

Erreurs

HTTP code Quand
404 not_found L'appartenance n'existe pas dans cette organisation, ou elle est removed.
401 unauthenticated L'identifiant est absent, invalide ou révoqué.
403 insufficient_permissions L'identifiant ne dispose pas de organizations:read ou de users:read.
429 rate_limited La limite de débit a été dépassée ; réessayer après la période Retry-After.
503 service_unavailable Une dépendance est temporairement indisponible ; réessayer après la période Retry-After.

Exemple

curl -i "https://api.eu.keenauth.com/v1/organizations/org_01j9xk3m7q8r2s4t6v8w0y2z4a/memberships/mem_01j9xn5p9s0t4v6w8x0y2z4a6c/diagnostics" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"

Données personnelles

Ce point de terminaison traite des données personnelles : appartenances à des organisations, invitations et identifiants. Données personnelles dans les API KeenAuth décrit ce qui est stocké, combien de temps ces données sont conservées et comment elles sont supprimées. N'envoyez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.