API Content
說明
一艘船的艙型範本:艙房介紹面板的頁籤、chips 與每個房型的內容(入住、面積、床型、設備、說明、圖片)。資料是船的、不是產品的,P2 與 P3 都用,要用時帶品牌、船艦代碼呼叫。
- 路徑:
Cruise/Products/GetCabinProfile
- 對應畫面:P2 艙房介紹面板(點艙房卡片或「艙房類型 ⓘ」,APP「查看艙房類型」);P3 選擇艙房的艙型頁籤與艙房介紹
使用重點:
- 參數帶 P2 航程詳情回的
Brand_Code、Ship_Code(P3 用選擇艙房 QueryCategory 的 Itinerary_Info);Profile_Type 選填——給了只回那一類,不給全部分類一起回,不用一類打一次。
- 兩種呼叫方式,看有沒有帶
Profile_Id:沒帶=查整艘船,Brand_Code、Ship_Code 必填;只帶 Profile_Id=查單一範本(P3 卡片的艙房介紹用),其他參數不看。兩種回應形狀都一樣(Cabin_Type_List 一筆或多筆)
- P2 點艙房卡片或「艙房類型 ⓘ」(APP「查看艙房類型」)時才呼叫,進頁不用先抓;P3 要用時一樣帶參數呼叫
- 頁籤=
Cabin_Type_List(順序跟 P2 的艙房介紹卡片一樣,Profile_Type 對得上);chips=該分類的 Profile_List(已排好),點卡片或「查看艙房類型」時預設第一個
- 大圖輪播
Image_List 封面第一;「01 / N」N=筆數。面積上下限 null 時該項顯示 -
文件版本:v1.0(未交付)
規格調整
Request Schema
Body
| Brand_Code | 沒帶 Profile_Id 時必填。品牌代碼(P2 航程詳情回的 Brand_Code) | String | DCL |
| Ship_Code | 沒帶 Profile_Id 時必填。船艦代碼(P2 航程詳情回的 Ship_Code) | String | DA |
| Profile_Type | 選填。艙型分類代碼;給了只回這一類,不給回全部分類 | String | interior |
| Profile_Id | 選填。艙型範本編號;給了只回這一個範本,Brand_Code、Ship_Code、Profile_Type 都不看。P3 卡片的艙房介紹用(選擇艙房 QueryCategory 卡片的 Profile_Id) | Int | 301 |
JSON 範例
{
"Brand_Code": "DCL",
"Ship_Code": "DA",
"Profile_Type": "interior"
}
Response Schema
回應主體
Result_Info
| Is_Success | true=成功;false=看 Result_Code | Bool | true |
| Result_Code | 結果代碼(四碼數字);成功是空字串;其他見「錯誤回應」 | String | |
| Result_Message | 給客人看的訊息;成功是空字串 | String | |
Result_Data
| Cabin_Type_List | 艙型分類,一筆=一個分類(面板頁籤);帶 Profile_Type 或 Profile_Id 時最多一筆;這艘船沒有範本為 [] | List | 參考 Cabin_Type_List |
Cabin_Type_List
| Profile_Type | 分類代碼,跟 P2 航程詳情 Cabin_Type_List 的 Profile_Type 對得上 | String | interior |
| Profile_Type_Name | 分類名稱(面板頁籤) | String | 內艙房 |
| Profile_List | 這個分類的房型(chips),已排好,預設第一個;帶 Profile_Id 時只有那一筆 | List | 參考 Profile_List |
Profile_List
| Profile_Id | 房型編號 | Int | 301 |
| Profile_Name | 房型名稱(chip、面板標題) | String | 內艙 |
| Guest_Min | 入住人數下限 | Int | 2 |
| Guest_Max | 入住人數上限 | Int | 4 |
| Profile_Size_Min | 面積下限(平方公尺);可為 null | Decimal | 16.1 |
| Profile_Size_Max | 面積上限(平方公尺);可為 null | Decimal | 16.1 |
| Bed_Type_List | 床型名稱 | List | 雙人床(可併單人)、沙發床 |
| Facility_List | 艙房設備名稱 | List | 空調設備、電視 / 衛星電視、保險箱 |
| Profile_Info | 艙房說明;可為 null | String | 內艙房提供安靜且實用的休息空間。 |
| Image_List | 面板大圖輪播(封面第一) | List | 參考 圖片物件 |
圖片物件
Profile_List.Image_List 的每一筆是這個形狀。
| Image_Url | 圖片網址 | String | https://img.example.com/cruise/da-in-01.jpg |
| Alt_Text | 圖片替代文字 | String | 內艙 |
JSON 範例
{
"Result_Info": {
"Is_Success": true,
"Result_Code": "",
"Result_Message": ""
},
"Result_Data": {
"Cabin_Type_List": [
{
"Profile_Type": "interior",
"Profile_Type_Name": "內艙房",
"Profile_List": [
{
"Profile_Id": 301,
"Profile_Name": "內艙",
"Guest_Min": 2,
"Guest_Max": 4,
"Profile_Size_Min": 16.1,
"Profile_Size_Max": 16.1,
"Bed_Type_List": [
"雙人床(可併單人)",
"沙發床"
],
"Facility_List": [
"空調設備",
"電視 / 衛星電視",
"保險箱"
],
"Profile_Info": "內艙房提供安靜且實用的休息空間。",
"Image_List": [
{
"Image_Url": "https://img.example.com/cruise/da-in-01.jpg",
"Alt_Text": "內艙"
}
]
},
{
"Profile_Id": 302,
"Profile_Name": "豪華礁景內艙",
"Guest_Min": 2,
"Guest_Max": 4,
"Profile_Size_Min": 19.4,
"Profile_Size_Max": 19.4,
"Bed_Type_List": [
"雙人床(可併單人)",
"兩張單人床"
],
"Facility_List": [
"空調設備",
"保險箱"
],
"Profile_Info": null,
"Image_List": []
}
]
}
]
}
}
錯誤回應
200 的代碼在 Result_Info.Result_Code、訊息在 Result_Message;400、500 只回一句訊息,代碼在訊息開頭(格式「代碼|訊息」,例「4002|Start_Date 格式錯誤」)。訊息欄除了「重複訂位」與「出發日期已無法訂購,請重新選擇」已定,其他是暫定文字,UIUX 定稿後只改文字、不改代碼;N=第幾間。
| 200 | 3002 | 查無船艦 | 查無船艦資料 | 品牌或船艦不存在、未啟用 | 由前端判斷(面板與頁面資訊要不要保留,前端決定) |
| 200 | 3003 | 查無艙型範本 | 查無艙房介紹 | 帶的 Profile_Id 範本不存在或已註銷 | 由前端判斷 |
| 400 | 4003 | 參數值不在範圍 | 不給客人看(訊息開頭是代碼) | Profile_Type 不在允許值 | 前端帶錯值,修正後重打 |
| 400 | 4002 | 參數格式錯誤 | 不給客人看(訊息開頭是代碼) | Brand_Code/Ship_Code 格式不符 | 前端帶錯值,修正後重打 |
| 400 | 4004 | 參數組合錯誤 | 不給客人看(訊息開頭是代碼) | 沒帶 Profile_Id 又缺 Brand_Code 或 Ship_Code | 前端帶錯值,修正後重打 |
| 500 | 9999 | 系統錯誤 | 9999|系統發生錯誤,請稍後再試 | 系統錯誤(未預期的例外) | 顯示友善錯誤訊息,可以重試 |
測試情境/單元測試(開發前規劃)
畫面呼叫
舊版畫面
新版畫面
P2 航程詳情頁點艙房介紹卡片或「艙房類型 ⓘ」時呼叫 → 面板顯示;P3 選擇艙房的艙型頁籤與艙房介紹也呼叫這支。雛形:UIUX 20260922 版 WEB P2-W09、APP P2-A03、P2-A08~A10。
畫面欄位對照(WEB)
面板本身就是這支 API 的整個畫面(雛形 WEB P2-W09)。圖片可點開放大。

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