일반적인 오류 응답

API 서비스는 다음과 같은 일반적인 오류 코드와 메시지, 응답 형식을 공유합니다. 서비스별 오류 응답을 확인하려면 개별 설명서 페이지를 참조해 주세요.

Rapid 오류 처리 권장 사항

오류 처리 논리

  • 플랫폼과 파트너는 Rapid 오류를 처리하기 위해 조회 및 예약 오류 처리 논리가 있는지 확인해야 합니다.
  • 아래 참고 사항에 명시되지 않은 한 모든 예약 요청에 대해 항상 고유한 affiliate_reference_id를 사용합니다.
  • 파트너는 특히 예약 요청에 대한 오류 처리 논리를 지속적으로 검토하고 업데이트해야 합니다.
  • 모든 Rapid 응답에는 해당 HTTP 코드가 있습니다. 응답 HTTP 코드 목록은 아래를 참조해 주세요.

연결 시간 초과 또는 통신 시간 초과

예약 요청에는 90초의 API 연결 시간 초과 설정이 권장됩니다. 다른 API에 대해 정해진 권장 사항은 없으나 시간 초과로 인한 금전적 손실은 없으므로 유사한 시간 초과 설정을 적용해야 합니다. 그러나 일부 파트너는 예약 가능 여부 조회 호출에 더 짧은 연결 시간 초과를 사용하기로 결정할 수 있습니다.

파트너가 120초 내에 응답을 받지 못하는 경우 아예 응답을 받지 못하게 됩니다. 이는 EPS Rapid에 자체 시간 초과 설정이 있고 120초가 Rapid 최종 시간 초과 값이기 때문입니다. 그 시간이 지나면 Rapid에서 5xx 오류를 발생시킵니다.

경우에 따라 Rapid는 HTTP Expect: 100-Continue 프로세스를 지원하지 않습니다. 파트너는 특히 기본적으로 프로세스를 따르는 cURL, C#/.NET, 기타 일부 코딩 언어에서 프로세스와 서버를 연결하려고 할 때 연결 문제를 경험할 수 있습니다.

참고: HTTP 504 게이트웨이 시간 초과가 Rapid가 시간 초과되었음을 의미하지는 않습니다. 이러한 경우 인프라 서비스가 실패했거나 Rapid가 다른 다운스트림 서비스에 대한 게이트웨이 역할을 하고 해당 서비스에 대한 시간 초과 제한을 설정합니다. 트리거된 시간 초과이며 EPS는 이를 504로 보고해야 합니다. 예약 호출에 대해 504가 발생하는 경우 예약이 생성되기 전에(예: 호텔 통신, 결제 서버) 또는 예약이 생성된 후에(예: EPS 재무 관리) 다운스트림 문제가 발생할 수 있으므로 일정 검색( affiliate_reference_id+이메일)을 사용하여 예약이 생성되었는지를 확인해야 합니다. 또한 인터넷 연결이 안정적인지도 확인해 주세요. Traceroute 명령은 연결 문제를 식별하는 데 도움이 될 수 있습니다.

예약 처리 및 5xx 오류 검색

예약 오류(5xx 상태) 또는 시간 초과가 반드시 예약 자체가 유효하지 않음을 의미하는 것은 아니므로 이렇게 가정해서는 안 됩니다. 예약이 생성된 후 오류가 발생했을 수 있습니다. 따라서 예약 상태를 확인하기 위해 affiliate_reference_id+이메일로 일정 검색을 실행하는 것이 좋습니다.

90초 이내에 반환된 오류는 예약의 최종 상태를 나타내지 않습니다. 일반적으로 대부분의 예약은 13 ~ 30초 이내에 확인된 예약으로 해결되지만 일부는 확인하는 데 최대 90초가 걸릴 수 있습니다.

파트너는 90초 동안 예약 상태를 3번 확인하는 논리를 구현할 수 있습니다. 대부분의 응답은 처음 30초 이내에 확인되며 파트너는 90초 전체를 기다리지 않고 응답을 확인할 수 있습니다. 최종 응답을 받지 못한 경우 파트너는 60초 후에 다시 검색한 다음, 최종 응답을 확인하기 위해 90초 후에 마지막으로 검색할 수 있습니다.

검색 API 호출을 사용하여 예약 결과를 두 번 확인합니다(HTTP 200 또는 HTTP 404 응답).

검색 응답에서 보류/재개 정보 반환

경우에 따라 성공적인 예약 후 일정 검색 응답에서 보류/재개 예약인 것처럼 보이는 응답 데이터를 반환합니다. 따라서 예상한 예약 정보(객실, 취소 위약금 등) 대신 보류/재개 상황에 필요한 토큰만 응답에 포함됩니다.

