[Release] Candidate - #352
Merged
Merged
Conversation
kartojal
approved these changes
Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@polymarket/bindings@0.10.0
Minor Changes
listBuilderLeaderboardandfetchBuilderVolumeto their v2 contracts. Builder rankings now use server cursors and normalizedBuilderStandingrows; builder volume returns complete date buckets asBuilderVolumePointrows. ReplacetimePeriodwithwindoworinterval, and usebucketLimitto bound volume buckets./v2surface:/v2envelope schemas (paginated list with server-minted branded cursors, and single-object including null answers), awithRateLimitRetrypipeline helper that honors server-requested delays, and theMIGRATIONactivity type with itsMigrationActivityvariant. All additive — no existing API shape changes.listActivity,listComboActivity,listPositions, andlistComboPositionsnow serve exact cursor pagination with automatic rate-limit retry and thecondition-id vocabulary.conditionIdfilters validate the service's shared selector cap client-side: at most 20 distinct ids per request (case-insensitive dedupe first), so an oversized list fails typed instead of as a service 400.listPositionsbundles the whole lifecycle behindstatus(OPEN/REDEEMABLE/CLOSED) withredeemable/mergeableflags and fee-exclusive entry economics on every row —listClosedPositionsandlistMarketPositionsare removed (uselistPositionswithstatus/aconditionIdanchor). Every windowed method takes onewindowoption ('full' | { start?, end? }, epoch seconds orDate) replacing rawstart/end. Money, size, price, and PnL fields normalize toDecimalString(the wire's JSON numbers are stringified without loss at their 6-decimal grain, matching the v1 SDK surface),endDateis a typedIsoCalendarDateString, andComboPositionStatusgainsRedeemable(sole-value filter, also tolerated on rows); theActivityunion,Position,ComboPosition, andComboActivityrows are strict and normalized (epoch ms, empty-string/999-sentinel absence asundefined,assetIdcanonical with deprecatedtokenIdalias). Combo activity rows carrypositionIdon every row while droppingtransactionAt/logIndex/moduleId. Request vocabularies are exported enums: trade direction reusesOrderSide(the standaloneSidetype is removed), andSortDirection,TradeFilterType,PositionFilterType,PositionSortBy,ComboPositionSortBy, andTipSidejoinPositionStatus/ComboPositionStatus. On the secure client,listPositionsalways binds the authenticated wallet (theuser: nullopt-out is removed); list a market's holders through a public client instead.listMarketHoldersto its cursor-paginated/v2contract, using condition IDs, normalized holder fields, and optional position economics.listOpenInterestwithfetchOpenInterest, use condition and event identifiers, and expose cumulative taker volume explicitly.fetchPortfolioValueto its/v2contract, returning onePortfolioValuewith a decimal-string value and acceptingconditionIdsinstead of the legacymarketfilter. AddfetchUserStatswith decimal-string money, size, and PnL fields, and removefetchTradedMarketCount; usefetchUserStats().tradedMarketCountfor the exact distinct-market count. The accounting snapshot download remains available unchanged.fetchPriceHistorywith cursor-paginatedlistPriceHistory, using token IDs, strict time selections, second-based bucket widths, and normalized price points.fetchResolutionsfor non-paginated resolution lifecycle lookups by question, condition, or event. Resolution rows normalize identity, lifecycle, oracle, payout, and finality fields, while unset wire sentinels become omitted SDK fields.listTradesis fully replaced — same name, new contract. It now serves exact continuation signals (hasMore/server-mintednextCursor— no page-size probing), re-sends the original filters with every page, has no offset vocabulary (pageSizedefault 100, max 1000 rejected-not-clamped), retries transient rate limits after the server-requested delay, and accepts partialfilterType/filterAmount(the service fills the other half in). TheTraderow is strict and normalized (numbers forsize/price, epoch milliseconds, empty-string and unknown-sentinel absence asundefined). Following the service's naming remap, the request filter isconditionId(the wire'scondition/condition_id— the oldmarketkey no longer exists upstream) and the row field parsed iscondition_id. Bindings gain the reusable data envelope parsers (dataPageSchema,dataEnvelopeSchema) that turn the service's paginated envelope straight into the SDK page shape.fetchUserPnlandfetchUserVolumewith normalized decimal-string amounts, cumulative PnL metadata, shared time-window inputs, and authenticated-wallet defaults.Patch Changes
BuilderVolumeInterval.Yearwhile preserving the wire valueall.@polymarket/client@0.10.0
Minor Changes
listBuilderLeaderboardandfetchBuilderVolumeto their v2 contracts. Builder rankings now use server cursors and normalizedBuilderStandingrows; builder volume returns complete date buckets asBuilderVolumePointrows. ReplacetimePeriodwithwindoworinterval, and usebucketLimitto bound volume buckets./v2surface:/v2envelope schemas (paginated list with server-minted branded cursors, and single-object including null answers), awithRateLimitRetrypipeline helper that honors server-requested delays, and theMIGRATIONactivity type with itsMigrationActivityvariant. All additive — no existing API shape changes.listActivity,listComboActivity,listPositions, andlistComboPositionsnow serve exact cursor pagination with automatic rate-limit retry and thecondition-id vocabulary.conditionIdfilters validate the service's shared selector cap client-side: at most 20 distinct ids per request (case-insensitive dedupe first), so an oversized list fails typed instead of as a service 400.listPositionsbundles the whole lifecycle behindstatus(OPEN/REDEEMABLE/CLOSED) withredeemable/mergeableflags and fee-exclusive entry economics on every row —listClosedPositionsandlistMarketPositionsare removed (uselistPositionswithstatus/aconditionIdanchor). Every windowed method takes onewindowoption ('full' | { start?, end? }, epoch seconds orDate) replacing rawstart/end. Money, size, price, and PnL fields normalize toDecimalString(the wire's JSON numbers are stringified without loss at their 6-decimal grain, matching the v1 SDK surface),endDateis a typedIsoCalendarDateString, andComboPositionStatusgainsRedeemable(sole-value filter, also tolerated on rows); theActivityunion,Position,ComboPosition, andComboActivityrows are strict and normalized (epoch ms, empty-string/999-sentinel absence asundefined,assetIdcanonical with deprecatedtokenIdalias). Combo activity rows carrypositionIdon every row while droppingtransactionAt/logIndex/moduleId. Request vocabularies are exported enums: trade direction reusesOrderSide(the standaloneSidetype is removed), andSortDirection,TradeFilterType,PositionFilterType,PositionSortBy,ComboPositionSortBy, andTipSidejoinPositionStatus/ComboPositionStatus. On the secure client,listPositionsalways binds the authenticated wallet (theuser: nullopt-out is removed); list a market's holders through a public client instead.listMarketHoldersto its cursor-paginated/v2contract, using condition IDs, normalized holder fields, and optional position economics.listOpenInterestwithfetchOpenInterest, use condition and event identifiers, and expose cumulative taker volume explicitly.fetchPortfolioValueto its/v2contract, returning onePortfolioValuewith a decimal-string value and acceptingconditionIdsinstead of the legacymarketfilter. AddfetchUserStatswith decimal-string money, size, and PnL fields, and removefetchTradedMarketCount; usefetchUserStats().tradedMarketCountfor the exact distinct-market count. The accounting snapshot download remains available unchanged.fetchPriceHistorywith cursor-paginatedlistPriceHistory, using token IDs, strict time selections, second-based bucket widths, and normalized price points.fetchResolutionsfor non-paginated resolution lifecycle lookups by question, condition, or event. Resolution rows normalize identity, lifecycle, oracle, payout, and finality fields, while unset wire sentinels become omitted SDK fields.listTradesis fully replaced — same name, new contract. It now serves exact continuation signals (hasMore/server-mintednextCursor— no page-size probing), re-sends the original filters with every page, has no offset vocabulary (pageSizedefault 100, max 1000 rejected-not-clamped), retries transient rate limits after the server-requested delay, and accepts partialfilterType/filterAmount(the service fills the other half in). TheTraderow is strict and normalized (numbers forsize/price, epoch milliseconds, empty-string and unknown-sentinel absence asundefined). Following the service's naming remap, the request filter isconditionId(the wire'scondition/condition_id— the oldmarketkey no longer exists upstream) and the row field parsed iscondition_id. Bindings gain the reusable data envelope parsers (dataPageSchema,dataEnvelopeSchema) that turn the service's paginated envelope straight into the SDK page shape.fetchUserPnlandfetchUserVolumewith normalized decimal-string amounts, cumulative PnL metadata, shared time-window inputs, and authenticated-wallet defaults.Patch Changes
BuilderVolumeInterval.Yearwhile preserving the wire valueall.Note
High Risk
This release encodes many breaking public API and typing changes across portfolio, positions, trades, and authenticated reads—consumers must migrate call sites before upgrading.
Overview
This Changesets release PR bumps
@polymarket/bindingsand@polymarket/clientto 0.10.0, rolls the pending changeset notes into each package CHANGELOG, and deletes the consumed.changeset/*.mdfiles. There is no new application code in the diff—merge triggers npm publish of the already-merged Data API work.0.10.0 is dominated by breaking Data
/v2migrations: cursor pagination and shared envelopes/rate-limit retry on feeds (listActivity, positions, trades, etc.),conditionIdvocabulary (replacing legacymarketfilters where upstream dropped them), unifiedlistPositions(removinglistClosedPositions/listMarketPositions), and v2 swaps for portfolio value, price history, open interest, holders, builder/trader leaderboards, and related reads. Additive pieces includefetchResolutions,fetchUserStats,fetchUserPnl/fetchUserVolume,MigrationActivity, and assorted normalization (decimal strings, condition IDs, combo leg metadata, resolution fields).Secure
listPositionsno longer allowsuser: null; callers must use a public client for market holders.Reviewed by Cursor Bugbot for commit 2216853. Bugbot is set up for automated code reviews on this repo. Configure here.