
# メンバーの診断情報を取得

`GET /v1/organizations/{org_id}/memberships/{membership_id}/diagnostics` · 権限 `organizations:read` および `users:read`

組織の管理者が「このメンバーがサインインできないのはなぜか」を1回のレスポンスで確認できます。メンバーシップ、組織ポリシーの概要、保留中の招待、メンバーの認証手段の概要、組織のコンテキストにおけるサインイン状態、メンバーのディレクトリグループ、およびアプリケーションへのアクセス権を返します。読み取り専用であり、何も変更されません。書き込み操作はそれぞれ専用のエンドポイントを使用してください。サインインのアクティビティは [ユーザーのログを一覧表示](/docs/api/management/users/list-logs) と `org_id` で確認します。

返されるのは組織に属するデータのみです。ラベル、AAGUID、IPアドレス、ユーザーエージェント、メールアドレス、CIDR 範囲、および別の組織のコンテキストのレコードは、レスポンスに含まれることはありません。

## リクエスト

| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| `org_id` | パス | はい | 組織 ID（`org_…`）。 |
| `membership_id` | パス | はい | メンバーシップ ID（`mem_…`）。 |

リクエストボディはありません。

## レスポンス

以下のフィールドを含む `200 OK` を返します。

| フィールド | 説明 |
|---|---|
| `membership` | [メンバーシップを取得](get.md) が返すとおりのメンバーシップ（ステータス、ソース、ロール、停止理由）。 |
| `policy` | 組織に設定されたポリシー: `authentication_methods`（パスキーとパスワードの許可、許可される接続数）、`mfa`（多要素認証が必須のユーザーと許可される要素）、`phishing_resistant`、`sso_enforcement`（モード。メンバーがブレークグラスリストに含まれる場合は `bypass`）、`ip_allowlist`（設定の有無と適用対象）。`null` は、その組織がそのポリシーについて環境の値を継承していることを意味します。 |
| `invitation` | `invited` のメンバーシップの場合のみ: ユーザーのプライマリメールアドレスへの保留中の招待（配信と配信ステータスを含む）。それ以外の場合は `null`。メールアドレスは返されません。 |
| `authenticators` | `classes`: メンバーの有効な認証手段の種類。`mfa_enrolled`: 有効な認証手段にロール `true` または `second_factor` が割り当てられている場合は `both`。 |
| `sign_in` | `locked` と `locked_until`（ロックはすべてのコンテキストでアカウントのサインインを停止します）、および組織のコンテキストにおける最後のサインイン（`last_sign_in_at`、`last_sign_in_amr`）。失敗カウンターはどの組織にも属さないため表示されません。 |
| `groups` | 組織のディレクトリにおけるメンバーのグループ（`data`: `id` `dsg_…` と `directory_id` `dir_…`。最大100件。それ以上ある場合は `truncated`）。このユーザーにリンクされ、有効なディレクトリユーザーのメンバーシップのみが対象です。グループ名は返されません。`GET /v1/directories/{directory_id}/groups/{directory_group_id}` で読み取ってください。 |
| `applications` | この組織におけるアプリケーションへのアクセス権。`org_access_mode` が `all_organizations` のアプリケーションはすべてのメンバーに開放されており、件数のみ集計されます（`open_count`）。それ以外のアプリケーション（`data`、名前順、最大100件。それ以上ある場合は `truncated`）については、`application_id`、`name`、`access_mode`、`allowed` を返し、アクセスが拒否された場合は `reason` を返します（`application_not_enabled`: アプリケーションがこの組織で有効化されていない。`application_not_assigned`: メンバーシップも所属するディレクトリグループも割り当てられていない）。判定はサインイン時のチェックと同じ規則に従います。 |

```json
{
  "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
  }
}
```

## エラー

| HTTP | コード | 発生条件 |
|---|---|---|
| 404 | `not_found` | このorganizationにメンバーシップが存在しない、または `removed` です。 |
| 401 | `unauthenticated` | 認証情報がない、無効である、または取り消されている。 |
| 403 | `insufficient_permissions` | 認証情報に `organizations:read` または `users:read` がない。 |
| 429 | `rate_limited` | レート制限を超えました。`Retry-After` の期間を置いて再試行してください。 |
| 503 | `service_unavailable` | 依存先が一時的に利用できません。`Retry-After` の期間を置いて再試行してください。 |

## 例

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

## 個人データ

このエンドポイントは個人データ（組織のメンバーシップと招待、および認証情報）を扱います。保存される内容、保持期間、削除方法については、[KeenAuth API における個人データ](/docs/policies/personal-data) を参照してください。いかなるフィールドにも特別な種類の個人データ（健康、生体データ、宗教、政治的意見、性的指向）を送信しないでください。
