This is an auto-generated translation

共通エラー応答

当社の API サービスは、次に示すエラーコード、エラーメッセージ、エラー応答のフォーマットを共有しています。

Rapid でのエラー処理に関する推奨事項

エラー処理ロジック

  • プラットフォームとパートナーは、ショッピングと予約APIのエラーを処理するために、エラー処理ロジックが配置されていることを確認する必要があります。
  • 以下の注意事項で指定されていない限り、すべての予約リクエストで必ず一意の affiliate_reference_id を使用してください。
  • 特に予約リクエストのエラー処理ロジックは常に見直し、更新する必要があります。
  • すべてのRapid APIレスポンスには、対応するHTTPコードがあります。レスポンスHTTPコードの一覧については、以下を参照してください。

接続タイムアウトまたは通信タイムアウト

フライトAPIブッキングリクエストには120秒のAPI接続タイムアウト設定を推奨します。ただし、ショッピング・アベイラビリティ・コールの接続タイムアウトを小さくすることもできます。

120秒経っても応答がない場合、Rapid API's自身の接続タイムアウトが120秒に設定されているため、Rapid APIは5xxエラーを発行します。

場合によっては、Rapid APIはHTTP Expect: 100-Continue プロセスをサポートしていません。特に、cURL、C#/.NET、およびデフォルトでこのプロセスに従う他のいくつかのコーディング言語では、このプロセスでサーバーに接続しようとすると、接続の問題が発生する可能性があります。

注 : HTTP 504 のゲートウェイタイムアウトが発生しても、Rapidでタイムアウトが発生したというわけではありません。このような場合、インフラ・サービスに障害が発生したか、Rapidが別のダウンストリーム・サービスのゲートウェイとして動作しており、そのサービスのタイムアウト制限を設定しています。ダウンストリームのタイムアウトは504としてトリガーされます。504がブッキングコールで発生した場合、ブッキングが作成される前(ホテル通信、支払いサーバー)または作成後(Expedia Group財務管理)に下流の問題が発生した可能性があるため、旅程検索(affiliate_reference_id+ Eメール)を使用してブッキングが作成されたかどうかを確認してください。また、インターネット接続が安定していることも確認してください。Traceroute コマンドで接続の問題を特定できる場合もあります。

予約と取得 5xx エラーの処理

予約エラー(5xxステータス)またはタイムアウトは、必ずしも予約自体が無効であることを意味するものではありません。予約が作成された後にエラーが発生した可能性があります。予約状況を確認するために、affiliate_reference_id+ Eメールでの旅程検索を発行することをお勧めします。

90秒以内に返されたエラーは、予約の最終的なステータスを示すものではありません。通常、ほとんどの予約は13-30秒以内に予約確定となりますが、中には予約確定に5分かかるものもあります。

90秒間に3回予約状況をチェックするロジックを実装することができます。ほとんどの応答は最初の30秒以内に確認され、90秒を待たずに応答を確認することができます。最終的な回答が得られなかった場合、Rapid APIコールセンター・エージェントにさらなるサポートを依頼する前に、30分間検索を再試行することができます。

予約結果(HTTP 200またはHTTP 404レスポンス)をdouble-confirm、Retrieve APIコールを使用します。

Retrieve の応答が Hold\Resume 情報を返す

宿泊予約に成功した後、旅程検索の応答が予約の保留/再開のように見える応答データを返すことがあります。そのため、期待される予約情報(部屋、キャンセルペナルティなど)ではなく、保留/再開の状況に必要なトークンだけがレスポンスされます。

予約は有効ですが、まだ保留フラグがついているからです。通常、この現象は数分以内に解消されるため、予約が完了するまで Itinerary Retrieve リクエストを繰り返してください。

レスポンスの例 :

