runnerPairs
Paginated, pair-level view of a runner's data-download universe —
every unique (exchange, tradingMode, pair) tuple, with per-pair
status roll-up and timeframes-ready / timeframes-total counters.
Replaces the 'fetch every ref then filter on the client' pattern
that the drawer pickers used to hit; the backend clamps keep the
ref-level runnerDataTargets query from returning more than 50
rows, which silently hid most of a 40k-ref runner's catalog.
Keyset pagination: clients pass the previous page's endCursor as
after to fetch the next page. Cursors are opaque — do not attempt
to parse or synthesise them client-side. The canonical order is
(featured DESC, statusTier ASC, pair ASC); status tiers are
READY < RUNNING < PENDING < FAILED.
searchis case-insensitive substring match on the pair symbol.exchange/tradingModenarrow the result to one exchange or mode (used by the drawer to scope the picker to the selected exchange).firstcaps the page size server-side.
runnerPairs(
runnerID: ID!
exchange: String
tradingMode: MarketDataTradingMode
search: String
after: String
first: Int = 100
): RunnerPairsResult!
Arguments
runnerPairs.runnerID ● ID! non-null scalar
runnerPairs.exchange ● String scalar
runnerPairs.tradingMode ● MarketDataTradingMode enum
runnerPairs.search ● String scalar
runnerPairs.after ● String scalar
runnerPairs.first ● Int scalar
Type
RunnerPairsResult object
Paged result of runnerPairs. Uses keyset pagination: pass
pageInfo.endCursor back as after on the next call to fetch the
following page.