비활성 회원 보고서
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)은 첫 페이지에서 한 번 계산되어 커서에 담기므로, 하나의 보고서에 속한 모든 페이지가 같은 시점을 사용합니다.
한 페이지는 최대 500개의 멤버십을 검사하므로 limit보다 적은 행, 심지어 행이 없을 수도 있습니다. next_cursor가 null가 될 때까지 계속 따라가십시오.
응답
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의 개인정보에서는 저장되는 항목, 보관 기간 및 삭제 방법을 설명합니다. 어떤 필드에도 특수 범주의 개인정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 전송하지 마십시오.