郵輪B2C P0 搜尋框選項(InitSearch)

API Content

說明

P0 首頁「全球郵輪」搜尋框的選項:出發地、目的地的選項與預設值,以及出發日期的可選範圍。純艙房與套裝遊在同一個回應,Web 與 App 共用。

使用重點:依搜尋框單選取用——純艙房用 Cruise_Info,套裝遊用 Tour_Info;兩者欄位相同:Departure_List(出發地)、Region_List(目的地,一筆=一個分頁)、DepartureDate_Range(日期)。

純艙房(Cruise_Info)

套裝遊(Tour_Info)

文件版本:v2.0(未交付);前端手上是 v1.0(2026/09/24 交付)

規格調整

日期版本調整內容
2026/09/24v1.0初版
2026/09/30v2.0(未交付)• 純艙房與套裝遊改為相同欄位:Departure_List(出發地)、Region_List(目的地,一筆=一個分頁,以 Region_Type 區分)、DepartureDate_Range(日期)
• 移除 Depart_Info/Dest_Info/Date_Info、Ship_List/Route_List
• 套裝遊改為團體行程 SearchInit「國外」的郵輪資料(取代 ForeignHome),另有 ProductType_List(只有「不限」)
• 純艙房 MaxDate 改為可販售日期
2026/10/01v2.0(未交付)• 主題遊輪的船清單改依品牌分組:Region_List 中 Region_Type=Ship 那筆的 Regions 一筆=一個品牌(Value/Text/English_Text),船移到 Ship_List(Value/Text/English_Text/Is_Default);船的 Value 不變
• 純艙房出發地 Value 改英文代碼(海外登船 FlyCruise、台灣港為港口國際代碼),Text 改為短名,新增 Display_Text(下拉選單顯示文字)
• 套裝遊按搜尋:搜尋參數與搜尋 API 比照原本團體 Web、App API
2026/11/03v2.0(未交付)• 純艙房起日最早可選日 MinDate 改為今天+6(出發前 5 天內不開放訂購;原為明天),日曆在 MinDate 之前的日期反灰、不能點
• JSON 範例的純艙房日期改用 2026/11/03 呼叫的結果(MinDate=Start_Date=2026/11/09)
2026/11/08v2.0(未交付)• 回應最外層新增 Result_Code(成功是 OK)、Result_Message;查不到、檢核不過這類結果改回 200,看 Result_Code(見「錯誤回應」),400 只留給參數格式錯、500 是系統錯誤
• 團體系統查不到時 Tour_Info 給 null(Result_Code 仍是 OK,純艙房照常),選套裝遊時顯示「暫時無法查詢」(🟡 文字待 UIUX)
• 本 API 不快取,每次呼叫都是當天最新
2026/11/10v2.0(未交付)• 回應外層改成 Result_Info(Is_Success、Result_Code、Result_Message)+Result_Data;原本最外層的資料欄都搬進 Result_Data,前端先看 Is_Success
• 錯誤代碼改四碼數字(例 CABIN_TAKEN → 1001 艙房已被訂走),見「錯誤回應」;400、500 只回一句訊息,代碼在訊息開頭(例「4002|Start_Date 格式錯誤」)
2026/11/11v2.0(未交付)• 讀不到選項資料改回 200:Is_Success=false、Result_Code=9001(搜尋選項讀取失敗),Result_Data 是 {};原本回 500
• 新增 WEB、APP「畫面欄位對照」圖(雛形還沒畫的元素圖上不標,段內寫明)

Request Schema

查詢參數

無參數。

JSON 範例

GET Cruise/Search/InitSearch

Response Schema

回應主體

名稱描述屬性範例
Result_Info結果資訊;前端先看 Is_SuccessObject參考 Result_Info
Result_Data成功時是本端點的資料;不是成功時只放該代碼要帶的資料(見「錯誤回應」),沒有就是 {}Object參考 Result_Data

Result_Info

名稱描述屬性範例
Is_Successtrue=成功;false=看 Result_CodeBooltrue
Result_Code結果代碼(四碼數字);成功是空字串;其他見「錯誤回應」String
Result_Message給客人看的訊息;成功是空字串String

Result_Data

名稱描述屬性範例
Cruise_Info純艙房Object參考 Cruise_Info
Tour_Info套裝遊(團體行程)。團體系統查不到時給 nullObject參考 Tour_Info

Cruise_Info

名稱描述屬性範例
Departure_List① 出發地選項List參考 Departure_List(純艙房)
Region_List② 目的地,一筆=一個分頁(主題遊輪、航線)List參考 Region_List(純艙房)
DepartureDate_Range③ 理想出發區間Object參考 DepartureDate_Range(純艙房)

Departure_List(純艙房)

名稱描述屬性範例
Value送出值(英文代碼)StringFlyCruise
Text短名(精簡處顯示,如 P1 頁首)String海外登船
Display_Text下拉選單顯示文字String海外登船(不含機票)
Is_Default是否為預設選項(每組必有且僅有一個)Booltrue

Region_List(純艙房)

