予約の保留と再開
Rapid API の保留と再開機能によって 2 段階の予約モデルに対応できます。
2 段階予約モデルの一環として、パートナーまたはお客様がすぐに料金を支払わなかったり、予約を完了せずに客室をキャンセルまたは取り下げたりしても、キャンセル料の支払い義務を負わずに 1 客室を保留できます。
お客様またはパートナーが所定の時間内にその客室を確定した場合、第 2 段階として予約が完了します。予約を放棄した場合は、自動的に元に戻され、選択した在庫はリリースされます。
概要
必要な変更
保留と再開では、新しいリクエストフラグと新しくトークン化された応答のリンクを用いて、既存の API を使用します。新しい個別 API メソッドは統合に必要ありません。保留と再開機能を統合するには、次の処理に対するリクエストや応答処理の更新が必要になります。
- 予約の作成処理
- 予約の取得処理
- 保留 - 取得応答から新しくトークン化されたリンク処理
- キャンセル - 作成応答から新しくトークン化されたリンク処理
保留と再開のプロセスを十分に理解している場合でも、統合のために個別の API ドキュメントを参照する前に、このページの記載事項をすべて再確認してください。このページに記載されている特定のオプションは、既存の Booking API と Booking Management API のそれぞれ専用の説明ページでも確認できます。
保留予約を作成する
予約リクエストに 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."
}