非アクティブなメンバーのレポート

GET /v1/reports/inactive-members · 権限 reports:read

組織のアクティブなメンバーのうち、直近 days 日間にその組織でサインインに成功していないメンバーを一覧表示します。SCIM プロビジョニングが設定されていない接続で削除対象のアカウントを探す際に使用します。一覧を確認したうえで、POST /v1/organizations/{org_id}/memberships/{membership_id}:suspend を使って選択したメンバーシップを停止してください。

環境は常に API キーから取得されます。環境を指定するパラメータはありません。各行には識別子とタイムスタンプのみが含まれ、名前、メールアドレス、IP アドレス、User-Agent は含まれません。ユーザー識別子は個人データであるため、このレポートは reports:read を持つキーに限定されます。

サインインとみなされる条件

成功した認証は、この組織のコンテキストで完了した場合にサインインとみなされます。組織が選択されていない状態でのサインインはカウントされません。有効化の日時(activated_at、または一度も有効化されていない場合は作成日時)がしきい値より新しいメンバーシップは一覧に含まれません。そのため、昨日参加したメンバーが 30 日のレポートに表示されることはありません。

リクエスト

パラメータ 指定場所 必須 説明
organization_id query はい 組織(org_…)。
days query いいえ 非アクティブと判定する日数(7〜365)。既定値は 30。
limit query いいえ ページサイズ(1〜100)。既定値は 50。
cursor query いいえ 前のページの next_cursor。有効なのは、発行時の環境、organization_id、days に対してのみです。

行は、メンバーシップが最後に更新された順に並びます。しきい値(inactive_since)は最初のページで一度だけ計算され、カーソルに保持されるため、1 つのレポートのすべてのページが同じ時点を使用します。

1 ページで走査されるメンバーシップは最大 500 件であり、limit より少ない行、場合によっては 0 行しか返されないことがあります。null になるまで、next_cursor を使って次のページを取得し続けてください。

レスポンス

200 OK。

フィールド 説明
organization_id レポートの対象組織。
days 使用されたしきい値。
inactive_since しきい値の時点(リクエスト時刻から days を引いた値、RFC 3339、UTC)。その時点以降にサインインがないメンバーが一覧に含まれます。
data_since この環境で記録された最初の認証成功時刻。それより前のサインインは不明です。環境にまだ記録がない場合は null。
complete data_since が inactive_since 以前でない場合は true。これにより、一覧がしきい値の期間全体をカバーします。
data 本ページの行(後述)。
next_cursor 次のページ用のカーソル。最後のページでは null。

data の各行には次のフィールドがあります。

フィールド 説明
membership_id mem_…。
user_id usr_…。
activated_at メンバーシップが有効になった日時(一度も有効化されていない場合は作成日時)。
last_authenticated_at この組織での最後の認証成功時刻。data_since 以降に記録がない場合は null。

complete が false の場合、一覧に含まれるメンバーが data_since より前にサインインしている可能性があるため、一覧を最終的な結果とみなさないでください。data_since が null の場合、この環境ではまだサインインが記録されておらず、対象期間を満たすすべてのメンバーが一覧に含まれます。

{
  "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4d",
  "days": 30,
  "inactive_since": "2027-02-03T09:30:00Z",
  "data_since": "2026-12-01T08:00:00Z",
  "complete": true,
  "data": [
    {
      "membership_id": "mem_01j9xk3m7q8r2s4t6v8w0y2z4e",
      "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4f",
      "activated_at": "2026-12-10T10:00:00Z",
      "last_authenticated_at": "2027-01-05T17:45:00Z"
    }
  ],
  "next_cursor": null
}

エラー

すべてのエラーは、安定した code を含む application/problem+json ボディで返されます。

HTTP code 発生条件
400 invalid_cursor カーソルの形式が不正であるか、別の環境、組織、days 向けに発行されています。
404 not_found 組織が存在しないか、別の環境に属しています。
422 validation_failed organization_id が欠落しているか不正である、days または limit が範囲外である、またはパラメータが重複しています。
401 unauthenticated API キーが欠落、無効、または取り消されています。
403 insufficient_permissions キーに reports:read がありません。
429 rate_limited レート制限を超えました。Retry-After に従ってください。
503 service_unavailable レポートサービスが一時的に利用できません。後で再試行してください。

例

curl "https://api.eu.keenauth.com/v1/reports/inactive-members?organization_id=org_01j9xk3m7q8r2s4t6v8w0y2z4d&days=60" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth reports inactive-members org_01j9xk3m7q8r2s4t6v8w0y2z4d --days 60

個人データ

このエンドポイントは個人データを扱います。組織のメンバーシップと招待(ユーザーおよびメンバーシップの識別子とサインイン時刻を含みます)。KeenAuth API の個人データでは、保存される内容、保持期間、削除方法について説明しています。どのフィールドにも特別な種類の個人データ(健康、生体情報、宗教、政治的意見、性的指向)を送信しないでください。