This is an auto-generated translation

일반적인 오류 응답

API 서비스는 다음과 같은 일반적인 오류 코드와 메시지, 응답 형식을 공유합니다.

Rapid 오류 처리 권장 사항

오류 처리 논리

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

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

항공편 API 예약 요청의 경우 120초의 API 연결 시간 제한 설정을 권장하며, 숙박 및 기타 API의 경우 90초를 권장합니다. 그러나 쇼핑 가용성 호출에는 더 짧은 연결 시간 초과를 사용할 수 있습니다.

120초 내에 응답을 받지 못하면 Rapid API's 자체 연결 시간 제한이 120초로 설정되어 있으므로 Rapid API 에서 5xx 오류가 발생합니다.

경우에 따라 Rapid API 은 HTTP 기대: 100-계속 프로세스를 지원하지 않습니다. 프로세스를 통해 서버를 연결하려고 할 때 연결 문제가 발생할 수 있으며, 특히 기본적으로 프로세스를 따르는 cURL, C#/.NET 및 일부 다른 코딩 언어에서 연결 문제가 발생할 수 있습니다.

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

예약 처리 및 5xx 오류 검색

예약 오류(5xx 상태) 또는 시간 초과가 반드시 예약 자체가 무효임을 의미하지는 않습니다. 예약이 생성된 후 오류가 발생했을 수 있습니다. 예약 상태를 확인하려면 affiliate_reference_id+ 이메일 주소로 일정 Retrieve를 발행하는 것이 좋습니다.

90초 이내에 반환된 오류는 예약의 최종 상태를 나타내지 않습니다. 일반적으로 대부분의 예약은 13~30초 이내에 예약 확정으로 처리되지만, 일부 예약은 최대 5분이 소요될 수 있습니다.

90초 이내에 예약 상태를 3번 확인하는 로직을 구현할 수 있습니다. 대부분의 응답은 처음 30초 이내에 확인되며, 이후에는 90초를 기다리지 않고도 응답을 확인할 수 있습니다. 최종 응답을 받지 못한 경우 30분 동안 검색을 다시 시도한 후 Rapid API 콜센터 상담원에게 추가 지원을 요청할 수 있습니다.

검색 API 호출을 사용하여 double-confirm 으로 예약 결과를 확인합니다(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"
    }
  ]
}

여러 수준 구조의 오류 분석

single-level 오류로 필요한 모든 세부 사항을 설명할 수 없는 경우 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 잘못된 요청 오류는 예약 요청 헤더에 문제가 있음을 나타냅니다. 오류 응답에는 예약 요청 헤더에 실제 유효하지 않은 오류 배열 필드가 포함됩니다. 헤더는 객실 및 결제와 같은 여러 배열과 sub-arrays, 로 구성됩니다. 전체 배열이 본문입니다. 따라서 body.email은 헤더 본문의 이메일 매개변수를 나타냅니다.

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

요청 매개 변수가 지나치게 크면 "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 인증 헤더가 누락되었거나 파싱할 수 없는 경우 반환합니다. 빠른 숙소 API에 대한 각 요청에는 API 키 + 공유 비밀번호 + UNIX 타임스탬프(초 단위)를 연결한 무염 SHA-512 해시 가 포함되어야 합니다. 자세한 정보는 서명 인증 페이지를 참조해 주세요.

숙박 API 401 무단 응답 예시:

{
  "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
     }
  ]
}

빠른 항공편 API 호출의 경우, 요청 헤더에 유효한 EGToken 기본 JSON 웹 토큰(JWT)()을 포함해야 합니다.

Authorization: EGToken principal-JWT={encodedJwt}

주요 JWT는 OAuth 2.0 클라이언트 자격 증명 및 토큰 교환을 통해 획득합니다. 자세한 내용은 OAuth 2.0 인증빠른 항공권 예약 API 사용 가이드를 참조하세요.

403 - Forbidden

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

403 Forbidden 응답 예:

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

404 - Not found

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

숙박 지리 API콘텐츠 API 또한 404 응답을 사용하여 요청된 지리 또는 content-specific 파일이나 리소스를 찾을 수 없는 경우를 표시합니다. 자세한 예는 해당 설명서 페이지를 참조해 주세요.

일정 검색 후 코드 404는 예약을 찾을 수 없음을 나타냅니다. 예약 오류로 인해 검색이 수행된 경우 예약이 생성되지 않은 것으로 표시됩니다. 단, 일정 검색 API 요청 파라미터가 유효한지 확인해야 하므로 검색 affiliate_reference_id, 이메일 및/또는 일정 번호가 올바른지 확인해야 합니다. 또한 검색 API 호출이 예약 호출 후 90초 이내에 이루어졌다면 검색을 다시 시도하는 것이 좋습니다.

응답 예:

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

409 - Price mismatch

많은 공급업체가 동적 가격 책정 또는 "time-based 가격 책정"이라고도 하는 것을 사용합니다. 이는 가격이 공급 및 수요 알고리즘에 따라 달라진다는 것을 의미합니다. Expedia Group 는 초당 여러 번 업데이트된 요금을 수신하므로 요금이 자주 변경됩니다.