응답 예:

{
  "itinerary_id": "2667552437552",
  "links": [
    {
      "rel": "retrieve",
      "method": "GET",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    },
    {
      "rel": "resume",
      "method": "PUT",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    },
    {
      "rel": "cancel",
      "method": "DELETE",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    }
  ]
}

그 이유는 예약이 완벽하게 유효하지만 여전히 보류 중인 플래그가 있기 때문입니다. 이 문제는 일반적으로 몇 분 안에 해결되므로 예약이 완료될 때까지 일정 검색 요청을 반복해야 합니다.

여러 수준 구조의 오류 분석

API 응답은 단일 수준 오류가 모든 세부 정보를 설명할 수 없는 경우 여러 수준으로 오류를 분류할 수 있습니다. 모든 수준에서 정보를 반복하면 오류를 명확히 하고 오류를 해결하는 데 도움이 됩니다.

응답 예:

{
    "type": "invalid_input",
    "message": "An invalid request was sent in, please check the nested errors for details.",
    "errors": [
        {
            "type": "duplicate_itinerary",
            "message": "An itinerary already exists with this affiliate reference id.",
            "fields": [
                {
                    "name": "affiliate_reference_id",
                    "type": "body",
                    "value": "XXXXXX"
                }
            ]
        }
    ]
}

HTTP 응답 코드

400 - Bad Request

요청이 잘못되었거나 부적절한 값을 포함한 경우 반환됩니다.

코드 400 Bad Request 오류는 예약 요청 헤더에 문제가 있음을 나타냅니다. 오류 응답에는 유효하지 않은 예약 요청 헤더의 실제 오류 배열 필드가 포함됩니다. 예약 헤더는 객실 및 결제와 같은 여러 배열 및 하위 배열로 구성됩니다. 전체 배열이 본문입니다. 따라서 body.email은 헤더 본문의 이메일 매개변수를 나타냅니다.

참고: 예약 헤더 객실 배열에는 예약 가능 여부 호출에서 요청된 객실과 동일한 수의 항목이 있어야 합니다.

요청 매개 변수가 지나치게 크면 "Tomcat Exception Report"라는 레이블이 지정된 400 잘못된 요청 오류가 반환되며, 이 오류는 대부분 숙박 시설 콘텐츠 및 예약 가능 객실 가져오기 API에서 발생합니다. 이 오류를 방지하려면 숙박 시설 수를 줄이거나 요청에서 불필요한 매개변수를 제거해 주세요.

응답 예:

지원되지 않는 언어:

{
  "type": "invalid_input",
  "message": "An invalid request was sent in, please check the nested errors for details.",
  "errors": [
    {
      "type": "language.not_supported",
      "message": "Language is not supported. Supported languages are: [de-DE, en-US, es-ES, es-MX, fr-FR, id-ID, it-IT, ja-JP, ko-KR, pt-BR, zh-CN]",
      "fields": [
        {
          "name": "language",
          "type": "querystring",
          "value": "xx-XX"
        }
      ]
    },
    {
      "type": "filter.mismatch",
      "message": "Existing booking is expedia_collect, this cannot be changed",
      "fields": [
        {
          "name": "filter",
          "type": "querystring",
          "value": "property_collect"
        }
      ]
    }
  ]
}

누락된 버전 값:

{
  "type": "version.required",
  "message": "You have not specified a version, the supported versions are: [1, 2]",
  "fields": [
    {
      "name": "version",
      "type": "path",
      "value": "missing"
    }
  ]
}

잘못된 버전 값:

{
  "type": "version.unsupported",
  "message": "You have requested a version that is not supported, supported versions are: [1, 2]",
  "fields": [
    {
      "name": "version",
      "type": "path",
      "value": "3"
    }
  ]
}

401 - Unauthorized

HTTP 인증 헤더를 찾을 수 없거나 구문 분석할 수 없는 경우 반환됩니다. Rapid API 서비스에 대한 모든 요청에는 API 키 + 공유 암호 + UNIX 타임스탬프(초) 연결의 언솔티드 SHA-512 해시가 포함되어야 합니다. 자세한 정보는 서명 인증 페이지를 참조해 주세요.

401 Unauthorized 응답 예:

{
  "type": "request_unauthenticated",
  "message": "Data required to authenticate your request is missing. Ensure that your request follows the guidelines in our documentation.",
  "fields": [
     {
       "name": "apikey",
       "type": "header",
       "value": "jaj3982k239dka328e"
     },
     {
       "name": "signature",
       "type": "header",
       "value": "129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b"
     },
     {
       "name": "timestamp",
       "type": "header",
       "value": 198284729
     },
     {
       "name": "servertimestamp",
       "type": "server",
       "value": 198284729
     }
  ]
}

