오류 및 재시도
오류 엔벨로프, 전체 응답 목록과 각 응답에 대한 조치 방법.
엔벨로프
{ "message": "MISSING_CLIENT_ID", "details": [] }
message는 오류를 식별하며, details는 대개 비어 있습니다. 플로우가 요청을 거부하는 경우(예: 잘못된 이미지)에도 응답은 이 엔벨로프를 유지하며, 사유는 message와 details에 담깁니다. 거부 사유를 참고하세요.
레퍼런스
| 상태 | message | 엔드포인트 | 재시도? |
|---|---|---|---|
| 400 | INVALID_REQUEST | create | 아니요. 요청을 수정하세요 |
| 400 | REQUEST_TOO_LARGE | create | 아니요. 본문이 2 MiB를 초과했습니다 |
| 400 | MISSING_<FIELD> / INVALID_<FIELD> | create | 아니요. <FIELD>는 대문자 스네이크 케이스의 필드 이름입니다(예: MISSING_CREDENTIAL_VALUE) |
| 401 | 비어 있음("") | create, selfie | 아니요. Unico가 액세스 키를 거부했습니다. HUMAN_API_ACCESS_KEY를 확인하세요 |
| 409 | CORRELATION_ID_ALREADY_USED | create | 아니요. 다른 프로세스가 해당 correlationId를 사용 중입니다. 새 값을 사용하세요 |
| 422 | ATTRIBUTE_TYPE_NOT_SUPPORTED | create | 아니요. 카탈로그 코드를 사용하세요 |
| 4xx | 플로우의 message | create | 아니요. 프로세스가 실패로 저장됩니다 |
| 404 | PROCESS_NOT_FOUND | get, selfie | 아니요 |
| 404 | SELFIE_NOT_FOUND | selfie | 아니요. 해당 프로세스에는 사용 가능한 셀피가 없습니다 |
| 4xx | 거부 사유 message | selfie | 아니요 |
| 503 | DATABASE_UNAVAILABLE | 전체 | create: 아래 참고. get과 selfie: 예 |
| 502 | UPSTREAM_UNAVAILABLE | 전체 | create: 아래 참고. get과 selfie: 예 |
| 500 | INTERNAL | 전체 | create: 아래 참고 |
생성 요청 재시도
수락된 모든 생성 요청은 새 id를 가진 새 프로세스를 시작하며, 각 correlationId는 한 번만 사용할 수 있습니다. 어떤 상태의 프로세스든 이미 사용한 값은 409 CORRELATION_ID_ALREADY_USED로 거부됩니다.
- 400, 409, 422 및 기타 거부: 요청을 수정한 뒤 다시 보내세요.
- 503
DATABASE_UNAVAILABLE: 저장되거나 처리된 것이 없습니다. 같은correlationId로 재시도하세요. - 502 및 500: 요청이 확인되지 않았습니다. 자동으로 재시도하지 마세요. 다시 시도하려면 새
correlationId로 새 생성 요청을 보내세요.
백엔드에 권장하는 방식:
- Human Plugin을 호출하기 전에
correlationId를 키로 각 시도를 기록합니다. 502또는500이 발생하면 비즈니스 규칙에 따라 새 시도를 시작할지 결정합니다.- 관련된 시도들을 기록에서 서로 연결해 둡니다.
조회 재시도
프로세스나 셀피에 대한 GET은 안전하게 재시도할 수 있습니다. 백오프를 사용하고 404에서 중단하세요.
속도 제한
Human Plugin에는 내장 속도 제한기가 없습니다. 필요하면 게이트웨이에서 제한을 적용하세요.