Skip to main content

exchangePairs

Single merged query for the runner data-download picker. Combines the exchange's live market listing with the datalake's cached-pairs index and returns a search-filtered, cached-first-sorted slice capped at limit. Replaces the previous two-query client-side merge that made the runner form hydrate with 1000+ DOM nodes per exchange.

  • search is a case-insensitive substring match on the symbol (typically the BASE/QUOTE string).
  • limit caps the returned items; the default keeps the dropdown responsive even for exchanges with a few hundred spot pairs.
  • totalCount and cachedCount reflect the FULL universe (pre- search) so the UI can display "Showing N of M pairs (C cached)".
exchangePairs(
exchange: String!
tradingMode: MarketDataTradingMode
search: String
limit: Int = 100
offset: Int = 0
validateSymbols: [String!]
): ExchangePairsResult!

Arguments

exchangePairs.exchange ● String! non-null scalar

exchangePairs.tradingMode ● MarketDataTradingMode enum

exchangePairs.limit ● Int scalar

exchangePairs.offset ● Int scalar

Skip the first N matching items. Combined with limit, drives infinite scroll on the runner data-download picker (offset = items.length on each fetchMore). Defaults to 0 so existing callers see no behaviour change.

exchangePairs.validateSymbols ● [String!] list scalar

Optional list of symbols the caller has currently selected. Any symbol in this list NOT present in the exchange's market listing is returned in invalidSymbols so the frontend can mark stale chips. Empty / null skips the validation entirely (free).

Type

ExchangePairsResult object

Paged, sorted result of the exchangePairs query. Items are sorted cached-first so zero-backfill picks appear at the top of the dropdown; within each cached/uncached group the order matches the exchange's native market-listing order (alphabetical for most adapters).