403 - Forbidden

HTTP 인증 헤더가 유효하지만, 요청한 리소스에 액세스하도록 허용되지 않은 경우 반환됩니다.

403 Forbidden 응답 예:

{
  "type": "request_unauthorized",
  "message": "Your request could not be authorized."
}

404 - Not found

요청한 API 리소스를 찾을 수 없는 경우 반환됩니다. 문서화된 예와 비교하여 요청 URL을 확인해 보세요.

또한, 지리 API콘텐츠 API는 404 응답을 사용하여 요청한 지리 또는 콘텐츠별 파일이나 리소스를 찾을 수 없는 경우를 나타냅니다. 자세한 예는 해당 설명서 페이지를 참조해 주세요.

일정 검색 후 코드 404는 예약을 찾을 수 없음을 나타냅니다. 예약 오류로 인해 검색이 수행된 경우 예약이 생성되지 않은 것으로 표시됩니다. 그러나 파트너는 일정 검색 API 요청 매개변수가 유효한지 확인해야 하므로 검색 affiliate_reference_id, 이메일 및/또는 일정 번호가 올바른지 확인해야 합니다. 또한 예약 호출 후 90초 이내에 검색 API 호출이 이루어진 경우 다시 검색을 시도하여 예약 호출 후 90초가 넘었는지 확인해 주세요.

응답 예:

{
    "type": "resource.not_found",
    "message": "The requested resource could not be found."
}

409 - Price mismatch

많은 숙박 시설과 체인은 동적 가격 책정 또는 "시간 기반 가격 책정"이라는 것을 사용합니다. 이는 가격이 공급 및 수요 알고리즘에 따라 달라진다는 것을 의미합니다. Expedia Group은 숙박 시설로부터 초당 여러 번 업데이트된 요금을 수신하므로 요금이 자주 변경됩니다.

요금 변경은 일반적으로 EPS가 아닌 숙박 시설의 선택이라는 점에 유의해야 합니다. 또한 파트너 등급을 포함하여 요금/예약 가능 여부에 대해 여러 수준에서 캐싱이 이루어지기 때문에 모든 예약에 여러 계층의 대기 시간이 있을 수 있습니다.

가격 불일치(PMM)는 예상되는 상황이며, 숙박 시설에서 입력한 업데이트된 가격을 반영하지 않는 시스템 또는 시스템 저하를 비롯하여 여러 가지 이유로 발생할 수 있습니다. 파트너는 이러한 이벤트의 빈도를 모니터링하고 비율이 갑자기 증가하거나 임계값에 도달하면 EPS 지원 팀에 문의해야 합니다.

동시에 여러 숙박 시설/객실에 대해 PMM이 발생한 경우 Rapid 성능 저하가 발생했는지 확인해 주세요.

오랫동안 동일한 요금/객실에 대해 PMM이 반환되는 경우 이는 아마도 숙박 시설에서 요금을 잘못 로드했기 때문일 수 있습니다. EPS 기술 지원 팀에 문의하여 확인해 주세요.

PMM에서 복구하려면 요금 확인 API를 다시 호출하여 새 예약 URL 토큰을 받습니다. 그런 다음 예약 호출에서 동일한 affiliate_reference_id를 사용할 수 있습니다.

응답 예:

{
  "type": "price_mismatch",
  "message": "Payment amount did not match current price, please check price and try again.",
  "fields": [
    {
      "name": "payments.amount",
      "type": "body",
      "value": "100.00"
    },
    {
      "name": "price.amount",
      "type": "body",
      "value": "120.00"
    }
  ]
}

410 - Gone or sold out

추적 중인 Rapid 링크가 만료되었거나 요청된 객실을 더 이상 예약할 수 없는 경우에 반환됩니다.

많은 호텔 체인과 숙박 시설이 Expedia Group와의 직접 통신 연결을 갖추고 있습니다. 동기 통신은 Expedia Group과 숙박 시설/체인 간에 실시간으로 발생하는 상호 작용 방식의 교환입니다.

동기 통신 예약은 숙박 시설이나 체인이 EPS에 객실 재고(예약 가능 여부 및 가격)를 제공하고 EPS가 해당 객실 재고를 관리하며 이후 이 데이터에 대해 예약 가능 여부 조회 및 요금 확인 호출이 이루어지는 경우입니다. 그런 다음, 예약 시 객실을 예약하기 위해 숙박 시설에 대한 동시 예약 호출이 이루어집니다. 이 오류는 선택한 객실의 재고가 부족할 때 발생합니다. 재고가 부족한 경우 Rapid는 코드 410 오류 메시지를 반환합니다.

