Skip to content

Latest commit

 

History

History
680 lines (337 loc) · 22.5 KB

CHANGELOG.md

File metadata and controls

680 lines (337 loc) · 22.5 KB

CDP SDK Changelog

[1.52.0] - 2026-11-04

Features

  • Added cdp.lend.list_vaults and cdp.lend.get_vault to read the Lend vaults a project created, including their APY and TVL metrics. Also added the generated LendApi.list_vaults and LendApi.get_vault client methods.

[1.51.0] - 2026-10-22

Features

  • Added pause_policy and resume_policy to PoliciesClient to pause a policy indefinitely or until a time within the next 30 days, and added status, paused_at, and resume_at to Policy.
  • Added redeem_vault_fees to EvmServerAccount and EvmSmartAccount to redeem the vault fee shares held by a Lend vault's fee recipient account for the vault's underlying asset. Also added the generated LendApi client (redeem_vault_fees_with_evm_account, redeem_vault_fees_with_evm_smart_account).

[1.50.0] - 2026-10-16

Features

  • Added cdp.policies.simulate to evaluate policies against an operation without signing or submitting it. Returns a PolicySimulationResult with the accept or reject action, matched rule, and unmatched rules. (#policies-simulate)
  • Regenerate OpenAPI clients from c3/cdp-api@3312048b: add simulatePolicies (POST /v2/policy-engine/simulate) and createTopUpLink, add top-up-link and customer-requirement webhook schemas, update disbursement customerDisplay, and remove listCoinbaseAccountBalances. (#cdp-api-3312048b)

[1.49.0] - 2026-10-06

Features

  • Revoke delegation now calls POST .../delegation/revoke and POST .../address/{address}/delegation/revoke. The old DELETE endpoints remain as revokeDelegationForEndUserDeprecated and revokeDelegationForEndUserAccountDeprecated until 2026-10-22. The generated request body type for all four operations is now RevokeDelegationRequest. Also adds the Mandates API (createMandate, getMandate, listMandates, cancelMandate, approveWalletMandate, revokeWalletMandate, authorizeMandatePaymentSession, and related approval and revocation reads) from the cdp-api master spec. (#cdp-api-6c7beea6)

[1.48.2] - 2026-09-30

Bugfixes

  • Regenerate the OpenAPI client from the latest CDP API spec, adding customer-requirements and borrowing operations, Solana encoding options, and updated policy documentation.

    Webhook subscription create/update metadata values now validate as 1–50 characters instead of 0–500. Requests with empty values or values longer than 50 characters must be updated. The API contract also specifies 1–50 characters for keys and at most 10 pairs. (CDP API spec a308e789)

  • Fixed the Python swap quote to surface API issues (allowance, balance, simulationIncomplete) on QuoteSwapResult, and made send_swap_transaction / send_swap_operation fail closed on allowance and balance issues before broadcasting a swap. simulationIncomplete is deliberately not blocking since, per the API docs, it does not necessarily mean the trade will revert. (#97)

[1.48.1] - 2026-08-25

Bugfixes

  • Fixed swap quote response deserialization when the API returns a boolean liquidityAvailable value. (#788)

[1.48.0] - 2026-08-20

Features

  • Added support for calling public OpenAPI endpoints without API credentials and reporting missing credentials for authenticated endpoints at request time. (#745)

Bugfixes

  • Fixed swap quote response deserialization when the API returns nullable gasFee, protocolFee, allowance, balance, gas, or permit2 values. (#780)

[1.47.1] - 2026-06-18

Bugfixes

  • Added paymasterContext and expiresAt for UserOperation methods (#730)

[1.47.0] - 2026-05-28

Features

[1.46.0] - 2026-05-21

Features

  • Added idempotency_key parameter to all end user client and account operation methods for safe request retries. (#713)

[1.45.2] - 2026-05-20

Bugfixes

  • Add missing /embedded-wallet-api/ path check to wallet auth header generation, ensuring X-Wallet-Auth is sent for all embedded wallet API operations (#fix-wallet-auth-embedded-wallet-api)

[1.45.1] - 2026-05-12

Bugfixes

  • Bumped API spec and re-generated clients (#700)

[1.45.0] - 2026-05-11

Features

  • Add support for SendEndUserEvmAsset, SendEndUserSolAsset, and CreateEndUserEvmSwap policy rules and criteria (#publicize-end-user-policy-rules)
  • Added account-scoped delegation methods to EndUserAccount: get_delegation_for_account and revoke_delegation_for_account (#689)

[1.44.0] - 2026-04-22

Features

  • Add get_delegation method to EndUserClient for retrieving active delegation details (#get-delegation)

Bugfixes

  • Added new webhook events for signing and delegated signing (#671)

[1.43.0] - 2026-04-20

Features

  • Added delegated signing and sending methods to EndUserClient and EndUserAccount for EVM and Solana operations (#663)

Bugfixes

  • Removed upper bound pin on web3.py dependency (#657)

[1.42.0] - 2026-04-15

Features

  • Added CreateSubscription for Webhooks Client (#634)

Bugfixes

  • Removed nest_asyncio dependency (#652)

[1.41.0] - 2026-04-09

Features

  • Added solana fee sponsorship (#646)

Bugfixes

  • Added EIP-6492 signature wrapping for undeployed smart accounts (#623)

Misc

[1.40.0] - 2026-03-06

Features

  • Added createEvmEip7702Delegation to upgrade EOAs with smart account capabilities (#606)
  • Added support for new end user embedded wallet policy rules, reusing existing criteria - signEndUserEvmTransaction, sendEndUserEvmTransaction, signEndUserEvmMessage, signEndUserEvmTypedData, signEndUserSolTransaction, sendEndUserSolTransaction, and signEndUserSolMessage. (#608)
  • Added get_evm_eip7702_delegation_operation_by_id and wait_for_evm_eip7702_delegation_operation_status methods (#612)

Bugfixes

  • Fixed a bug where concurrent async method calls on the same object were short-circuited by the analytics error tracking wrapper, causing only the first call to execute and subsequent calls to return the input parameters instead of the actual result. (#fix-concurrent-analytics-wrapper)
  • Simplified analytics (#607)

[1.39.1] - 2026-01-29

Bugfixes

  • Removed BaseAccount inheritance of EvmServerAccount (#581)

[1.39.0] - 2026-01-29

Features

  • Added new methods for the end user client to add additional EVM accounts, EVM Smart Accounts, and Solana accounts. (#578)
  • Added convenience methods to the EndUserAccount object for adding accounts. (#579)

[1.38.0] - 2026-01-22

Features

  • Makes create_facilitator_config compatible with python x402 v2 sdk (#555)

[1.37.1] - 2026-01-20

Bugfixes

  • Relaxed dependency version constraints (#561)

[1.37.0] - 2026-01-09

Features

  • Added importEndUser to the end user client (#545)

Bugfixes

  • Improved handling of ECDSA-formatted API keys. (#546)

[1.36.0] - 2026-01-08

Features

  • Added spend permissions for pre-generated smart accounts (#541)

[1.35.0] - 2025-12-08

Features

  • Added optional EIP-8021 dataSuffix to send_user_operation (#506)

[1.34.0] - 2025-12-04

Features

  • Added createEndUser method to EndUser client (#499)

[1.33.3] - 2025-11-21

Bugfixes

  • Replaced error-tracking wrappers with a WeakSet-based recursion guard to prevent memory leaks from strong references to wrapped instances. (#494)

[1.33.2] - 2025-11-03

  • Removed default audience claim from JWT generation

[1.33.1] - 2025-10-06

Bugfixes

  • Fixed python client retries (#451)
  • Fixed Solana mainnet USDC sends (#465)

[1.33.0] - 2025-09-23

Features

  • Added netUSDChange policy criteria to send+prepareUserOperation (#440)

Bugfixes

  • Fixed uvloop compatibility issue (#448)

[1.32.0] - 2025-09-09

Features

  • Added programId, solNetwork, and solMessage policy criteria (#435)

[1.31.2] - 2025-09-05

Bugfixes

  • Support non-checksum addresses in transfers.

[1.31.1] - 2025-09-03

Bugfixes

  • Removed approval in transfer method for Smart Accounts and EOAs (#427)

[1.31.0] - 2025-08-19

Features

  • Added solData criterion to policy engine (#415)

Bugfixes

  • Added check to validate smart account owner (#411)

Misc

[1.30.0] - 2025-08-13

Features

  • Added access token validation to SDK (#389)
  • Migrated listTokenBalances to use new data endpoint with significantly improved performance: <1sec data freshness, <500ms query latency, and 100% token balance completeness across all addresses on Base and Base Sepolia networks (#394)
  • Added additional network support for sendEvmTransaction and prepareUserOperation evmNetwork policy criteria (#1446)

Misc

[1.29.1] - 2025-08-09

Bugfixes

  • Added discovery layer disclaimer notice to x402 subpackage

[1.29.0] - 2025-08-07

Features

[1.28.0] - 2025-08-05

Features

  • Added netUSDChange criteria for sign/sendEvmTransaction rules (#1218)

[1.27.0] - 2025-08-04

Features

  • Added SendSolTransaction rule and updated SignSolTransaction rule with new criteria (#344)

[1.26.0] - 2025-07-31

Features

  • SendEvmTransaction support for new EVM networks - arbitrum, polygon, optimism, avalanche (#338)

Bugfixes

  • Fixed evmData in python request/response transformer (#317)

[1.25.0] - 2025-07-23

Features

  • Added Solana onramp (#294)

Bugfixes

  • Updated transfer to use SendSolanaTransaction (#309)

[1.24.0] - 2025-07-18

Features

  • Added sendTransaction function for Solana accounts (#291)
  • Improved network error handling (#293)

Bugfixes

  • Gracefully handle closed client connections (#298)

[1.23.0] - 2025-07-16

Features

  • Added signTypedData on EvmSmartAccount (#284)

Bugfixes

  • Made solana mainnet default network for listTokenBalances (#282)

[1.22.0] - 2025-07-10

Features

  • Added list_token_balances on Solana to get SOL and SPL token balances (#277)

[1.21.0] - 2025-07-09

Features

  • Added updateSmartAccount to EvmClient (#267)
  • Added sendUserOperation, prepareUserOperation policy rules and EVM Smart Account policies (#270)

[1.20.0] - 2025-07-08

Features

  • Added support for policy creation on signTypedData operations (#264)

[1.19.0] - 2025-07-01

Features

  • Added ethereum mainnet support for wallet fund and quote_fund operations (#251)

[1.18.0] - 2025-06-27

Features

  • Added importAccount method for Solana client (#244)

Bugfixes

  • Fixed EvmLocalAccount sign typed data compatibility with eth-account.

    • Convert bytes32 to hex string to make it serializable
    • Include EIP712 domain if missing from types
    • Return SignedMessage

    (#246)

[1.17.0] - 2025-06-26

Features

  • Added ethereum & ethereum-sepolia to SendEvmTransaction (#234)

[1.16.0] - 2025-06-25

Features

  • Added support for EvmDataCriterion in policies, which can restrict smart contract interactions (#220)

Bugfixes

  • Hash req body in wallet jwt claims (#212)

[1.15.0] - 2025-06-18

Features

  • Added the CDP facilitator configuration export for the x402 payment protocol

[1.14.0] - 2025-06-17

Features

  • Added swap support for EVM Smart Accounts (#200):

    • Added the following EVM Smart Account methods: evm_smart_account.quote_swap(), evm_smart_account.swap()
    • Added swap_quote.execute() method for executing swap quotes generated for EVM Smart Accounts
  • Added idempotency support for get_swap_price and create_swap_quote (#200)

Bugfixes

  • Fixed usage of optional idempotency keys for one-line swap approach (#200)

[1.13.0] - 2025-06-13

Features

  • Added get_or_create_smart_account and added optional name argument to get_smart_account and create_smart_account (#198)

[1.12.0] - 2025-06-12

Features

  • Added evm and solana account export by address or name (#195)

Bugfixes

  • Log response body for unexpected error scenarios (#192)

[1.11.1] - 2025-06-04

Bugfixes

  • Fixed taker parameter logic to align Python SDK with TypeScript SDK behavior:

    • Removed taker parameter from SwapOptions - Account swap methods now always use the account address as taker, preventing confusion about which address receives the swapped tokens
    • Updated account.swap() - Always uses self.address as taker instead of allowing custom taker via SwapOptions
    • Updated account.quote_swap() - Always uses self.address as taker (previously could be overridden)
    • Maintained explicit taker requirement - Global methods (cdp.evm.get_swap_price(), cdp.evm.create_swap_quote()) still require explicit taker parameter for flexibility
    • Updated examples and documentation - All examples now reflect the simplified taker logic

    This change provides a cleaner API where account-level convenience methods always swap to the account address, while global methods require explicit specification for external wallet integrations.

    (#182)

[1.11.0] - 2025-06-03

Features

  • Added comprehensive token swap functionality for EVM accounts

    • Added multiple swap approaches:
      • Direct swap with account.swap() using SwapOptions with parameters
      • Get pricing information with get_swap_price()
      • Create quotes with create_swap_quote() and execute separately
      • Account convenience method account.quote_swap() that auto-sets taker
    • Added ability to execute quotes directly with quote.execute() when from_account is provided
    • Support for swapping tokens using contract addresses
    • Configurable slippage protection (slippage_bps) with automatic optimal routing
    • Returns SwapUnavailableResult when liquidity is insufficient
    • Consistent parameter naming: from_token, to_token, from_amount
    • Support for multiple amount formats (decimal strings and atomic units)
    • Comprehensive test coverage including unit tests and E2E tests
    • Updated documentation with examples for all swap patterns

    (#160)

  • Added support for signEvmHash and signEvmMessage policy rules (#173)

[1.10.0] - 2025-05-30

Features

  • Added support for funding an EVM account with eth or usdc using a linked debit card (#156)
  • Added eth-account compatibility (#162)
  • Added ability to create account with policy (#166)

[1.9.0] - 2025-05-29

Features

  • Added import account to evm client (#157)

[1.8.1] - 2025-05-16

Misc

[1.8.0] - 2025-05-15

Features

  • Added policy CRUD methods (#145)
  • Added updateAccount to evm and solana clients (#146)

[1.7.0] - 2025-05-14

Features

  • Added transfer method to Solana account to easily send tokens on Solana (#136)
  • Updated Transfer API to allow users to wait for receipt and pass in a parsed amount to transfer (#137)

[1.6.0] - 2025-05-09

Features

  • Added support for eip-712 signing (#132)
  • Added SolanaAccount with convenience methods to easily perform actions on a returned account (#135)

[1.5.0] - 2025-05-07

Features

  • Added additional options to transfer methods (#105):

    • Added paymaster_url and wait_options to EvmSmartAccount.transfer
    • Added wait_options to EvmAccount.transfer
  • Added account actions for evm server and smart accounts (#114)

[1.4.0] - 2025-05-02

Features

  • Added transfer methods to EvmAccount and EvmSmartAccount (#95)
  • Added a get_or_create_account function to the EVM and Solana clients (#98)

[1.3.0] - 2025-04-29

Features

  • Updated send_transaction to allow omission of nonce and gas parameters, deferring to Coinbase API to fill these in (#86)
  • Added the ability to generate JWTs intended for Websocket connections
  • Added the ability to pass "audience" JWT claim as an optional param (#75)

[1.2.2] - 2025-04-28

Bugfixes

  • Fix circular dependency when importing cdp-sdk (#82)

[1.2.1] - 2025-04-24

Patch Changes

  • This patch contains a README update to accomodate the new home for CDP SDK examples.

[1.2.0] - 2025-04-23

Features

  • Added list_token_balances to the evm client to retrieve ERC-20 and native token balances for an address on a given network. (#55)
  • Added send_transaction to the evm client to sign and send a transaction on a given network. (#58)

Misc

[1.1.1] - 2025-04-17

Bugfixes

  • Correctly implement aenter and aexit on CdpClient (#43)

[1.1.0] - 2025-04-16

Features

  • Add support for configuring CdpClient via environment variables. (#30)

    Developers can now simply set the following environment variables in their shell:

    export CDP_API_KEY_ID=your-api-key-id
    export CDP_API_KEY_SECRET=your-api-key-secret
    export CDP_WALLET_SECRET=your-wallet-secret

    And configure the CdpClient like so:

    from cdp import CdpClient
    
    cdp = CdpClient()

    Or, load from a .env file:

    # .env
    CDP_API_KEY_ID=your-api-key-id
    CDP_API_KEY_SECRET=your-api-key-secret
    CDP_WALLET_SECRET=your-wallet-secret

    And configure the CdpClient like so:

    from cdp import CdpClient
    from dotenv import load_dotenv
    
    load_dotenv()
    
    cdp = CdpClient()

[1.0.1] - 2025-04-14

Features

  • Initial release of the CDP SDK.