
# 사용자 데이터 내보내기 다운로드

`GET /v1/jobs/user-exports/{job_id}/download` · 권한 `users:export`

완료된 [사용자 데이터 내보내기](/docs/api/management/users/export)의 패키지에 대한 일회성 링크를 제공합니다. 링크가 발급되기 전에 모든 호출은 관리 감사 로그에 `user_export.downloaded` 기록을 남깁니다.

## 요청

| 매개변수 | 위치 | 필수 | 설명 |
|---|---|---|---|
| `job_id` | path | 예 | 작업 ID, `job_` 접두사로 시작합니다. |

`include_ip: true`로 생성된 작업은 다운로드하는 자격 증명에 `audit-events:read_ip` 권한도 필요합니다.

## 응답

본문이 비어 있는 `302 Found`를 반환합니다. `Location`은 같은 호스트의 상대 링크이며 형식은 `/downloads/user-exports/{environment_id}/{job_id}/{token}`입니다. 응답에는 `Cache-Control: no-store`와 `Referrer-Policy: no-referrer`가 포함됩니다.

- 링크는 15분 동안 유효하며 한 번만 사용할 수 있습니다. 첫 번째 요청에서 전송이 중단되더라도 토큰은 사용된 것으로 처리됩니다. 새 링크가 필요하면 이 작업을 다시 호출하십시오.
- 링크에는 자격 증명이 필요하지 않으며 토큰이 유일한 자격 증명입니다. `Location`을 비공개로 유지하고 로그에 남기지 마십시오.
- 파일은 환경의 키로 저장 시 암호화되므로 저장소 사전 서명 URL은 사용되지 않습니다. KeenAuth가 파일을 복호화하여 스트리밍합니다.

링크에 `GET` 요청을 보내면 `Content-Type: application/zip`, `Content-Length`, `Content-Disposition: attachment; filename="user-export-job_….zip"`이 포함된 `200 OK`를 반환합니다. 링크 미리보기가 토큰을 소비하지 않도록 `HEAD` 요청은 `405`로 거부됩니다. 파일의 SHA-256을 작업의 `file.sha256`과 비교하십시오. `Content-Length` 바이트가 도착하기 전에 연결이 끊어지면 패키지가 불완전한 것이므로 폐기하고 새 링크를 요청하십시오. 잘못되었거나 이미 사용되었거나 만료된 링크는 `404 not_found`를 반환합니다.

## 오류

모든 오류는 안정적인 `code`가 포함된 `application/problem+json` 본문으로 반환됩니다.

| HTTP | `code` | 발생 조건 |
|---|---|---|
| 401 | `unauthenticated` | API 키가 없거나 유효하지 않거나 폐기되었습니다. |
| 403 | `insufficient_permissions` | 키에 `users:export` 권한이 없거나, 작업이 `include_ip`로 생성되었는데 키에 `audit-events:read_ip` 권한이 없습니다(`required_permissions`에 두 권한이 모두 표시됩니다). |
| 404 | `not_found` | 작업이 없거나, 다른 환경에 속하거나, ID 형식이 잘못되었습니다. 링크의 경우 토큰이 잘못되었거나, 이미 사용되었거나, 만료되었습니다. |
| 409 | `conflict` | 작업이 아직 완료되지 않았거나 파일이 만료되었습니다. |
| 429 | `rate_limited` | 요청 한도를 초과했습니다. `Retry-After`를 준수하십시오. 링크 자체는 IP 주소당 분당 10회 요청을 허용합니다. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하십시오. |

## 예시

```bash
curl -L -o user-export.zip \
  https://api.eu.keenauth.com/v1/jobs/user-exports/job_01j9xk3m7q8r2s4t6v8w0y2z4e/download \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI는 링크를 직접 따라가며, 패키지를 파일에 기록하고(표준 출력에는 절대 기록하지 않음), 기존 파일을 덮어쓰지 않으며, 기록한 내용의 크기와 SHA-256을 출력합니다.

```bash
keenauth jobs user-exports download job_01j9xk3m7q8r2s4t6v8w0y2z4e --file user-export.zip
```

## 개인정보

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