
# 사용자 데이터 내보내기

`POST /v1/users/{user_id}:export` · 권한 `users:export`

정보 주체 열람 또는 이동권 요청에 대응하기 위해 KeenAuth가 한 사용자에 대해 보유한 개인 정보를 패키지로 묶는 작업을 시작합니다(GDPR 제15조 및 제20조). 작업은 백그라운드에서 실행됩니다. `status`가 `completed`가 될 때까지 [사용자 데이터 내보내기 작업 조회](/docs/api/management/jobs/get-user-export)를 폴링한 다음 [패키지를 다운로드](/docs/api/management/jobs/download-user-export)하십시오. 최종 사용자에게 이메일이 발송되지 않으며, 패키지를 해당 사용자에게 전달하는 책임은 귀사에 있습니다.

## 요청

| 매개변수 | 위치 | 필수 | 설명 |
|---|---|---|---|
| `user_id` | path | 예 | 사용자 ID이며 접두사는 `usr_`입니다. |
| `Idempotency-Key` | header | 아니요 | 16~64자의 `[A-Za-z0-9_-]`입니다. 같은 자격 증명에서 같은 키를 사용하면 동일한 작업이 반환됩니다. |
| `include_ip` | body | 아니요 | `true`이면 세션 및 이벤트 IP 주소를 패키지에 포함합니다. `audit-events:read_ip`도 필요합니다. 기본값은 `false`입니다. |

본문은 선택 사항입니다. IP 주소를 제외한 내보내기를 원하면 `{}`를 보내거나 본문을 생략하십시오.

```json
{ "include_ip": false }
```

## 응답

작업이 포함된 `202 Accepted`입니다. 같은 `Idempotency-Key`로 요청을 다시 보내면 원래 작업과 `Idempotent-Replayed: true`가 반환됩니다.

```json
{
  "id": "job_01j9xk3m7q8r2s4t6v8w0y2z4e",
  "kind": "subject",
  "source": "management_api",
  "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "status": "queued",
  "include_app_metadata": true,
  "include_ip": false,
  "file": null,
  "failure_reason": null,
  "requested_by": { "type": "api_key", "id": "key_01j9xk3m7q8r2s4t6v8w0y2z4b" },
  "created_at": "2026-10-28T09:00:00Z",
  "started_at": null,
  "completed_at": null,
  "expires_at": null
}
```

패키지는 ZIP 파일입니다.

| 파일 | 내용 |
|---|---|
| `manifest.json` | 스키마 버전, 작업 및 사용자 ID, 생성 시각, 소스, 그 밖의 모든 파일의 SHA-256 및 레코드 수입니다. |
| `profile.json`, `emails.json`, `phones.json` | 프로필 필드, 이메일 주소 및 전화번호입니다. |
| `metadata.json` | `user_metadata` 및 `app_metadata`입니다. |
| `identities.json` | 연결된 소셜 및 엔터프라이즈 ID입니다. |
| `authenticators.json`, `sessions.json` | 패스키 및 기타 인증 수단(비밀 정보 제외), 그리고 세션입니다. |
| `organizations.json`, `oauth_grants.json`, `consents.json` | 조직 멤버십, OAuth 권한 부여 및 동의 기록입니다. |
| `auth_events.ndjson` | 인증 이벤트이며 한 줄에 JSON 객체 하나씩 들어 있습니다. |

비밀번호 해시, TOTP 시드, 복구 코드, 세션 토큰, 원본 SAML 또는 ID 토큰은 절대 포함되지 않습니다. 작업이 완료된 후 패키지는 7일 동안 보관됩니다.

## 오류

모든 오류는 안정적인 `code`를 포함한 `application/problem+json` 본문입니다.

| HTTP | `code` | 발생 조건 |
|---|---|---|
| 400 | `malformed_request` | 본문 또는 `Idempotency-Key` 헤더의 형식이 잘못되었습니다. |
| 401 | `unauthenticated` | API 키가 없거나, 잘못되었거나, 취소되었습니다. |
| 403 | `insufficient_permissions` | 키에 `users:export` 권한이 없거나, `include_ip`가 `true`인데 키에 `audit-events:read_ip` 권한이 없습니다(`required_permissions`에 두 권한이 모두 표시됩니다). |
| 404 | `not_found` | 이 환경에 사용자가 없거나 ID 형식이 잘못되었습니다. |
| 422 | `idempotency_key_reuse` | 다른 요청에 `Idempotency-Key`가 사용되었습니다. |
| 429 | `rate_limited` | 이 환경에서 대기 중이거나 실행 중인 내보내기 작업이 너무 많거나 요청 한도를 초과했습니다. `Retry-After`를 따르십시오. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하십시오. |

## 예시

```bash
curl -X POST https://api.eu.keenauth.com/v1/users/usr_01j9xk3m7q8r2s4t6v8w0y2z4a:export \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: dsar-2026-10-28-0001" \
  -H "Content-Type: application/json" \
  -d '{"include_ip": false}'
```

CLI: `keenauth users export usr_01j9xk3m7q8r2s4t6v8w0y2z4a`

## 개인 정보

이 엔드포인트는 개인 정보(최종 사용자 프로필)를 처리합니다. [KeenAuth API의 개인 정보](/docs/policies/personal-data)에서 저장되는 항목, 보관 기간, 삭제 방법을 설명합니다. 어떤 필드에도 특수 범주의 개인 정보(건강, 생체 정보, 종교, 정치적 견해, 성적 지향)를 보내지 마십시오.