{
  "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 Bad Requestエラーは、Request Bookingヘッダーに問題があることを示しています。エラーレスポンスは、予約リクエストヘッダの実際の無効なエラー配列フィールドを含みます。ヘッダーは、部屋や支払いなど、いくつかの配列とsub-arrays,。配列全体が本文です。つまり、body.email はヘッダー本文のメールパラメーターを示します。

注釈: Lodging APIでは、Bookingヘッダーのrooms配列は、Availabilityコールでリクエストされた部屋と同じ数のエントリを持つ必要があります。

「Tomcat Exception Report」とラベル付けされた 400 Bad Request エラーは、通常は Property Content API と Get Availability 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 Lodging APIへの各リクエストは、API Key + 共有シークレット + UNIXタイムスタンプ(秒)を連結したSHA-512ハッシュ** (**unsalted) を含む必要があります。詳細については、シグネチャー認証のページを参照してください。

Lodging API 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
     }
  ]
}

Rapid Flight APIコールの場合、リクエストヘッダに有効なEGToken principal JSON web token (JWT) を含める必要があります。

Authorization: EGToken principal-JWT={encodedJwt}

プリンシパルJWTは、OAuth 2.0クライアント認証とトークン交換によって取得されます。詳細は、OAuth 2.0認証 およびRapid Flight Booking API 利用ガイドを参照してください。

403 - Forbidden

HTTP 認証ヘッダーは有効ですが、リクエストされたリソースへのアクセス許可がない場合に返されます。

403 禁止応答の例

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

404 - Not Found

リクエストされた API のリソースが検出できない場合に返されます。EAN の記載例で、リクエストした URL を確認してください。

LodgingGeography APIContent API も、要求されたgeographyやcontent-specificファイルやリソースが見つからない場合に、404レスポンスを使用します。詳しい例については、それぞれの文書ページを参照してください。

Itinerary Retrieve の後のコード 404 は、予約が見つからなかったことを示します。予約エラーのために取得が行われた場合、予約が作成されなかったと表示されます。ただし、Itinerary Retrieve APIリクエストパラメータが有効であることを確認する必要があるため、Retrieveaffiliate_reference_id、Eメール、旅程番号が正しいことを確認してください。また、Retrieve API呼び出しが予約呼び出しから90秒未満に行われた場合は、再度取得を試みることをお勧めします。

応答の例 :

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

409 - Price mismatch

多くのサプライヤーがダイナミック・プライシング、いわゆる「time-basedプライシング」を採用しています。そのため、需要と供給のアルゴリズムに基づいて価格が変動します。Expedia Groupレートは1秒間に何度も更新されるため、レートは頻繁に変わります。

重要なことは、これは通常、サプライヤーが選択することであり、むしろ、サプライヤーが選択することではないということです。Expedia Group. さらに、料金と空室状況には複数のレベルでキャッシュがあるため、予約には何層もの待ち時間が発生する可能性があります。

価格の不一致(PMM)は予想される事態であり、システムの劣化や更新された価格が反映されないシステムなど、さまざまな理由で起こり得ます。これらのイベントの頻度を監視し、レートが突然上昇したり、しきい値に達した場合は、サポートに連絡してください。

同時に複数の結果でPMMが発生した場合は、Rapidの劣化の可能性をチェックする必要があります。

もし、PMMが長期間にわたって同じ結果で返されるのであれば、それはおそらくサプライヤーがレートを正しくロードしていないことが原因でしょう。テクニカルサポートにお問い合わせください。

PMMから復旧するには、再度Price Check (Lodging API)またはFlight Details (Flight API)をコールし、新しいBooking 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、リアルタイムで行われる直接の同期通信リンクを持っています。

同期通信予約とは、ショッピングの空室状況と価格チェック(Lodging API)またはフライトの詳細(Flight API)の呼び出しが、当社が管理する提供されたサプライヤーデータに対して行われることです。このエラーは、選択した予約に対して在庫が不足している場合に発生します。

これは一時的なもので、再試行すると在庫が見つかるかもしれません。90 秒待機してから、予約と一緒に送信された同じ affiliate_reference_id を使用して、Retrieve リクエストで予約のステータスを確認します。予約が見つからない場合、旅行者は別のオプションを選択する必要があります。

サプライヤーとの接続が低下している場合にも、売り切れエラーメッセージが表示されることがあります。その場合、私たちは本当の稼働率を知ることができません。

応答の例 :

