Skip to content

v12.0.0

Choose a tag to compare

@ryanio ryanio released this 21 Aug 19:55
· 17 commits to main since this release

What's Changed

Breaking

  • Removes the retired wallet-level agent designation: WalletAuthAPI.markWalletAsAgent and WalletAuthAPI.removeWalletAgentDesignation are gone. The endpoints they called, PUT and DELETE /api/v2/accounts/wallets/{wallet}/agent, no longer exist (ProjectOpenSea/os2-core#52946), so keeping the methods would mean shipping calls that 404.
  • onItemReceivedOffer is now a no-op and hidden. The Stream API does not emit item_received_offer and never has, so the method only ever registered a handler that could not fire.

An agent is an account, not a flag on a wallet. Use declareAgentAccount, withdrawAgentAccountDeclaration, and the proposeAgentRelationship / confirmAgentRelationship / revokeAgentRelationship handshake instead.

Added

  • Agent accounts, so an agent can declare itself and complete the ownership handshake without hand-rolling HTTP. On WalletAuthAPI: declareAgentAccount, withdrawAgentAccountDeclaration, proposeAgentRelationship, confirmAgentRelationship, revokeAgentRelationship and listOwnAgentRelationships.

    Ownership is a declaration and not an authorization: naming an account as your agent grants it no ability to act for you, and it is self-reported rather than verified by OpenSea. An agent can have no owner at all, and at most one confirmed owner. Either side may withdraw or revoke at any time. Only confirmed relationships are public.

    The scopes differ, which is easy to get wrong: every write takes write:wallets but listing your own relationships takes read:wallets, so a client driving the whole handshake needs both. read:wallets is now in OPENSEA_SCOPES, so the default OAuth grant carries it.

Fixed

  • fulfillOrder now appends the attribution suffix the fulfillment endpoints return, so fills built by the SDK are attributed to OpenSea onchain. The API returns calldata_suffix and carries it as trailing calldata on its own transactions, but the SDK re-encoded the call from input_data, which dropped it. Seaport reads its arguments from offsets and ignores trailing bytes, so the suffix does not affect execution.

Internal

  • Five hand-rolled API types replaced with the generated ones from @opensea/api-types.
  • Stream API payload types and logging internals deduplicated, with no public API change.

Full Changelog: v11.9.0...v12.0.0