이는 일시적인 상황일 수 있으며 다시 시도하면 예약 가능한 객실을 찾을 수 있습니다. 90초 동안 기다린 다음, 예약과 함께 전송된 것과 동일한 affiliate_reference_id를 사용하여 검색 요청으로 예약 상태를 확인합니다. 예약이 없는 경우 사용자는 다른 숙박 시설/객실/요금/날짜 조합을 선택해야 할 수 있습니다.

매진 오류 메시지는 숙박 시설에 대한 연결이 저하되어 Rapid가 실제 예약 가능 여부를 나타내지 않아 매진 오류 메시지를 표시하는 경우에도 발생할 수 있습니다.

응답 예:

링크 만료:

{
  "type": "link.expired",
  "message": "The link you followed has expired. Please request a new link."
}

매진:

"type": "rooms_unavailable",
"message": "One or more requested rooms are unavailable."

426 - Upgrade required

요청에서 TLS(SSL 대체)를 사용하지 않은 경우 반환됩니다.

응답 예:

{
  "type": "upgrade_required",
  "message": "This service requires the use of TLS."
}

429 - Rate limit error

참고: 너무 많은 요청에 대해 오류가 발생하면 수정된 요청을 시도하기 전에 최소 5분 이상 기다려 주세요. 더 자주 재시도하면 캐시 타이밍으로 인해 반복되는 실패가 발생합니다.

요청 수가 속도 제한을 초과하면 429 상태 코드가 반환됩니다. 모든 요청은 두 가지 상이한 속도 제한, 즉 통합에서 한도를 초과하는 속도로 요청을 전송하고 있고 Expedia Group 서버에서 한도를 초과하는 부하가 발생하고 있는 경우 제한을 받을 수 있습니다.

파트너가 Expedia Group API 요청을 생성하면 수신 서버에서 요청 개수가 제한 범위 내에 있는지 확인합니다. 요청 개수가 제한 범위 이내이면 요청이 통과되고 클라이언트 개수가 증가됩니다. 클라이언트 요청 개수가 제한을 초과하면 서버에서 HTTP 429(요청이 너무 많음) 상태 코드를 사용하여 응답을 반환합니다.

서버는 필요한 경우 Rate-Limit-Day-ResetRate-Limit-Minute-Reset 헤더를 포함할 수 있습니다. 이 헤더는 다음 요청을 보내기 전 대기 시간을 나타냅니다. 다음 텀블이 발생할 때의 마이크로초(밀리초가 아님) 단위의 타임스탬프입니다.

예를 들어 날짜/시간으로 변환하면 '15489792000000' 값이 Friday, February 1, 2019 12:00:00 AM(UTC)가 됩니다.

응답 예:

HTTP/1.1 429 Too Many Requests
Connection →keep-alive
Content-Length →106
Date →Fri, 01 Feb 2019 06:20:51 GMT
Rate-Limit-Day-Remaining →18
Rate-Limit-Day-Reset →1548979200000
Rate-Limit-Minute-Remaining →0
Rate-Limit-Minute-Reset →1549002000000
Rate-Limit-Reduction-Status →inactive
Server →EAN
Transaction-Id →003224d2-1407-42fe-8bf8-6d74226e7f00

500 - Internal server error

Rapid API 또는 업스트림 시스템 내의 오류에 대해 반환됩니다. 특정 작업이 주어지면 메시지 필드의 지침을 따르고, 그렇지 않으면 동일한 affiliate_reference_id로 요청을 다시 시도해 주세요.

Rapid가 문제를 감지했지만 정확한 문제가 무엇인지 더 구체적으로 알 수 없는 경우 HTTP 500으로 응답합니다. 모든 파트너는 Rapid 사용에서 때때로 몇 가지 코드 500 응답을 예상해야 합니다.

HTTP 500 오류는 시리아와 같이 지원되지 않는 POS가 사용될 때도 발생할 수 있습니다.

예약 생성 또는 예약 취소 이외의 API 응답에서 오류를 수신했으며 알려진 성능 저하가 없는 경우 나중에 요청을 다시 시도해 주세요. 응답은 다시 시도하기 전에 최소 대기 시간(초)을 나타내는 Retry-After 헤더를 포함할 수 있습니다.

예약 생성 시 API 응답에서 오류를 수신한 경우:

  • 90초 동안 기다린 다음, 예약과 함께 전송된 것과 동일한 affiliate_reference_id를 사용하여 검색 요청으로 예약 상태를 확인합니다.
  • 예약이 없거나 500 오류가 계속 수신되면 나중에 예약을 다시 시도합니다.

