오류 반환하기
CODE API 에서 공통으로 사용하는 오류 응답에 대해서 설명합니다.
코드의 모든 API는 요청을 처리하는 과정에서 오류가 발생할 경우 아래에서 설명하는 Status Code 와 Error Type, Error Msg를 조합한 오류 응답을 반환하도록 설계했습니다.
VASP 서버에 구현하는 CODE의 VASP API 도 아래의 분류에 따라서 오류를 반환하도록 구현해 주세요.
Status code에 따라서 CODE API 서버가 반환하는 오류와 VASP API 서버가 반환하는 오류가 다를 수 있는 점에 유의하세요. 같은 errorType인 경우에도 Status code에 따라서 오류를 반환하는 주체가 다릅니다.
'invalid'와 'denied'
지갑 주소 조회 요청의 invalid나 자산 이전 허가 요청의 denied 결과값은 요청을 정상적으로 처리한 결과이기 때문에 오류에 포함하지 않습니다.
422 Validation Error
이 오류는 CODE API 서버가 반환합니다.
CODE API 서버가 받은 메시지의 파라미터 검사에 실패했을 때 CODE API 서버에서 반환하는 에러입니다. CODE API 서버가 직접 처리하는 메시지와 VASP API 로 전달하는 메시지 모두에 해당합니다.
- errorType: 에러 종류
- INVALID_TARGET_VASP_ID: 파라미터로 입력한 VASP 의 Entity ID 가 유효하지 않습니다.
- MISSING_REQUIRED_MSG_FIELD: 요청을 처리할 때 필요한 메시지 필드가 누락됐습니다.
- MISSING_HEADER_FIELD: 필요한 헤더 필드가 누락됐습니다.
- INVALID_MSG_FIELD_VALUE: 메시지 필드의 값이 유효하지 않습니다.
- DUPLICATED_HEADER_NONCE: 메시지 헤더의 Nonce 값이 1분내에 재전송된 경우입니다. 요청을 보낼 때마다 바뀌는 값으로 설정해 주세요.
- INVALID_HEADER_SIGNATURE: 메시지 헤더의 Signature 검증에 실패한 경우입니다.
- INVALID_RECEIVER_PUBLIC_KEY: [v1.6] 요청 헤더의 상대방 Public Key 가 유효하지 않은 경우입니다. 상대 VASP 의 Public Key 가 변경되었을 수도 있습니다.
- ILLEGAL_FORMAT_OF_ORIGIN: [v1.6] 헤더의 Origin 문자열 포맷이 비정상입니다. {AllianceName}:{VastEntityId} 형식으로 보내주세요.
- INVALID_ORIGIN: [v1.6] 헤더의 Origin 값이 맞지 않습니다. VaspEntityId 를 찾을 수 없거나 AllianceName 이 유효하지 않습니다.
- errorMsg: errorType 에 대한 더욱 자세한 정보를 전달하기 위해 사용합니다. 생략할 수 있습니다.
{
"errorType": "INVALID_TARGET_VASP_ID",
"errorMsg": "VaspEntityId received is."
}
408 Request Timeout
이 오류는 CODE API 서버가 반환합니다.
CODE API 서버가 요청을 실제로 처리하는 VASP API 서버로 전달 한 후 응답 시간을 초과한 경우에 CODE API 서버가 반환하는 에러입니다.
- errorType: 에러 종류
- BENEFICIARY_VASP_REQUEST_TIMEOUT
- errorMsg: errorType 에 대한 더욱 자세한 정보를 전달하기 위해 사용합니다. 생략할 수 있습니다.
{
"errorType": "BENEFICIARY_VASP_REQUEST_TIMEOUT",
"errorMsg": "Beneficiary VASP does not respond."
}
429 Too Many Requests
이 오류는 CODE API 서버가 반환합니다.
전체 시스템의 성능에 영향을 줄 수 있는 특정 API 는 Source IP 별로 초당 보낼 수 있는 요청의 수를 제한합니다. 요청 수가 제한 값을 초과하는 경우 이 에러를 반환합니다.
- errorType: 에러 종류
- TOO_MANY_REQUESTS
- errorMsg: errorType 에 대한 더욱 자세한 정보를 전달하기 위해 사용합니다. 생략할 수 있습니다.
{
"errorType": "TOO_MANY_REQUESTS",
"errorMsg": "The request has exceeded the limit (40) per minute, source IP."
}
500 Internal Server Error
이 오류는 CODE API 서버가 반환합니다.
CODE API 서버가 요청을 직접 처리하는 중에 오류가 발생하면 이 종류의 에러를 반환합니다.
- errorType: 에러 종류
- RECEIVED_WRONG_JSON_MESSAGE: 수신측에서 응답한 JSON 메시지를 변환할 수 없습니다.
- RECEIVED_MSG_MISSING_FIELD: 수신측에서 응답한 메시지에 누락된 필드가 있습니다.
- CODE_SERVER_INTERNAL_ERROR: CODE 서버에서 요청을 처리하던 중 에러가 발생했습니다.
- errorMsg: errorType 에 대한 더욱 자세한 정보를 전달하기 위해 사용합니다. 생략할 수 있습니다
{
"errorType": "CODE_SERVER_INTERNAL_ERROR",
"errorMsg": "An internal error occurs while processing."
}
503 Service Unavailable
이 오류는 VASP API 서버가 반환합니다.
VASP API 서버가 요청을 처리하는 도중에 오류가 발생한 경우에 VASP 가 반환하는 에러입니다. VASP API 서버가 오류를 반환하면 CODE API 서버를 거쳐서 요청을 보낸 VASP 로 전달됩니다.
Status Code 와 errorType 분류가 CODE API 서버와 완전히 일치하지 않습니다.
- errorType: 에러 종류
- UNKNOWN_TRANSFER_ID: 요청한 TransferId 가 존재하지 않습니다.
- VASP_BACKEND_INTERNAL_ERROR: VASP 백엔드가 요청을 처리하는 중 내부오류가 발생했습니다.
- MISSING_REQUIRED_MSG_FIELD: 필요한 메시지 필드가 누락됐습니다.
- MISSING_HEADER_FIELD: 필요한 헤더 필드가 누락됐습니다.
- INVALID_MSG_FIELD_VALUE: 메시지 필드의 값이 유효하지 않습니다.
- DUPLICATED_TRANSFER_ID: 전달받은 TransferId 가 이미 존재하는 경우입니다.
- INVALID_HEADER_SIGNATURE: [v1.6] 이제 수신 VASP 는 Signature 를 받지 않습니다.
- INVALID_ENCRYPTED_BODY: 암호화된 메시지를 복호화할 수 없는 경우입니다.
- UNACCEPTABLE_REQUEST: [v1.6] 처리할 수 없는 요청입니다. 요청을 받은 VASP 가 처리할 수 없는 요청내용입니다.
- errorMsg: errorType 에 대한 더욱 자세한 정보를 전달하기 위해 사용합니다. 생략할 수 있습니다.
{
"errorType": "VASP_BACKEND_INTERNAL_ERROR",
"errorMsg": "An VASP backend server failed to process request."
}
Updated 4 months ago