List combo positions
Combo positions for a user, in the standard
{ data, pagination } envelope.
Sorts: FIRST_ENTRY (default) | ENTRY_COST (+ CURRENT_VALUE alias) |
UPDATED, each with sort_direction. FIRST_ENTRY DESC pages by the
two-state keyset anchor (first_entry_at_micros, combo_condition_id, outcome_index) (NULL micros = the NULL tail); UPDATED ASC by the
single-state (updated_at_micros, …) anchor; every other combination by an
offset-shaped token. The cursor binds sort + direction and the resume
ADOPTS them, so a replay cannot flip or re-sort the walk mid-stream.
It binds the cohort; user/status/condition/updated_after/
updated_before; the same way: following a
page needs nothing but ?user= (always required here) and ?cursor=, and
restating a filter is allowed but must agree. Omitting one is not a
contradiction, it is the absence of a choice; contradicting one is a
400, because the token’s walk state only means anything against the cohort
it was minted on.
Incremental sync: updated_after/updated_before are an INCLUSIVE
epoch-second window on updated_at. Without a status filter, either
bound switches the response to the mirror-complete sync view (every live
row, not only held ones); a status filter keeps its own visibility. The
upper end is always capped by a short stability ceiling (~90s behind now)
so a mirror never reads rows that may still move. Pair with
sortBy=UPDATED&sortDirection=ASC for the stable sync order.
A malformed condition combo condition id is a 400 naming the value; a
well-formed one that matches nothing serves an empty data array, which
is the meaningful zero-state.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
The wallet to anchor on. Required; combo positions are user-anchored.
First-page size. Ignored when cursor is supplied (the cursor's size wins).
0 <= x <= 1000Opaque pagination cursor from a prior response's next_cursor.
Combo condition id(s), comma-separated (at most 20 distinct values).
condition_id / conditionId are accepted aliases.
One of OPEN, REDEEMABLE, PARTIAL, RESOLVED_WIN, RESOLVED_LOSS,
RESOLVED_PARTIAL; default (absent) is the held-visibility listing.
Aligned with /v2/positions: OPEN is the superset; it includes
still-held redeemable positions; and REDEEMABLE narrows to exactly
the rows whose redeemable flag is true. REDEEMABLE must be the
sole value; the other values may be combined comma-separated and keep
per-value equality semantics.
FIRST_ENTRY (default, except under status=REDEEMABLE, which defaults
to ENTRY_COST so the largest claims lead) | ENTRY_COST |
CURRENT_VALUE (alias of ENTRY_COST) | UPDATED. FIRST_ENTRY DESC
and UPDATED ASC page by keyset; every other combination pages by an
offset-shaped cursor. The minted cursor binds sort + direction along
with the status/condition cohort, so a page-2 request needs only
?user= and ?cursor=; restating a filter is allowed but must agree.
ASC or DESC (default DESC).
Incremental-sync watermark: INCLUSIVE lower bound on updated_at,
epoch seconds. Without a status filter, either watermark serves the
sync view; every live row (mirror-complete), not only the held
listing; a status filter keeps its own row visibility. The window's
upper end is always capped by a short stability ceiling (about 90
seconds behind now), so a bound in the future cannot serve rows that
may still move.
Incremental-sync watermark: INCLUSIVE upper bound on updated_at,
epoch seconds; must not precede updated_after. See updated_after
for the sync-view and ceiling semantics.