郵輪B2C P3 艙房人數範圍(InitBookingLimit)
API Content
說明
「艙房 / 人數」燈箱的範圍限制與年齡說明。P2、P3 開燈箱前都打這支。
- 方法:GET
- 路徑:
Cruise/Products/InitBookingLimit
- 對應畫面:P2 航程詳情出發日按〔選擇〕、P3 選擇艙房按〔重選艙房與人數〕(APP 按導覽列放大鏡)、直接開 P3 網址時打開的「艙房 / 人數」燈箱
使用重點:
Itinerary_Id:P2 帶按〔選擇〕那筆出發日的(P2 航程詳情Itinerary_List的同名欄),P3 帶 QueryCategory 用的同一個值
- 手上有出發日就帶
Itinerary_Id:Guest_Max看這個出發日還有哪些房型;沒帶看這艘船全部房型
Guest_Max用的是每日更新的資料,不是即時庫存:先擋掉已經沒有的人數,確認後有沒有房以 P3 列表為準
- 回 400 時畫面怎麼走由前端判斷(見錯誤回應)
- 直接開 P3 網址時,品牌、船艦代碼、
Itinerary_Id、Departure_Date從網址帶(網址寫法前端定);燈箱〔確認〕後打 QueryCategory
文件版本:v1.0(未交付)
規格調整
| 日期 | 版本 | 調整內容 |
|---|---|---|
| 2026/11/11 | v1.0(未交付) | 初版 |
Request Schema
查詢參數
| 名稱 | 描述 | 屬性 | 範例 |
|---|---|---|---|
| Brand_Code | 必填。品牌代碼(P2 航程詳情回的 Brand_Code;P3 用 QueryCategory Itinerary_Info 回的,直接開 P3 網址時從網址帶) | String | DCL |
| Ship_Code | 必填。船艦代碼(P2 航程詳情回的 Ship_Code;P3 同 Brand_Code) | String | DA |
| Itinerary_Id | 選填。行程編號(P2 航程詳情 Itinerary_List 的同名欄,QueryCategory 帶的同一個值)。帶了 Guest_Max 看這個出發日還有哪些房型;沒帶看這艘船全部房型 | Int | 5007 |
JSON 範例
Cruise/Products/InitBookingLimit?Brand_Code=DCL&Ship_Code=DA&Itinerary_Id=5007Response Schema
回應主體
| 名稱 | 描述 | 屬性 | 範例 |
|---|---|---|---|
| Result_Info | 結果資訊;前端先看 Is_Success | Object | 參考 Result_Info |
| Result_Data | 成功時是本端點的資料;不是成功時只放該代碼要帶的資料(見「錯誤回應」),沒有就是 {} | Object | 參考 Result_Data |
Result_Info
| 名稱 | 描述 | 屬性 | 範例 |
|---|---|---|---|
| Is_Success | true=成功;false=看 Result_Code | Bool | true |
| Result_Code | 結果代碼(四碼數字);成功是空字串;其他見「錯誤回應」 | String | |
| Result_Message | 給客人看的訊息;成功是空字串 | String |
Result_Data
| 名稱 | 描述 | 屬性 | 範例 |
|---|---|---|---|
| Booking_Limit | 燈箱的範圍限制與年齡說明 | Object | 參考 Booking_Limit |
Booking_Limit
前端照 Room_Max、Guest_Min、Guest_Max、Adult_Min 判斷,提示字的間數、人數也照這裡顯示,不要寫死。打 QueryCategory 時後端會再驗一次。
| 名稱 | 描述 | 屬性 | 範例 |
|---|---|---|---|
| Room_Max | 最多幾間房。到上限:WEB 不顯示〔+ 新增艙房〕,APP「艙房數」〔+〕不能按 | Int | 2 |
| Guest_Min | 每間房最少幾人,大人+小孩+嬰兒合計 | Int | 1 |
| Guest_Max | 每間房最多幾人,大人+小孩+嬰兒合計。到上限:這間房所有〔+〕不能按。帶了 Itinerary_Id 時看這個出發日還有的房型,可能比沒帶時小 | Int | 4 |
| Adult_Min | 每間房至少幾位大人。到這個數:大人〔−〕不能按 | Int | 1 |
| Age_Bracket_List | 燈箱的人數分類與年齡說明,一個分類一筆 | List | 參考 Age_Bracket_List |
預設值前端固定:1 間房、每間 2 大人;新增第 2 間也是 2 大人;〔重設〕回到 1 間 2 大人。這裡的 Guest_Min、Guest_Max 是燈箱範圍,跟艙房介紹 Profile_List 的同名欄不同。
這裡不含登船規定(月齡、艙房監護、懷孕):那些要看旅客生日,燈箱判斷不了,填旅客時後端才驗。Age_Bracket_List 是分類的年齡範圍,不是登船規定。
Age_Bracket_List
燈箱的人數列,一個分類一筆,順序就是畫面順序。前端照清單畫,有幾筆畫幾列,不要寫死三列;雛形的年齡字是示意,以 Age_Text 為準。
| 名稱 | 描述 | 屬性 | 範例 |
|---|---|---|---|
| Bracket_Code | 分類代碼:Adt 大人、Chd 小孩、Inf 嬰兒。打 QueryCategory 時對到 Room_List 的 Adt_Count、Chd_Count、Inf_Count | String | Adt |
| Bracket_Name | 分類名稱 | String | 大人 |
| Age_Text | 年齡說明,後端組好,前端直接顯示 | String | 13歲以上(含) |
JSON 範例
{
"Result_Info": {
"Is_Success": true,
"Result_Code": "",
"Result_Message": ""
},
"Result_Data": {
"Booking_Limit": {
"Room_Max": 2,
"Guest_Min": 1,
"Guest_Max": 4,
"Adult_Min": 1,
"Age_Bracket_List": [
{
"Bracket_Code": "Adt",
"Bracket_Name": "大人",
"Age_Text": "13歲以上(含)"
},
{
"Bracket_Code": "Chd",
"Bracket_Name": "小孩",
"Age_Text": "3-12歲"
},
{
"Bracket_Code": "Inf",
"Bracket_Name": "嬰兒",
"Age_Text": "6個月-未滿3歲"
}
]
}
}
}錯誤回應
200 的代碼在 Result_Info.Result_Code、訊息在 Result_Message;400、500 只回一句訊息,代碼在訊息開頭(格式「代碼|訊息」,例「4002|Start_Date 格式錯誤」)。訊息欄除了「重複訂位」與「出發日期已無法訂購,請重新選擇」已定,其他是暫定文字,UIUX 定稿後只改文字、不改代碼;N=第幾間。
| HTTP | Result_Code | 中文名稱 | 訊息(給客人看) | 情境 | 前端動作 |
|---|---|---|---|---|---|
| 200 | 3002 | 查無船艦 | 查無船艦資料 | 品牌或船艦不存在、未啟用 | 由前端判斷 |
| 200 | 3004 | 行程不可售 | 出發日期已無法訂購,請改選其他出發日期 | 帶了 Itinerary_Id,但行程不存在、不是這艘船、不可售,或已經沒有可售房型 | 由前端判斷 |
| 500 | 9999 | 系統錯誤 | 9999|系統發生錯誤,請稍後再試 | 系統錯誤(未預期的例外) | 顯示友善錯誤訊息,可以重試 |
測試情境/單元測試(開發前規劃)
畫面呼叫
舊版畫面
新版畫面
P2 航程詳情出發日按〔選擇〕、P3 選擇艙房按〔重選艙房與人數〕(APP 導覽列放大鏡),或直接開 P3 網址 → 呼叫本 API → 開「艙房 / 人數」燈箱。雛形:UIUX 20260922 版 WEB P3-W01、P2-W10、P2-W11,APP P3-A02、P2-A11~A13。
畫面欄位對照(WEB)
燈箱本身就是這支 API 的整個畫面,跟 P2 是同一個燈箱(雛形 WEB P2-W10)。圖片可點開放大。

畫面欄位對照(APP)
雛形 APP P2-A11。圖片可點開放大。
