予約の保留と再開

Rapid API の保留と再開機能によって 2 段階の予約モデルに対応できます。

2 段階予約モデルの一環として、パートナーまたはお客様がすぐに料金を支払わなかったり、予約を完了せずに客室をキャンセルまたは取り下げたりしても、キャンセル料の支払い義務を負わずに 1 客室を保留できます。

お客様またはパートナーが所定の時間内にその客室を確定した場合、第 2 段階として予約が完了します。予約を放棄した場合は、自動的に元に戻され、選択した在庫はリリースされます。

概要

予約リクエストは状態 `hold` に遷移してから、応答に含まれるリンク経由で `retrieve`、`resume`、`cancel` のいずれかに遷移します。

必要な変更

保留と再開では、新しいリクエストフラグと新しくトークン化された応答のリンクを用いて、既存の API を使用します。新しい個別 API メソッドは統合に必要ありません。保留と再開機能を統合するには、次の処理に対するリクエストや応答処理の更新が必要になります。

  1. 予約の作成処理
  2. 予約の取得処理
  3. 保留 - 取得応答から新しくトークン化されたリンク処理
  4. キャンセル - 作成応答から新しくトークン化されたリンク処理

保留と再開のプロセスを十分に理解している場合でも、統合のために個別の API ドキュメントを参照する前に、このページの記載事項をすべて再確認してください。このページに記載されている特定のオプションは、既存の Booking APIBooking Management API のそれぞれ専用の説明ページでも確認できます。

応答のリンクをたどって HTTP ステータスコードを確認し、予約の状態を変更します。

保留予約を作成する

予約リクエストに hold という名の新しいブーリアン型フィールドができました。true の値を送信すると、この施設は保留状態になります。

保留予約は特定のアプリケーションに必要な最短時間のみ保留状態のままになります。確定せずに保留のままの場合、その予約は自動的に元の状態に戻されます。

保留予約応答が成功すると、保留予約を再開する (確定して支払いをする) ために用いられるトークン化された追加のリンクが返されます。また、キャンセルの対象となる部屋がまだ存在しないため、通常キャンセル リンクを提供するために使用される rooms 配列が削除されます。

保留予約の予約応答の例

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

予約のために hold フラグが用いられた場合、予約に対して料金は請求されません。保留予約応答で保留期間内に PUT メソッドリンクが使用された場合のみ予約が完了し、料金が請求されます。

保留予約を取得する

保留予約を取得するには、保留予約応答で提供された retrieve リンクを使用します。保留と予約機能で予約を取得する方法は、1 段階予約の通常の予約と違いはなく、リクエスト本文は不要です。

応答シナリオ :

  • 保留状態のままの保留予約を取得すると、ただちに再開して予約を完了するか、キャンセル用のリンクなど限られたデータのみの応答が返されます。
  • キャンセルされた (リクエストによって元に戻された) 保留予約またはタイムアウトとなった (自動的に元に戻った) 保留予約を取得すると、「旅程が見つかりません」というエラーが返されます。
  • 以前に再開され確定された保留中の予約を取得する操作は、標準的な旅程取得の応答と同様に動作し、予約の全詳細が返されます。

保留予約の取得の応答例

{
    "itinerary_id": "8701934321257",
    "creation_date_time": "2018-03-09T14:42:58.159Z",
    "links": {
        "resume": {
            "method": "PUT",
            "href": "/v3/itineraries/8701934321257?token=QldfCGlcUA…{example trimmed for length}="
        },
        "cancel": {
            "method": "DELETE",
            "href": "/v3/itineraries/9700934721257?token=QldfCGlcUA…{example trimmed for length}="
        }
    }
}

キャンセル / タイムアウトとなった保留予約の取得応答の例

{
    "type": "resource_not_found",
    "message": "Itinerary was not found with provided request."
}

保留予約を再開する

保留中の予約を確定して支払いを完了するには、予約を再開する必要があります。

保留予約は、元の保留予約応答で提供された resume リンクを使用して再開され、リクエスト本文は不要です。

応答シナリオ :

  • 保留状態のままの保留予約を再開すると、予約が完了され、完了が成功したことを示す HTTP 204 - コンテンツがありませんの応答が返されます。旅程全体を取得するには、最初の保留予約応答の GET リンクを使用します。
  • キャンセルされた (リクエストによって元に戻された) 保留予約またはタイムアウトとなった (自動的に元に戻った) 保留予約を再開すると、前述の取得に関するセクションと同じく「旅程が見つかりません」というエラーが返されます。
  • すでに再開した保留予約を再開すると、予約がすでに完了していることを通知するエラーが返されます。

すでに再開された予約の再開応答の例

{
    "type": "resume.already_resumed",
    "message": "Booking has already been resumed."
}

保留予約をキャンセルする (元に戻す)

予約の作成応答と取得応答で提供される cancel のトークン化されたリンクは、旅程レベルで動作します。これを使用すると、リクエストされた施設が保留状態から解除され、保留されていた旅程が元に戻されます。客室レベルでのキャンセルのリンクは、予約が再開された後に、取得応答でのみ提供されます。

cancel 動作を実行すると、再開が成功した場合の応答と同様 HTTP 204 ステータスコードも返されます。HTTP 204 はどちらのステータスでも使用され、サーバーがリクエストの処理に成功したことと、応答のペイロード本体に送信する追加コンテンツがないことを示します。

保留予約をキャンセルするリクエストは、その予約が自動的に元に戻った場合と同じ結果をもたらします。

応答シナリオ :

  • 保留状態のままの保留予約をキャンセルすると、その在庫が保留状態から解除され、HTTP 204 ステータスが返されます。
  • キャンセルされた (リクエストによって元に戻された) 保留予約またはタイムアウトとなった (自動的に元に戻った) 保留予約をキャンセルすると、前述のとおり「旅程が見つかりません」というエラーが返されます。
  • すでに再開された保留予約をキャンセルすると、「旅程レベルのキャンセルはサポートされていません」というエラーメッセージが返されます。客室を個別にキャンセルするには、取得を呼び出して、その応答で提供された客室レベルのリンクを使用します。

すでに再開された予約のキャンセル応答の例

{
    "type": "resume.itinerary_level_cancel_not_supported",
    "message": "Itinerary level cancel on confirmed booking is not supported."
}
このページは役に立ちましたか ?
このコンテンツに改善が必要な点があれば、
サービス向上にご協力いただきありがとうございます。