예약 취소 시 API 응답에서 오류를 수신한 경우:

  • 90초 동안 기다린 다음, 알려진 itinerary_id를 사용하여 일정 검색 요청으로 예약 상태를 확인합니다.
  • 예약이 취소되었거나 500 오류가 계속 수신되면 나중에 취소 요청을 다시 시도합니다.

응답 예:

{
  "type": "unknown_internal_error",
  "message": "An internal server error has occurred."
}
{
  "type": "internal_error",
  "message": "An internal server error has occurred. Please discard any previously received results in this pagination and restart the pagination from the beginning."
}

503 - Service unavailable

HTTP 503 오류는 일반적으로 일시적이며 Rapid 또는 다운스트림 서비스가 현재 요청을 처리할 수 없음을 나타냅니다. 여기에는 일시적인 과부하에서 숙박 시설 연결 끊김에 이르기까지 여러 가지 이유가 있습니다.

예약 생성 또는 예약 취소 이외의 API 응답에서 오류를 수신했으며 알려진 성능 저하가 없는 경우 나중에 요청을 다시 시도해 주세요. 응답은 다시 시도하기 전에 최소 대기 시간(초)을 나타내는 Retry-After 헤더를 포함할 수 있습니다.

예약 생성 시 API 응답에서 오류를 수신한 경우

  • 이전 요금 확인 응답의 예약 링크는 곧 만료됩니다. 첫 시도에서 HTTP 503 오류 메시지가 표시되면 해당 링크가 만료된 것일 수 있습니다. 새 링크를 받은 후 예약을 다시 시도해 주세요.
  • 두 번째 시도에서 503을 수신한 경우 90초 동안 기다린 다음, 예약과 함께 전송된 것과 동일한 affiliate_reference_id를 사용하여 검색 요청으로 예약 상태를 확인합니다.
  • 예약이 없거나 503 오류가 계속 수신되면 나중에 예약을 다시 시도합니다.

예약 취소 시 API 응답에서 오류를 수신한 경우:

  • 90초 동안 기다린 다음, 알려진 itinerary_id를 사용하여 일정 검색 요청으로 예약 상태를 확인합니다.
  • 예약이 취소되었거나 503 오류가 계속 수신되면 나중에 취소 요청을 다시 시도합니다.

응답 예:

{
  "type": "service_unavailable",
  "message": "This service is currently unavailable."
}

504 - Gateway time out

HTTP 504 오류는 일반적으로 Rapid에서 발생하는 것이 아니라 클라우드 또는 에지 인프라에서 발생하며 트랜잭션 중에 네트워크 인프라 내 항목(예: 로드 밸런서)이 실패했음을 나타냅니다. 이 오류는 일반적으로 일시적인 이벤트입니다.

일정 생성 전이나 후에 시간 초과가 발생할 수 있으니 반드시 일정이 생성되었는지 여부를 확인해 주세요.

HTTP 504(및 502) 오류 응답은 Rapid JSON 유형/메시지 개체 쌍이 아닌 HTML 형식입니다. 이 형식은 이러한 오류가 Rapid에서 생성되지 않은 것임을 나타내는 또 다른 표시입니다.

응답 예:

<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>

오류 응답의 임계값 비율

자체 임계값을 설정하려면 파트너는 409, 410, 500, 503 및 504 응답 코드의 일일 비율을 측정해야 합니다. 임계값이 위반되는 경우 EPS 지원 팀에 문의해야 합니다.

EPS는 파트너가 속해 있고 판매하는 시장과 기타 요인에 따라 실제로 달라지기 때문에 임계값을 설정해 놓지 않습니다. 어떤 오류 응답이 발생하는 이유를 결정하려면 시장에 대해 알고 있어야 합니다. 지침에 따르면 매일 또는 매주 기간 동안 코드 50xx 오류로 인해 예약 통화의 최대 5 ~ 6%가 실패할 것으로 예상됩니다.

시간이 지남에 따라 파트너는 자체 임계값을 계산할 수 있어야 합니다. 파트너는 갑작스러운 일일 증가만을 살펴봐서는 안 됩니다. 하루에 5개의 임계값을 설정하더라도 예를 들어 5분 이내에 두 개의 500 오류가 발생하면 EPS 지원 팀과 확인해야 하는 원인이 될 수 있습니다.

로그

