REST API
오류
문제 응답 명세를 처리하고 요청을 추적하세요.
오류는 RFC 9457 문제 JSON 명세를 따르며 미디어 유형은 application/problem+json입니다.
{
"type": "https://www.ninjabuy.com/api/v1/problems/bad-body",
"title": "Invalid request",
"status": 400,
"detail": "The request did not match the expected shape.",
"request_id": "REQUEST_ID",
"errors": [{"pointer": "/links", "detail": "Validation detail"}]
}type은 고정된 문제 식별자이고 title과 detail은 설명입니다. status는 HTTP 상태와 일치합니다. 선택적 errors 항목에는 JSON Pointer와 검증 상세 정보가 포함됩니다. 빈 포인터는 본문 전체를 뜻합니다. 문제를 보고할 때 request_id를 함께 알려주세요(X-Request-Id에도 포함).
아래 모든 유형은 https://www.ninjabuy.com/api/v1/problems/로 시작합니다.
| 유형 접미사 | HTTP | 의미 / 조치 |
|---|---|---|
bad-json | 400 | 본문이 유효한 JSON이 아닙니다. 구문을 수정하세요. |
bad-body | 400 | 본문, 쿼리 매개변수 또는 커서 검증에 실패했습니다. errors를 확인하세요. |
bad-idempotency-key | 400 | Idempotency-Key에 인쇄 가능한 ASCII 문자 1~255자를 사용하세요. |
unauthorized | 401 | 유효한 Bearer 토큰을 제공하세요. WWW-Authenticate에 검색 정보가 있습니다. |
not-found | 404 | 리소스를 사용할 수 없거나, 알 수 없거나, 이 계정 소유가 아닙니다. |
method-not-allowed | 405 | Allow에 지정된 메서드를 사용하세요. |
idempotency-key-in-progress | 409 | 이 키의 첫 요청이 실행 중입니다. Retry-After에 따라 기다리세요. |
upload-too-large | 413 | 업로드한 바이트가 선언한 크기 또는 20 MiB 한도를 초과합니다. |
unsupported-media-type | 415 | Content-Type: application/json을 보내세요. |
idempotency-key-reused | 422 | 이 키는 다른 요청에 사용되었습니다. 새 키를 사용하세요. |
invalid-workbook | 422 | 업로드가 한도 내에서 읽을 수 있는 XLSX/CSV가 아닙니다. errors를 확인하세요. |
upload-expired | 422 | 업로드 예약이 만료되었습니다. 파일을 다시 업로드하세요. |
rate-limited | 429 | 다시 시도하기 전에 Retry-After에 지정된 초만큼 기다리세요. |
search-rate-limited | 429 | 키워드 검색 구간의 한도가 소진되었습니다. Retry-After에 따라 기다리세요. |
service-unavailable | 503 | 잠시 후 다시 시도하세요. Retry-After가 있으면 따르세요. |
internal-error | 500 | 나중에 다시 시도하세요. 계속되면 요청 ID를 보관하세요. |
성공한 요청에도 입력별 실패가 포함될 수 있습니다. 링크 상태는 HTTP 오류와 별도로 처리하세요. 생성 요청을 재반환하려면 Idempotency-Key를 사용하세요. 키 없이 일괄 작업을 다시 제출하면 다른 작업이 생성됩니다.