에러 코드
개요
공급사(Vendor)는 온다(ONDA Hub)로부터 API 요청을 받았을 때 처리에 실패하거나 비즈니스 로직 상 오류가 발생한 경우, 표준 에러 응답 포맷을 사용해 응답해야 합니다.
온다는 공급사의 에러 응답을 수신하여 code 필드를 기반으로 표준 에러 코드로 분류하고, 예약 처리 결과에 반영합니다.
에러 응답 포맷
공급사는 아래 JSON 포맷으로 에러를 응답해야 합니다.
{
"code": "4000",
"error": "No rooms available for booking"
}
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
code | string | 필수 | 아래 에러 코드 목록에 정의된 숫자 코드 (예: "4000") |
error | string | 필수 | 아래 목록에 정의된 영문 에러 메시지 |
에러 코드 목록
SYSTEM_ERROR — 시스템 오류
| code | error | HTTP | 설명 |
|---|---|---|---|
1000 | An error occurred during system processing | 500 | 시스템 처리 중 오류가 발생했습니다 |
AUTH_ERROR — 인증/권한 오류
| code | error | HTTP | 설명 |
|---|---|---|---|
2000 | Access denied | 403 | 접근 권한이 없습니다 |
VALIDATION_ERROR — 입력값 오류
| code | error | HTTP | 설명 |
|---|---|---|---|
3000 | Please check your input information | 400 | 입력 정보를 확인해주세요 |
BUSINESS_ERROR — 비즈니스 로직 오류
가장 중요한 에러 코드
BUSINESS_ERROR는 예약 생성·확정·취소·조회 과정에서 발생하는 핵심 에러입니다. 공급사는 반드시 해당 상황에 맞는 코드를 정확히 반환해야 하며, 잘못된 코드 또는 누락 시 온다 시스템이 예약 처리를 올바르게 수행할 수 없습니다.
| code | error | HTTP | 설명 |
|---|---|---|---|
4000 | No rooms available for booking | 409 | 예약 가능한 객실이 없습니다 (Create Reservation) |
4001 | Requested amount differs from actual amount | 409 | 요청 금액과 실제 금액이 다릅니다 (Create Reservation) |
4002 | Minimum guest requirement not met | 409 | 최소 예약 인원을 충족하지 않습니다 (Create Reservation) |
4003 | Maximum guest capacity exceeded | 409 | 예약 가능 인원을 초과했습니다 (Create Reservation) |
4004 | Reservation not found | 404 | 해당 예약을 찾을 수 없습니다 (Check Reservation) |
4005 | Reservation already cancelled | 409 | 이미 취소된 예약입니다 (Cancel Reservation) |
4006 | Reservation cannot be cancelled | 409 | 예약 취소가 불가능한 상태입니다 (Cancel Reservation) |
4007 | Reservation cannot be confirmed | 409 | 예약 확정이 불가능한 상태입니다 (Confirm Reservation) |
UNKNOWN_ERROR — 알 수 없는 오류
| code | error | HTTP | 설명 |
|---|---|---|---|
9999 | An unknown error occurred | 500 | 알 수 없는 오류가 발생했습니다 |
주의사항
code필드 우선 사용:code필드가 포함된 경우 온다는 해당 코드를 우선 사용합니다.code가 없거나 알 수 없는 값인 경우error메시지를 패턴 매칭으로 분류합니다.error필드는 위 목록의 영문 메시지를 사용해야 합니다. 임의의 문자열을 사용할 경우 온다가 에러를 올바르게 분류하지 못할 수 있습니다.- 정의되지 않은 코드: 위 목록에 없는 코드가 포함된 경우, 온다는 HTTP 상태코드 기반으로 에러를 분류하거나
9999 (UNKNOWN_ERROR)로 처리합니다.