EPS가 요청/응답 로그를 요청하는 경우 다음을 시도해 주세요.

  • API 응답 헤더의 Transaction-Id 값. 이 값은 심층 조사에 매우 중요합니다.
  • API 요청 및 응답 로그 모두. 요청 로그에는 사용된 전체 엔드포인트 URL이 포함되어야 합니다. 응답 로그에는 반환된 HTTP 코드, 전체 응답 데이터 및 반환된 모든 헤더가 포함되어야 합니다.
  • point_of_sale 매개변수와 예약 가능 여부 응답이 있는 예약 가능 여부 API 요청. 이를 통해 EPS 지원 팀에서 사용 중인 Rapid 계정과 프로필을 식별할 수 있습니다.
  • 각 예약 요청에 대한 예약 API 요청 헤더 및 승인 헤더(APIKey, 서명 및 타임스탬프 포함)
  • 요청 로그의 예약 요청 URL 및 토큰
  • 예약 호출이 작동했는지 또는 실패했는지에 관계없이 예약 API 호출 후에 실행된 일정 검색

전체 JSON 요청 및 응답을 포함해 주세요. JSON 문자열은 큰따옴표로 묶어야 하므로 큰따옴표 문자 앞에 백슬래시 이스케이프 문자를 포함할 필요가 없습니다.

좋은 JSON 코드잘못된 JSON 코드
| json "id": "208646250", "status": "available", | json\"id\": \"208646250\", \"status\": \"available\", |

큰따옴표가 문자열의 일부가 되어야 하는 경우에만 큰따옴표 앞에 백슬래시 이스케이프 문자를 사용해 주세요.

응답 예:

"spokenwords": "He said "hello world""

로그를 PDF 형식으로 생성하지 마십시오. EPS 지원 팀 및 개발자는 때때로 내부 도구에 로그 데이터를 복사하거나 붙여 넣는데, PDF 형식은 데이터에 불필요한 줄 바꿈 문자를 추가합니다.

부록

|

Rapid HTTP 오류 응답

알려진 조회, 예약, 취소 및 기타 일반적인 오류를 참조해 주세요. type의 값은 예고 없이 변경될 수 있습니다.

