分頁查詢組合商品清單,形狀與「商品」家族的清單端點一致:可用 outerSysCode、name 篩選,兩者皆為大小寫不敏感的子字串比對;用 status 篩狀態,接受 Active、Inactive 或 InactiveVisible 三種值中的任一種(完全比對,大小寫必須完全相符);用 updatedSince 篩「異動時間等於或晚於此刻」的資料。⚠️ updatedSince 的判斷來源有三個:商品本身的異動時間、規格本身的異動時間、配方列(元件、用量、排序)的異動時間,三者用 OR 合併——改價只會動到規格的異動時間、改配方只會動到配方列的異動時間,兩者都不會動到商品的異動時間,只比對商品這一個來源會讓改價或改配方的組合商品在增量拉取時安靜地缺席。但這三個來源都不涵蓋 availableQty 本身:元件庫存變動、或元件被未出貨訂單保留,都不會觸碰上述任何一個時間戳,所以用 updatedSince 判斷要不要重新拉的整合方,可能會在元件庫存變動後持續讀到一個已經過期的 availableQty,直到這個組合商品本身因為改名、改配方等其他原因被觸碰為止——這是可以接受的(庫存的即時性本來就是你端自己該掌握的事,這支 API 給的是查詢當下那一刻的快照),但務必了解:沒有出現在 updatedSince 增量結果裡不等於這個組合商品的 availableQty 沒有變。另可用 componentSkuId 反查「改動某個元件規格會影響哪些組合商品」。page 從 1 起算,pageSize 為 1–100(預設 100),超出範圍一律回 400,不會自動夾限。
Query parameters
outerSysCodestringOptional
依 ERP 端的組合商品代碼篩選。大小寫不敏感的子字串比對,查 A100 也會一併比對到 A1000;要精確命中某一筆,請在你端再比對一次完整字串。
namestringOptional
依組合商品名稱篩選。大小寫不敏感的子字串比對,規則與 outerSysCode 相同。
statusstringOptional
依組合商品狀態篩選,接受 Active、Inactive 或 InactiveVisible。這是完全比對,而且大小寫必須與這裡列出的完全相符——帶 active 不會命中任何資料,會回傳 HTTP 200 但 data 是空陣列,不是錯誤。三種狀態的語意見「商品」家族 ProductResponse.status 的說明;透過本端點建立的組合商品一律為 Active,其餘狀態只能由後台維護產生。
componentSkuIdlongOptional
反查:只回傳**目前配方裡仍然含有**這個元件規格的組合商品,用於「這顆規格庫存異動了,會影響哪些組合商品」這類場景。⚠️ 命中範圍不含歷史關聯——元件曾經在配方裡出現過,後來被替換配方(`PUT /v1/bundles/{id}` 帶新的 `components`)移除,就不會再被這個參數命中;查不到不代表沒有影響過,只代表「現在」沒有關聯,這支反查沒有辦法回答「這顆規格曾經被哪些組合商品用過」。
UpdatedSincestringOptional
只回傳異動時間等於或晚於此刻的組合商品,用於增量同步;判斷來源與涵蓋範圍見本端點說明。必須是 ISO-8601 格式,並帶明確的時區位移或 Z(例如 2026-07-01T00:00:00Z);沒有時區資訊會回傳 400 invalid_updated_since。放進網址時記得把 + 編碼成 %2B。
PageintegerOptional
頁碼,從 1 起算,省略時預設 1。小於 1 回傳 400 invalid_page;頁碼大到讓內部位移量溢位時同樣回傳 400 invalid_page。
PageSizeintegerOptional
每頁筆數,範圍 1 至 100,省略時預設 100。超出範圍一律回傳 400 invalid_page_size,不會自動夾限成合法值,避免分批掃描時誤判為已經抓完全部資料。
Response
OK
datalist of objects or nullOptional
本頁的組合商品資料,每一筆為一個 BundleResponse。
totalCountintegerOptional
符合篩選條件的組合商品總數,涵蓋所有頁,不受目前頁碼影響。
currentPageintegerOptional
pageSizeintegerOptional
目前頁面的筆數上限,即請求帶入的 pageSize。
totalPagesintegerOptional
總頁數,等於 totalCount 除以 pageSize 後無條件進位;沒有符合的資料時為 0。