名稱描述屬性範例
Region_Type分頁類型:Ship=主題遊輪、Route=航線StringShip
Region_Title分頁標題String主題遊輪
Regions分頁內的選項:主題遊輪=品牌清單(船在品牌下的 Ship_List);航線 🟡 待定義List參考 Regions(純艙房)

Regions(純艙房)

主題遊輪(Ship)的 Regions 一筆=一個品牌,品牌只是分組標題、不可選,可選的是 Ship_List 裡的船。航線(Route)的 Regions 🟡 內容待定義,目前為空陣列;為空時可只顯示主題遊輪。

名稱描述屬性範例
Value品牌代碼(分組標題,不可選)StringDCL
Text品牌名稱String迪士尼郵輪
English_Text品牌英文名StringDisney Cruise Line
Ship_List該品牌的船List參考 Ship_List(純艙房)

Ship_List(純艙房)

名稱描述屬性範例
Value送出值StringDCL-DA
Text畫面顯示文字String迪士尼探險號
English_Text船英文名StringDisney Adventure
Is_Default是否為預設選項(目的地各分頁合計必有且僅有一個)Booltrue

DepartureDate_Range(純艙房)

起日可選 MinDate~MaxDate;點選起日後,迄日自動帶入起日+1 年,不受 MaxDate 限制。預設區間為 Start_Date~End_Date。

名稱描述屬性範例
Start_Date預設起日,格式 yyyy/MM/ddString2026/11/09
End_Date預設迄日,格式 yyyy/MM/ddString2027/11/09
MinDate起日最早可選日。出發前 5 天內不開放訂購,所以是今天+6(例:今天 10/1 → 10/7),日曆在這天之前的日期反灰、不能點;以回傳為準,不要自己算。格式 yyyy/MM/ddString2026/11/09
MaxDate起日最晚可選日(迄日不受此限),格式 yyyy/MM/ddString2027/11/09

Tour_Info

資料同團體行程 SearchInit「國外」的郵輪部分。按搜尋時的搜尋參數與搜尋 API 比照原本團體 Web、App API。團體系統查不到(逾時、錯誤)時整個 Tour_Info 給 null,仍算成功(Is_Success=true)、純艙房照常;這時選套裝遊顯示「暫時無法查詢」(🟡 文字待 UIUX)。

名稱描述屬性範例
Departure_List出發地選項List參考 Departure_List(套裝遊)
Region_List目的地(一筆:全球郵輪)List參考 Region_List(套裝遊)
ProductType_List產品類型選項(目前只有「不限」)List參考 ProductType_List
DepartureDate_Range出發日期範圍Object參考 DepartureDate_Range(套裝遊)

Departure_List(套裝遊)

名稱描述屬性範例
Value送出值String基隆
Text畫面顯示文字String基隆

Region_List(套裝遊)

名稱描述屬性範例
Region_Type固定 AreaStringArea
Region_Title標題String全球郵輪
Regions地區選項List參考 Regions(套裝遊)

Regions(套裝遊)

名稱描述屬性範例
Value送出值(地區代碼)StringN-06
Text畫面顯示文字String台灣出發郵輪(基隆港/高雄港往返)

ProductType_List

名稱描述屬性範例
Value送出值String全部
Text畫面顯示文字String不限

DepartureDate_Range(套裝遊)

名稱描述屬性範例
Start_Date起日,格式 yyyy/MM/ddString2026/10/01
End_Date迄日,格式 yyyy/MM/ddString2028/09/30
MinDate最早可選日,格式 yyyy/MM/ddString2026/10/01
MaxDate最晚可選日,格式 yyyy/MM/ddString2028/09/30

JSON 範例

