오류 반환하기

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."
}