有効期限切れのリンク :

{
  "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 (Secure Sockets Layer) に代わる暗号プロトコルであるTLS (Transport Layer Security) を使用していなかった場合に返されます。

応答の例 :

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

429 - Rate limit error

リクエスト数がレート制限を超えた場合は 429 ステータスコードが返されます。各リクエストは 2 つの異なるレート制限に従います。統合が制限値を超える割合でリクエストを送信している場合のレート制限と、Expedia Group サーバーが制限値を超える負荷を処理している場合のレート制限です。

Expedia Group APIリクエストを行うと、受信サーバーはリクエスト数が制限内かどうかをチェックします。リクエスト数が制限値内であればそのリクエストは処理され、クライアント用のカウントが増加します。クライアントのリクエスト数が制限値を超える場合、サーバーは HTTP 429 (リクエスト過多) のステータスコードを含めた応答を返します。

サーバーでは必要に応じて Rate-Limit-Day-Reset ヘッダーと Rate-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の応答があることを予期しておく必要があります。

シリアなど、サポートされていない POS が利用されている場合にも HTTP 500 エラーが発生することがあります。

予約の作成または予約のキャンセル以外の API 応答でエラーを受け取り、既知のパフォーマンス低下がない場合は、後でリクエストを再試行してください。再試行する前の最小遅延 (秒) を示す Retry-After ヘッダーが応答に含まれる場合があります。

予約作成時に API 応答でエラーが表示された場合 :

  • 90 秒待機してから、予約と一緒に送信された同じ affiliate_reference_id を使用して、Retrieve リクエストで予約のステータスを確認します。
  • 予約が見つからない場合、または500エラーが表示され続ける場合は、後で予約を再試行してください。

予約キャンセル時にAPIレスポンスにエラーが表示された場合:

  • 90 秒待機してから、既知の itinerary_id を使用して、Retrieve リクエストで予約のステータスを確認します。
  • 予約がキャンセルされない場合、または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 応答でエラーが表示された場合 :

  • 前回のPrice Check (Lodging API)またはFlight Details (Flight API)レスポンスからの予約リンクは、しばらくすると期限切れになります。最初に試みた際に HTTP 503 エラーを受信した場合は、リンクが失効している可能性があります。新たなリンクを取得して再度予約してください。
  • 2 回目の試行で 503 になった場合は、90 秒待機してから、予約と一緒に送信された同じ affiliate_reference_id を使用して、Retrieve リクエストで予約のステータスを確認します。
  • 予約が見つからない場合、または503エラーが表示され続ける場合は、後で予約を再試行してください。

予約キャンセル時にAPIレスポンスにエラーが表示された場合:

  • 90 秒待機してから、既知の itinerary_id を使用して、Retrieve リクエストで予約のステータスを確認します。
  • 予約がキャンセルされない場合、または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閾値は、組織の市場やその他の要因によって異なるため、設定された閾値はありません。なぜエラー反応が起こるのかを判断するには、市場の知識が不可欠です。当社のガイダンスでは、1日または1週間で、予約コールの最大5~6%がコード50xエラーで失敗すると予想しています。

時間が経てば、自分で閾値を計算できるようになるはずです。1日に5回としきい値が設定されていても、例えば5分以内に2回500エラーが発生した場合は、Rapid APIサポートに確認する必要があります。

ログ

Rapid APIサポートからリクエスト/レスポンスログの提出を求められた場合は、以下のものを提出するようにしてください:

  • API 応答ヘッダーの Transaction-Id の値。これは詳しい調査に欠かせないものです。
  • API のリクエストログと応答ログの両方。リクエストログには、使用された完全なエンドポイント URL を含める必要があります。返された HTTP コード、完全な応答データ、返されたヘッダーを応答ログに含める必要があります。
  • point_of_sale パラメーターを指定した Availability API リクエスト、および Availability の応答。これにより、サポートは使用されているRapid APIアカウントとプロファイルを特定することができます。
  • 各予約リクエストの予約APIリクエストヘッダと認可ヘッダ(APIKey、署名、タイムスタンプを含む)。
  • リクエストログの Booking リクエスト URL とトークン。
  • Booking API 呼び出しの後に発行される Itinerary Retrieve (Booking の呼び出しが成功したか失敗したかは無関係)。

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アクセスに関する問題ビジネス / 技術コミュニケーション該当なし
全体403アクセスに関する問題ビジネス / 技術コミュニケーション該当なし
全体426API バージョンが古すぎるビジネス / 技術コミュニケーション該当なし
全体429トラフィック制御ビジネス / 技術コミュニケーション該当なし
予約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リクエストの内容に誤りがあります。リクエストの内容を調整してください。
予約400該当なし不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認してください。
予約400rooms.invalid_sizeShopping の客室の数が Booking の数と一致しません。リクエストの内容を調整してください。
予約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 を使用して重複予約の可能性を確認し、別の客室 / ホテルを選択するようユーザーに提案します。
予約415該当なし不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認してください。
予約415該当なし不明な例外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 を使用して予約の最新情報を確認してください。
予約500該当なし不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認してください。
予約503create.no_response不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認してください。
予約503service_unavailable不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認してください。
予約504該当なし不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認してください。
Cancel400cancel.post_checkoutチェックアウト日の後にキャンセルされました。チェックアウト日の後のオンラインキャンセルを停止し、カスタマーオペレーションに連絡してください。
Cancel400customer_ip.requiredリクエストの内容に誤りがあります。affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel400invalid_inputリクエストの内容に誤りがあります。affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel400room_id.invalidリクエストの内容に誤りがあります。affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel400test.content_invalidリクエストの内容に誤りがあります。affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel400room_already_cancelledキャンセルされた注文が取り消されました。affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel400cancel.post_checkinチェックイン日の後にキャンセルされました。チェックイン日の後のオンラインキャンセルを停止し、カスタマーオペレーションに連絡してください。
Cancel404resource_not_found不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel500cancel.system_failure不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認して再試行し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel500unknown_internal_error不明な例外再試行し、カスタマーオペレーションに連絡してください。
Cancel501itinerary_level_cancel_not_supportedリクエストの内容に誤りがあります。90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel503cancel.system_failure不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認して再試行し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Cancel503service_unavailable不明な例外90 秒待ってから、affiliate_reference_id を使用して予約の最新情報を確認して再試行し、カスタマーオペレーションに連絡したうえで、さらに調査が必要です。
Price Check200availability.not_found満室です客室タイプまたはホテルの変更をお客様に提案してください。
Price Check200該当なし不明な例外再試行
Price Check400customer_session_id.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Price Check400invalid_inputリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Price Check400link.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Price Check400test.content_invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Price Check409availability.not_found満室です客室タイプまたはホテルの変更をお客様に提案してください。
Price Check409該当なし不明な例外再試行
Price Check410invalid_inputリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Price Check410availability.not_found満室です客室タイプまたはホテルの変更をお客様に提案してください。
Price Check410該当なし不明な例外再試行
Price Check410checkin.invalid_date_too_far_out現時点から 500 日以内の期間でできるだけ早く宿泊を予約してください。ユーザー入力のローカル検証を改善してください。
Price Check500availability.not_found満室です客室タイプまたはホテルの変更をお客様に提案してください。
Price Check500unknown_internal_error不明な例外再試行
Price Check500該当なし不明な例外再試行
Price Check503availability.not_found満室です客室タイプまたはホテルの変更をお客様に提案してください。
Price Check503service_unavailable不明な例外再試行
Price Check503該当なし不明な例外再試行
Shopping200availability.not_found満室であるか、ホテルコードが無効です。客室タイプまたはホテルの変更をお客様に提案してください。
Shopping400property_id.above_maximum1 回のリクエストに最大 250 個の宿泊施設 ID を含めることができます。リクエストの内容を調整してください。
Shopping400currency.not_supported通貨単位がサポートされていません。ケースバイケース
Shopping400departure.invalid_departure_before_arrivalチェックアウト日がチェックイン日よりも前の日付になっています。ユーザー入力のローカル検証を改善してください。
Shopping400number_of_adults.invalid_above_maximum1 部屋の収容人数は大人 15 人までです。ユーザー入力のローカル検証を改善してください。
Shopping400number_of_adults.invalid_below_minimum1 部屋の収容人数は大人 15 人までです。ユーザー入力のローカル検証を改善してください。
Shopping400number_of_occupancies.invalid_above_maximum1 部屋の収容人数は大人 15 人までです。ユーザー入力のローカル検証を改善してください。
Shopping400checkin.invalid_date_formatリクエストの内容に誤りがあります。ユーザー入力のローカル検証を改善してください。
Shopping400checkin.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400checkout.invalid_date_formatリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400checkout.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400child_age.invalid_age_formatリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400child_age.invalid_outside_accepted_rangeリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400country_code.above_maximumリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400country_code.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400country_code.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400currency.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400customer-ip.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400filter.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400include.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400invalid_inputリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400language.above_maximumリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400language.not_supportedリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400language.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400link.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400occupancy.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400platform_name.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400property_id.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400rate_option.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400rate_plan_count.above_maximumリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400rate_plan_count.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400rate_plan_count.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sales_channel.above_maximumリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sales_channel.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sales_channel.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sales_environment.above_maximumリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sales_environment.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sales_environment.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sort_type.above_maximumリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sort_type.invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400sort_type.requiredリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400test.content_invalidリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping400arrival.invalid_date_in_the_pastチェックイン日ユーザー入力のローカル検証を改善してください。
Shopping400checkin.invalid_date_in_the_pastチェックイン日ユーザー入力のローカル検証を改善してください。
Shopping400checkout.above_maximum宿泊日が 28 日を超えています。ユーザー入力のローカル検証を改善してください。
Shopping400checkout.invalid_length_of_stay_too_long宿泊日が 28 日を超えています。ユーザー入力のローカル検証を改善してください。
Shopping400checkout.invalid_length_of_stay_too_short宿泊日が 28 日を超えています。ユーザー入力のローカル検証を改善してください。
Shopping400departure.invalid_length_of_stay_too_long宿泊日が 28 日を超えています。ユーザー入力のローカル検証を改善してください。
Shopping400departure.invalid_length_of_stay_too_short宿泊日が 28 日を超えています。ユーザー入力のローカル検証を改善してください。
Shopping400checkout.invalid_checkout_before_checkinチェックアウト日がチェックイン日よりも前の日付になっています。ユーザー入力のローカル検証を改善してください。
Shopping400property_id.invalid宿泊施設 ID が無効ですリクエストの内容を調整してください。
Shopping400arrival.invalid_date_too_far_out現時点から 500 日以内の期間でできるだけ早く宿泊を予約してください。ユーザー入力のローカル検証を改善してください。
Shopping400checkin.invalid_date_too_far_out現時点から 500 日以内の期間でできるだけ早く宿泊を予約してください。ユーザー入力のローカル検証を改善してください。
Shopping403filter.conflictリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping403request_forbiddenリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping404availability.not_found満室であるか、ホテルコードが無効です。客室タイプまたはホテルの変更をお客様に提案してください。
Shopping500invalid_inputリクエストの内容に誤りがあります。リクエストの内容を調整してください。
Shopping500unknown_internal_error不明な例外再試行
Shopping500checkin.invalid_date_too_far_out現時点から 500 日以内の期間でできるだけ早く宿泊を予約してください。ユーザー入力のローカル検証を改善してください。
Shopping503availability.not_found満室であるか、ホテルコードが無効です。客室タイプまたはホテルの変更をお客様に提案してください。
Shopping503service_unavailable不明な例外再試行

予約処理疑似コード

こちらは、Create Booking API と Retrieve Booking 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" }}}

予約エラーのユーザーインターフェース例

すぐに解決しなかった予約例

すぐには解決しなかった予約

予約確定例

確定予約

予約の失敗例

予約エラー

このページは役に立ちましたか ?
このコンテンツに改善が必要な点があれば、
サービス向上にご協力いただきありがとうございます。