getMerchants GraphQL 查詢,從 Fluz 目錄擷取目前可用的商家及其優惠清單。這是探索可用商家與其提供之優惠類型的主要方式。
你可以使用可選的輸入參數來調整結果:
name: 依指定名稱篩選商家。paginate: 控制每頁結果數量(limit)與起始點(offset)。offerTypes: 使用布林旗標指定要giftCardOffer、cardLinkedOffer,或兩者(例如{ giftCardOffer: true, cardLinkedOffer: false })。categoryId: 只回傳某一個購物分類中的商家,例如 Dining 或 Travel。分類 ID 來自getMerchantCategories。未知或未啟用的分類會回傳空清單。filterBy: 用於對每個商家中的優惠套用特定篩選條件的物件。若商家在篩選後沒有剩餘的優惠,會被排除在最終結果之外。
可用篩選條件:deliveryFormat: 依禮品卡優惠的傳送方式篩選。
允許的值:URL、CODES、PIN_AS_CODE、PIN_WITH_URL。
📘 若不加任何篩選直接擷取整個商家目錄,可能需要較長時間。我們建議一天僅擷取一次完整且未篩選的目錄。若需更頻繁的更新或特定查詢,請使用name或offerTypes篩選。
📘 分頁注意事項: 分頁的預設與最大上限皆為 20。結果不一定會回傳你所定義的上限數量。例如,你可能請求 limit 為 10,但回應可能只有 7 筆。 當包含 offset 時,請記得在計算下一批資料的 offset 時加入本次的 limit。若未指定 limit,你需要以預設的 20 進行位移(例如 offset+20)。
📘 擷取完整商家目錄: 若你需要所有可用商家,必須持續分頁直到 API 回傳空陣列為止。 擷取完整目錄的步驟:
- 呼叫 getMerchants(offset = 0, limit = 20)。
- 將回傳的商家附加到你的本地清單。
- 依你的 limit 增加 offset(offset += 20)。
- 重複請求。
- 僅當 API 回傳空陣列([])時才停止。
基本查詢結構
以下是使用變數的彈性查詢結構。你可以調整offerTypes 變數以取得所需的特定優惠。本範例僅請求最常見、基礎的欄位。
範例請求:
json
回應詳細資訊
getMerchants 查詢所回傳的 Merchant 物件包含以下欄位:
通用優惠欄位(位於 offers 陣列中):
這些欄位在每個
Offer 物件中都會出現,無論其類型為何。
依分類篩選
商家會依 Fluz 目錄中的相同購物分類分組,例如 Dining、Travel、Grocery。先呼叫一次getMerchantCategories 取得清單,接著在 getMerchants 傳入 categoryId 以一次顯示一個分類。
categoryId可與其他參數一同使用,因此你可以在同一次呼叫中同時依分類與name篩選。- 不是 UUID 的
categoryId會回傳APPLICATIONS-0012(InvalidArgument),訊息為categoryId must be a UUID. Category ids come from getMerchantCategories.。空字串則是例外:它只會移除分類篩選 ——name、offerTypes、filterBy與分頁仍然適用。 - 若你快取對應關係,請儲存
categoryId而非名稱 —— ID 穩定,分類名稱可能被更改。 - 沙盒中的分類指派屬於測試資料,與正式環境不一定相同。
- 針對已套用篩選的呼叫,與未篩選的呼叫適用相同的分頁規則。
依優惠類型的詳細資訊
優惠的實際細節取決於其type。你需要根據優惠類型請求並解析不同的欄位:
- 對於禮品卡優惠(
GIFT_CARD_OFFER、EXCLUSIVE_RATE_OFFER):- 重要欄位包含
offerRates、stockInfo、hasStockInfo、denominationsType、allowedPaymentMethods。 - 請參考 Gift Card Offers 子頁以取得詳細說明與查詢範例。
- 重要欄位包含
- 對於卡片連結優惠(
CARD_LINKED_OFFER):- 主要欄位為
cloDetails,其中包含費率、期間與條件。 - 請參考 Card Linked Offers 子頁以取得詳細說明與查詢範例。
- 主要欄位為