지원 아티팩트 업로드
POST /v1/support-artifacts · 권한 support-artifacts:write
HAR 파일 또는 로그를 지원 티켓에 첨부합니다. 아티팩트는 대시보드의 지원 페이지에서만 업로드할 수 있으며, API 키와 머신 클라이언트는 403 insufficient_permissions를 받습니다. 대시보드는 업로드 전에 브라우저에서 비밀 정보를 제거하고, 서버는 아티팩트를 다시 검사합니다. Cookie, Set-Cookie, Authorization, DPoP 헤더, OAuth, OIDC 및 SAML 토큰 필드, __Host- 쿠키, JWT 및 KeenAuth 접두사가 붙은 비밀 값은 [redacted]로 대체됩니다. 아티팩트에서 발견된 관리 API 키(idp_sk_, idp_rk_)는 즉시 취소됩니다. 취소에 실패하면 아무것도 저장되지 않고 업로드는 503을 반환합니다. 정리된 내용만 저장되며, 환경의 데이터 키로 암호화되고 30일 후 삭제됩니다. 응답에는 내용이나 제거된 값이 절대 포함되지 않습니다.
요청
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
ticket_ref |
query | 예 | 지원 티켓 참조: 1-64자, 문자, 숫자 및 _ . : -, 문자 또는 숫자로 시작. |
kind |
query | 예 | har(HAR 1.2 JSON 문서) 또는 log(일반 텍스트). |
Content-Type |
header | 예 | application/octet-stream. |
Content-Encoding |
header | 아니요 | 압축된 아티팩트를 보내려면 gzip. |
Idempotency-Key |
header | 아니요 | 선택 사항. 16-64자 [A-Za-z0-9_-]; 같은 키를 같은 본문으로 반복하면 같은 아티팩트를 반환합니다. |
본문은 아티팩트 자체이며, 압축 해제 기준 최대 50 MB입니다. 전송 중 요청 본문은 11 MiB로 제한되므로, 더 큰 아티팩트는 gzip으로 압축하세요. 티켓에는 최대 10개의 아티팩트를 저장할 수 있습니다.
응답
저장된 아티팩트와 함께 201 Created. findings는 종류별로 제거된 값의 개수를 나타내며, revocations_triggered는 아티팩트에 포함되어 있었기 때문에 취소된 자격 증명의 개수입니다.
{
"id": "sart_01j9xk3m7q8r2s4t6v8w0y2z4a",
"ticket_ref": "SUP-48213",
"kind": "har",
"size_bytes": 482113,
"sha256": "9f2b5c7d1e3a4f60718293a4b5c6d7e8f90123456789abcdef0123456789abcd",
"findings": {"authorization": 2, "cookie": 5, "host_cookie": 3, "oauth_param": 1},
"revocations_triggered": 0,
"created_at": "2026-11-10T09:30:00.123456Z",
"expires_at": "2026-12-10T09:30:00.123456Z"
}
오류
| HTTP | code | 조건 |
|---|---|---|
| 400 | malformed_request |
본문을 읽을 수 없거나, gzip 스트림이 잘못되었거나, Idempotency-Key 형식이 잘못되었습니다. |
| 401 | unauthenticated |
자격 증명이 없거나 유효하지 않거나 취소되었습니다. |
| 403 | insufficient_permissions |
요청이 대시보드에서 오지 않았거나, 대시보드 역할에 support-artifacts:write가 없습니다. |
| 403 | quota_exceeded |
티켓에 이미 10개의 아티팩트가 있습니다. |
| 413 | payload_too_large |
아티팩트가 50 MB를 초과하거나, 요청 본문이 11 MiB를 초과합니다. |
| 415 | unsupported_media_type |
Content-Type이 application/octet-stream이 아니거나, 콘텐츠 인코딩이 gzip이 아닙니다. |
| 422 | validation_failed |
ticket_ref 또는 kind가 없거나 잘못되었거나, 본문이 비어 있거나, har 아티팩트가 HAR 문서가 아닙니다(/body invalid_har). |
| 422 | idempotency_key_reuse |
Idempotency-Key가 이미 다른 본문과 함께 사용되었습니다. |
| 429 | rate_limited |
처리 중인 업로드가 너무 많거나 속도 제한을 초과했습니다. Retry-After 기간이 지난 후 다시 시도하세요. |
| 503 | service_unavailable |
아티팩트가 저장되지 않았습니다(자격 증명을 취소할 수 없거나 스토리지를 사용할 수 없음). Retry-After 기간이 지난 후 다시 시도하세요. |
예제
업로드는 대시보드 작업입니다. 대시보드가 보내는 요청:
POST /v1/support-artifacts?ticket_ref=SUP-48213&kind=har
Content-Type: application/octet-stream
Content-Encoding: gzip
Idempotency-Key: 2f1c9a7e-5b3d-4e8f-9a6c-1d2e3f4a5b6c
<gzip 압축 HAR 파일>