APIHTTP 코드오류 유형 값이유권장 작업
전체401액세스 문제비즈니스/기술 커뮤니케이션n/a
전체403액세스 문제비즈니스/기술 커뮤니케이션n/a
전체426API 버전이 너무 오래되었습니다.비즈니스/기술 커뮤니케이션n/a
전체429트래픽 제어비즈니스/기술 커뮤니케이션n/a
예약400affiliate_confirmation_id.invalid_exceeds_char_limitaffiliate_reference_id 형식이 잘못되었습니다.요청 내용을 조정합니다.
예약400book.hold_and_resume.not_allowed액세스 문제사례별로 다릅니다.
예약400payments.affiliate_collect.not_allowed액세스 문제사례별로 다릅니다.
예약400payments.declined거래 실패자세한 내용은 중첩된 오류를 확인합니다.
예약400payments.rejected거래 실패자세한 내용은 중첩된 오류를 확인합니다.
예약400payments.invalid거래 실패자세한 내용은 중첩된 오류를 확인합니다.
예약400payments.fraud_detected사기가 의심됨많은 예약을 하는 사용자를 중지시킵니다. 추가적인 조사가 필요합니다.
예약400body.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400body_required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400address.city.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400address.country_code.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400address.line_1.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400address.postal_code.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400address.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400address.state.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400billing_contact.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400customer_ip.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400email.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400email.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400family_name.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400family_name.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400given_name.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400given_name.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400invalid_input요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400json.invalid_format요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400json_format요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400link.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400payments.affiliate_collect.missing_information요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400payments.credit_card.type.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400payments.credit_card.type.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400payments.multiple_payments요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400payments.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400payments.type.not_supported요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400phone.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400phone.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400rooms.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400rooms.size.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400test.content_invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
예약400n/a알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약400rooms.invalid_size조회 객실 수가 예약의 객실 수와 일치하지 않습니다.요청 내용을 조정합니다.
예약400payments.credit_card.number.required은행 카드 번호가 누락되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.number.invalid잘못된 은행 카드 번호입니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.security_code.required은행 카드 확인 코드가 누락되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.security_code.invalid은행 카드 확인 코드가 잘못되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.security_code.not_matched은행 카드 확인 코드가 잘못되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.expired은행 카드가 만료되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.expiration_month.required은행 카드 유효 기한이 누락되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.expiration_year.required은행 카드 유효 기한이 누락되었습니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.credit_card.expiration_year.length_invalid잘못된 은행 카드 유효 기간입니다.은행 카드 정보의 로컬 확인 과정을 개선합니다.
예약400payments.insufficient_funds은행 카드 잔액이 부족합니다.사용자에게 정보를 확인하고 다시 시도하도록 요청합니다.
예약400duplicate_itinerary중복된 예약 시도입니다.90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약409price_mismatch예약을 처리하기 전에 가격 조정이 감지되었습니다.사용자에게 새 가격이나 다른 객실/호텔을 제안하기 전에 90초 동안 기다린 후 affiliate_reference_id를 사용하여 중복 예약이 있는지 검토합니다.
예약410rooms_unavailable예약을 처리하기 전에 매진이 감지되었습니다.사용자에게 다른 객실/호텔을 선택하도록 제안하기 전에 90초 동안 기다린 후 affiliate_reference_id를 사용하여 중복 예약이 있는지 검토합니다.
예약415n/a알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약415n/a알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약500create.system_failure알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약500payment_registration.system_failure알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약500pricing_system.failure알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약500unknown_internal_error알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약500n/a알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약503create.no_response알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약503service_unavailable알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
예약504n/a알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토합니다.
취소400cancel.post_checkout체크아웃 날짜 후 취소체크아웃 날짜 후에는 온라인 취소를 중지하고 고객 운영 팀에 문의합니다.
취소400customer_ip.required요청 내용이 올바르지 않습니다.affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소400invalid_input요청 내용이 올바르지 않습니다.affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소400room_id.invalid요청 내용이 올바르지 않습니다.affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소400test.content_invalid요청 내용이 올바르지 않습니다.affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소400room_already_cancelled취소된 주문을 취소합니다.affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소400cancel.post_checkin체크인 날짜 후 취소체크인 날짜 후에는 온라인 취소를 중지하고 고객 운영 팀에 문의합니다.
취소404resource_not_found알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소500cancel.system_failure알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토한 다음 다시 시도해보고, 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소500unknown_internal_error알 수 없는 예외다시 시도해 보고 고객 운영 팀에 문의합니다.
취소501itinerary_level_cancel_not_supported요청 내용이 올바르지 않습니다.90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토하고 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소503cancel.system_failure알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토한 다음 다시 시도해보고, 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
취소503service_unavailable알 수 없는 예외90초 동안 기다린 후 affiliate_reference_id를 사용하여 예약 업데이트를 검토한 다음 다시 시도해보고, 고객 운영 팀에 연락하여 필요한 추가 조사를 수행합니다.
요금 확인200availability.not_found매진여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
요금 확인200n/a알 수 없는 예외다시 시도합니다.
요금 확인400customer_session_id.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
요금 확인400invalid_input요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
요금 확인400link.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
요금 확인400test.content_invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
요금 확인409availability.not_found매진여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
요금 확인409n/a알 수 없는 예외다시 시도합니다.
요금 확인410invalid_input요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
요금 확인410availability.not_found매진여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
요금 확인410n/a알 수 없는 예외다시 시도합니다.
요금 확인410checkin.invalid_date_too_far_out앞으로 500일 동안 숙박하려면 가능한 한 빨리 예약해 주세요.사용자 입력의 로컬 유효성 검사를 개선합니다.
요금 확인500availability.not_found매진여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
요금 확인500unknown_internal_error알 수 없는 예외다시 시도합니다.
요금 확인500n/a알 수 없는 예외다시 시도합니다.
요금 확인503availability.not_found매진여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
요금 확인503service_unavailable알 수 없는 예외다시 시도합니다.
요금 확인503n/a알 수 없는 예외다시 시도합니다.
조회200availability.not_found매진되었거나 잘못된 호텔 코드입니다.여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
조회400property_id.above_maximum하나의 요청에 최대 250개의 숙박 시설 ID를 포함할 수 있습니다.요청 내용을 조정합니다.
조회400currency.not_supported지원되지 않는 통화 단위입니다.사례별로 다릅니다.
조회400departure.invalid_departure_before_arrival체크아웃 날짜가 체크인 날짜보다 더 이릅니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400number_of_adults.invalid_above_maximum각 객실은 성인 15명을 초과할 수 없습니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400number_of_adults.invalid_below_minimum각 객실은 성인 15명을 초과할 수 없습니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400number_of_occupancies.invalid_above_maximum각 객실은 성인 15명을 초과할 수 없습니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkin.invalid_date_format요청 내용이 올바르지 않습니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkin.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400checkout.invalid_date_format요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400checkout.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400child_age.invalid_age_format요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400child_age.invalid_outside_accepted_range요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400country_code.above_maximum요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400country_code.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400country_code.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400currency.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400customer-ip.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400filter.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400include.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400invalid_input요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400language.above_maximum요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400language.not_supported요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400language.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400link.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400occupancy.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400platform_name.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400property_id.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400rate_option.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400rate_plan_count.above_maximum요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400rate_plan_count.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400rate_plan_count.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sales_channel.above_maximum요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sales_channel.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sales_channel.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sales_environment.above_maximum요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sales_environment.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sales_environment.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sort_type.above_maximum요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sort_type.invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400sort_type.required요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400test.content_invalid요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회400arrival.invalid_date_in_the_past체크인 날짜사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkin.invalid_date_in_the_past체크인 날짜사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkout.above_maximum28일 넘게 숙박합니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkout.invalid_length_of_stay_too_long28일 넘게 숙박합니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkout.invalid_length_of_stay_too_short28일 넘게 숙박합니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400departure.invalid_length_of_stay_too_long28일 넘게 숙박합니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400departure.invalid_length_of_stay_too_short28일 넘게 숙박합니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkout.invalid_checkout_before_checkin체크아웃 날짜가 체크인 날짜보다 더 이릅니다.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400property_id.invalid잘못된 숙박 시설 ID요청 내용을 조정합니다.
조회400arrival.invalid_date_too_far_out앞으로 500일 동안 숙박하려면 가능한 한 빨리 예약해 주세요.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회400checkin.invalid_date_too_far_out앞으로 500일 동안 숙박하려면 가능한 한 빨리 예약해 주세요.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회403filter.conflict요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회403request_forbidden요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회404availability.not_found매진되었거나 잘못된 호텔 코드입니다.여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
조회500invalid_input요청 내용이 올바르지 않습니다.요청 내용을 조정합니다.
조회500unknown_internal_error알 수 없는 예외다시 시도합니다.
조회500checkin.invalid_date_too_far_out앞으로 500일 동안 숙박하려면 가능한 한 빨리 예약해 주세요.사용자 입력의 로컬 유효성 검사를 개선합니다.
조회503availability.not_found매진되었거나 잘못된 호텔 코드입니다.여행객에게 객실 유형 또는 호텔 변경을 제안합니다.
조회503service_unavailable알 수 없는 예외다시 시도합니다.

