v12.0.0
What's Changed
Breaking
- Removes the retired wallet-level agent designation:
WalletAuthAPI.markWalletAsAgentandWalletAuthAPI.removeWalletAgentDesignationare gone. The endpoints they called,PUTandDELETE /api/v2/accounts/wallets/{wallet}/agent, no longer exist (ProjectOpenSea/os2-core#52946), so keeping the methods would mean shipping calls that 404. onItemReceivedOfferis now a no-op and hidden. The Stream API does not emititem_received_offerand 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,revokeAgentRelationshipandlistOwnAgentRelationships.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:walletsbut listing your own relationships takesread:wallets, so a client driving the whole handshake needs both.read:walletsis now inOPENSEA_SCOPES, so the default OAuth grant carries it.
Fixed
fulfillOrdernow appends the attribution suffix the fulfillment endpoints return, so fills built by the SDK are attributed to OpenSea onchain. The API returnscalldata_suffixand carries it as trailing calldata on its own transactions, but the SDK re-encoded the call frominput_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