{
  "Result_Info": {
    "Is_Success": true,
    "Result_Code": "",
    "Result_Message": ""
  },
  "Result_Data": {
    "Cruise_Info": {
      "Departure_List": [
        {
          "Value": "FlyCruise",
          "Text": "海外登船",
          "Display_Text": "海外登船(不含機票)",
          "Is_Default": true
        },
        {
          "Value": "TWKEL",
          "Text": "基隆港",
          "Display_Text": "基隆港",
          "Is_Default": false
        }
      ],
      "Region_List": [
        {
          "Region_Type": "Ship",
          "Region_Title": "主題遊輪",
          "Regions": [
            {
              "Value": "DCL",
              "Text": "迪士尼郵輪",
              "English_Text": "Disney Cruise Line",
              "Ship_List": [
                {
                  "Value": "DCL-DA",
                  "Text": "迪士尼探險號",
                  "English_Text": "Disney Adventure",
                  "Is_Default": true
                },
                {
                  "Value": "DCL-DW",
                  "Text": "迪士尼奇妙號",
                  "English_Text": "Disney Wonder",
                  "Is_Default": false
                }
              ]
            }
          ]
        },
        {
          "Region_Type": "Route",
          "Region_Title": "航線",
          "Regions": []
        }
      ],
      "DepartureDate_Range": {
        "Start_Date": "2026/11/09",
        "End_Date": "2027/11/09",
        "MinDate": "2026/11/09",
        "MaxDate": "2027/11/09"
      }
    },
    "Tour_Info": {
      "Departure_List": [
        {
          "Value": "*",
          "Text": "不限"
        },
        {
          "Value": "基隆",
          "Text": "基隆"
        },
        {
          "Value": "台北",
          "Text": "台北(不限機場)"
        },
        {
          "Value": "松山",
          "Text": "台北(松山機場)"
        },
        {
          "Value": "桃園",
          "Text": "台北(桃園機場)"
        },
        {
          "Value": "台中",
          "Text": "台中"
        },
        {
          "Value": "高雄",
          "Text": "高雄"
        },
        {
          "Value": "花蓮",
          "Text": "花蓮"
        }
      ],
      "Region_List": [
        {
          "Region_Type": "Area",
          "Region_Title": "全球郵輪",
          "Regions": [
            {
              "Value": "N",
              "Text": "全球郵輪"
            },
            {
              "Value": "N-01",
              "Text": "亞洲郵輪(基隆港往返、日韓、東南亞、中港澳)"
            },
            {
              "Value": "N-02",
              "Text": "美洲郵輪(阿拉斯加、美墨、美加東、夏威夷、加勒比海)"
            },
            {
              "Value": "N-03",
              "Text": "歐洲郵輪(地中海、英國北歐、波羅的海)"
            },
            {
              "Value": "N-04",
              "Text": "歐洲河輪(塞納河、斗羅河、多瑙河、隆河、萊茵河)"
            },
            {
              "Value": "N-07",
              "Text": "中東郵輪(波斯灣、阿拉伯海)"
            },
            {
              "Value": "N-06",
              "Text": "台灣出發郵輪(基隆港/高雄港往返)"
            }
          ]
        }
      ],
      "ProductType_List": [
        {
          "Value": "全部",
          "Text": "不限"
        }
      ],
      "DepartureDate_Range": {
        "Start_Date": "2026/10/01",
        "End_Date": "2028/09/30",
        "MinDate": "2026/10/01",
        "MaxDate": "2028/09/30"
      }
    }
  }
}

範例值為示意,實際選項與日期以回傳為準。

錯誤回應

200 的代碼在 Result_Info.Result_Code、訊息在 Result_Message;400、500 只回一句訊息,代碼在訊息開頭(格式「代碼|訊息」,例「4002|Start_Date 格式錯誤」)。訊息欄除了「重複訂位」與「出發日期已無法訂購,請重新選擇」已定,其他是暫定文字,UIUX 定稿後只改文字、不改代碼;N=第幾間。

HTTPResult_Code中文名稱訊息(給客人看)情境前端動作
2009001搜尋選項讀取失敗搜尋選項暫時無法取得,請稍後再試選項資料取得失敗;Is_Success=false,Result_Data 是 {}(純艙房、套裝遊都沒有)🟡 待 UIUX 定(重試/提示文案)
200—(成功)(空字串)團體系統查不到(不是錯誤):Tour_Info 給 null,Cruise_Info 照常,Is_Success=true選套裝遊時顯示「暫時無法查詢」(🟡 文字待 UIUX)
5009999系統錯誤9999|系統發生錯誤,請稍後再試系統錯誤(未預期的例外)顯示友善錯誤訊息,可以重試

測試情境/單元測試(開發前規劃)

畫面呼叫

舊版畫面

新版畫面

P0 首頁「全球郵輪」搜尋框:進頁呼叫本 API → 依單選(純艙房/套裝遊)取 Cruise_Info 或 Tour_Info → 出發地/目的地選單與出發日期月曆 → 按搜尋(純艙房呼叫 POST Cruise/Search/QueryCruise 進 P1)。雛形:UIUX 20260922 版 P0 SearchBar 元件(① 出發地、② 目的地、② 套裝遊/目的地、③ 理想出發區間,含「任點選一個日期,自動帶入一年後的日期」操作)。

畫面欄位對照(WEB)

先看純艙房搜尋框(雛形 WEB P0-W01);灰色虛線=不在本 API。目的地、理想出發區間、套裝遊另拉細節圖。圖片可點開放大。

細節 1:目的地(P0-W02)

細節 2:理想出發區間(P0-W04)

細節 3:套裝遊(P0-W03)

P0 不用:Departure_List 的 Text(短名,P1 頁首等精簡處才用)。雛形還沒畫、圖上沒標:目的地下拉的品牌分組標題與英文名(Regions 的 Text、English_Text,Ship_List 的 English_Text);套裝遊的產品類型(ProductType_List)。各截圖右邊的手機寬度版欄位相同,不另標。

畫面欄位對照(APP)

先看純艙房頁籤(雛形 APP P0-A01);目的地面板、頁籤版型另拉細節圖。圖片可點開放大。

細節 1:目的地面板(P0-A02 左;現在只有主題郵輪,頁籤隱藏)

細節 2:目的地頁籤版型(P0-A02 右;航線上線後)

P0 不用:Departure_List 的 Text(同 WEB)。雛形還沒畫、圖上沒標:選理想出發區間的畫面(MinDate 之前反灰、MaxDate);「套裝遊」頁籤整頁(Tour_Info 全部欄位)。