예약 처리 의사 코드

다음은 예약 생성 API 및 예약 검색 API를 사용하는 단계별 예약 프로세스의 예입니다. 여기에는 예약 처리 및 예외 후속 처리에 대한 제안이 포함되어 있습니다.

function create_booking(affiliate_reference_id){
  ### make API request to create booking ###
  book_resp = rapid_book_req(affiliate_reference_id, timeout = 90seconds, hold = false)
  ### Retrieve is always required to confirm final status of bookings, to avoid duplicate requests for the last inventory ###
  retrieve_booking(book_resp.retrieve_link, affiliate_reference_id, book_resp.status_code, book_resp.req_timestamp) }

function retrieve_booking(retrieve_link, affiliate_reference_id, book_resp_status_code, rapid_book_req_time) {
  ### display the pending booking message to customers ###
  booking_final_status = "pending"
  ### always use Retrieve link when it returned in booking response ###
   if (retrieve_link == null) {
       retrieve_link = "/rapid_path?XXXXXX&affiliate_reference_id=" + affiliate_reference_id }
       ### confirm the final status of bookings ###
      while (booking_final_status not in ("booked", “canceled”, "manualFollowup", "failed")) 
        ### make API request to retrieve booking ###
      retrieve_resp = retrieve_resquest(retrieve_link) 
      ### a complete Retrieve returns room level Expedia confirmation ID ###
      if (retrieve_resp.rooms.[].confirmation_id is not null) {
          booking_final_status = retrieve_resp.rooms.[].status }
      ### retry Retrieve to monitor booking updates if 90 seconds have not elapsed yet OR system error returned ###
      elseif (currentTime - rapid_book_req_time <= 90seconds) or (retrieve_resp.status_code not in (404, 200)) {
          continue }
      ### retry Retrieve for incomplete booking result or make manual follow-ups after 11 minutes ### 
      elseif (book_resp_status_code in (200, 201, 202, 204)) or (retrieve_resp.itinerary_id is not null) {
          if (currentTime - rapid_book_req_time <= 11minutes) {
            continue } else { booking_final_status = "manualFollowup" } 
      ### retry booking request with the same affiliate reference id value to cover the booking ###
      elseif (booking_retries <= 2) {
          create_booking(affiliate_reference_id) } 
      ### the booking is failed only when the above actions have all been taken ###
      else {
booking_final_status = "failed" }}}

Rapid 예약 오류 사용자 인터페이스 예

신속하게 해결되지 않은 예약

빠르게 해결되지 않은 예약

예약 확정

예약 확정

예약 실패

예약 실패

이 페이지가 도움이 되었나요?
이 콘텐츠를 어떻게 개선하면 좋을까요?
더 나은 Developer Hub를 만드는 데 도움을 주셔서 감사합니다!