이는 일반적으로 공급업체의 선택에 따라 결정된다는 점에 유의해야 합니다. Expedia Group. 또한 요금과 가용성에 대한 여러 수준의 캐싱이 있기 때문에 모든 예약에 여러 계층의 지연 시간이 발생할 수 있습니다.

가격 불일치(PMM)는 예상되는 상황으로, 시스템 성능 저하 또는 업데이트된 가격을 반영하지 않는 시스템 등 여러 가지 이유로 발생할 수 있습니다. 이러한 이벤트의 빈도를 모니터링하고 속도가 갑자기 증가하거나 임계값에 도달하면 지원팀에 문의해야 합니다.

동시에 여러 결과에 대해 PMM이 발생한 경우 성능 저하 가능성이 있는지 확인해야 합니다.

장기간에 걸쳐 동일한 결과에 대해 PMM이 반환되는 경우 공급업체가 요금을 잘못 로드했기 때문일 수 있습니다. 기술 지원팀에 문의하여 확인할 수 있습니다.

PMM에서 복구하려면 가격 확인(숙박 API) 또는 항공편 세부 정보(항공편 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 API 링크가 만료되었거나 요청된 인벤토리를 더 이상 사용할 수 없는 경우 반환합니다.

많은 공급업체가 Expedia Group 와 직접 동기식 커뮤니케이션 링크를 통해 실시간으로 소통하고 있습니다.

동기식 통신 예약은 당사가 관리하는 제공된 공급업체 데이터에 대해 쇼핑 가능 여부 및 가격 확인(숙박 API) 또는 항공편 세부 정보(항공편 API) 호출이 이루어지는 경우입니다. 이 오류는 예약 선택 항목에 대한 재고가 부족할 때 발생합니다.

일시적인 상황일 수 있으며 재시도하면 인벤토리를 사용할 수 있을 수도 있습니다. 90초 동안 기다린 다음, 예약과 함께 전송된 것과 동일한 affiliate_reference_id를 사용하여 검색 요청으로 예약 상태를 확인합니다. 예약이 없는 경우 여행자는 다른 옵션을 선택해야 할 수 있습니다.

공급업체와의 연결이 원활하지 않은 경우에도 품절 오류 메시지가 표시될 수 있습니다. 이 경우 실제 사용 가능 여부는 알 수 없습니다.

응답 예:

링크 만료:

{
  "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

요청이 보안 소켓 계층(SSL)을 대체하는 암호화 프로토콜인 TLS(전송 계층 보안)를 사용하지 않은 경우 반환합니다.

응답 예:

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

429 - Rate limit error

요청 수가 속도 제한을 초과하면 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)가 됩니다.

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

응답 예:

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 API 는 문제를 감지했지만 정확한 문제가 무엇인지 더 구체적으로 알 수 없는 경우 HTTP 500으로 응답합니다. 모든 파트너는 때때로 Rapid API 사용 시 코드 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, 또는 다운스트림 서비스가 현재 요청을 처리할 수 없음을 나타냅니다. 일시적인 과부하부터 공급업체와의 연결이 끊어지는 경우까지 여러 가지 이유가 있을 수 있습니다.

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

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

  • 이전 가격 확인(숙박 API) 또는 항공편 상세정보(항공편 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 API 에서 발생하는 것이 아니라 클라우드 또는 엣지 인프라에서 발생하며 트랜잭션 중에 네트워크 인프라의 항목(예: 로드 밸런서)이 실패했음을 나타냅니다. 일반적으로 일시적인 이벤트입니다.

참고: 타임아웃은 일정 생성 전후에 발생할 수 있으므로 항상 일정가 생성되었는지 확인하시기 바랍니다.

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

응답 예:

<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. 임계값을 위반한 경우 Rapid API 지원팀에 문의하세요.

Expedia Group 임계값은 조직의 시장 및 기타 요인에 따라 달라지므로 임계값이 정해져 있지 않습니다. 시장에 대한 지식은 일부 오류 응답이 발생하는 이유를 파악하는 데 필수적입니다. 당사의 지침에 따르면 매일 또는 매주 최대 5~6%의 예약 통화에서 코드 50배 오류가 발생하여 실패할 것으로 예상됩니다.

시간이 지나면 임계값을 직접 계산할 수 있을 것입니다. 임계값이 하루에 5개로 설정되어 있더라도 예를 들어 5분 이내에 500 오류가 두 번 발생하면 Rapid API 지원팀에 문의하여 원인을 확인해야 합니다.

로그

Rapid API 지원팀에서 요청/응답 로그를 요청하는 경우 다음을 제공해 주세요:

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

전체 JSON 요청 및 응답을 포함해 주세요. JSON 문자열은 double-quoted, 여야 하므로 double-quote 문자 앞에 백슬래시 이스케이프 문자를 포함할 필요가 없습니다.

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

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

응답 예:

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

참고: 로그를 PDF 형식으로 저장하지 마세요. Expedia Group 지원은 때때로 로그 데이터를 내부 도구에 복사/붙여넣기하며, PDF 형식은 데이터에 불필요한 줄 바꿈 문자를 추가합니다.

부록

|

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

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

빠르게 해결되지 않은 예약 예시

빠르게 해결되지 않은 예약

예약 확정 예시

예약 확정

예약 실패 예시

예약 실패

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