> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Java changelog

The release notes for our [Java](https://central.sonatype.com/artifact/io.privy.api/privy-java) SDK.

<Update label="0.58.0">
  ### Added

  * Add support for `POST /v1/wallets/authenticate/intents` endpoint.
  * Add intent-bound signing key exchange utility.
</Update>

<Update label="0.57.0">
  ### Fixed

  * Fix `deleteRule` intent response deserialization.
</Update>

<Update label="0.56.0">
  ### Added

  * Intent authorization via JWT exchange endpoint (`intents/authorize`).
  * `authorizeIntent` convenience wrapper on `PrivyIntentsService`.
</Update>

<Update label="0.55.0">
  ### Added

  * `PrivyIntentsService` with request expiry support, wired into `PrivyClient`.
  * Intents API endpoints for `eth_signUserOperation` and other intent types.
  * Expose `JwtExchange` via `privyClient.utils()`.

  ### Breaking changes

  * Rename `exchangeJwtForAuthorizationKey` to `exchangeJwtForUserSigningKey`.
</Update>

<Update label="0.54.0">
  ### Added

  * `AuthorizationSigner` functional interface for external signing via KMS, HSM, or hardware wallets. Use `AuthorizationContext.addSigner()` or `AuthorizationContext.withSigner()` to register signers.
  * New `signTransaction` and `sendTransaction` overloads on `PrivyEthereumService` that accept `UnsignedEthereumTransaction` (union of standard and Tempo transactions). Existing overloads for `UnsignedStandardEthereumTransaction` are preserved for backward compatibility.
  * Spark Protocol support (Bitcoin/Lightning L2) with \~65 new classes including `SparkNetwork`, `SparkBalance`, lightning invoice support, and RPC methods.
  * Intent system with `IntentType`, `IntentAuthorization`, and intent lifecycle webhook payloads.
  * Wallet action webhooks for transfer, swap, earn deposit, earn incentive claim, earn withdraw lifecycles, and yield webhooks.
  * Tempo transaction (type 118) support with `UnsignedTempoTransaction`, `TempoCall`, `TempoAAAuthorization`, and `TempoFeePayerSignature`.
  * `AccessList` type for Ethereum access lists.
  * `EthereumSendCallsCall`, `EthereumSendCallsRpcInput`, and `EthereumSendCallsRpcResponse` for batched calls.
  * Export RPC methods: `ExportPrivateKeyRpcInput`/`Response` and `ExportSeedPhraseRpcInput`/`Response`.
  * New `RawSignInput`, `RawSignInputParams`, `RawSignBytesParams`, `RawSignHashParams` types replacing the deleted `RawSignRequest`/`RawSignRequestParams`.
  * ABI and smart contract types: `AbiParameter`, `AbiSchema`, `EthereumTypedDataInput`, `TypedData`.
  * Wallet action step types: `WalletActionStep`, `WalletActionType`, and chain-specific variants.
  * Wallet asset types: `WalletAsset`, `WalletEthereumAsset`, `WalletSolanaAsset`.
  * New fields: `referenceId` and `experimentalDataSuffix` on `EthereumSendTransactionRpcInput`; `walletId` on `EthereumPersonalSignRpcInput` and `EthereumSignTransactionRpcInput`.

  ### Breaking changes

  **Wallets**

  * `Wallets.update()` now takes a single `WalletUpdateRequest` object instead of multi-parameter overloads.
  * `Wallets.export()` now takes a single `WalletExportRequest` object instead of multi-parameter overloads.
  * `WalletUpdateRequest.requestBody()` renamed to `walletUpdateRequestBody()`.
  * `WalletUpdateRequestBody` moved from `operations` to `components` package.
  * `WalletUpdateRequestBody.additionalSigners()` changed from `List<WalletAdditionalSignerItem>` to `List<AdditionalSignerItemInput>`.
  * `Wallet.additionalSigners()` changed from `List<WalletAdditionalSigner>` to `List<WalletAdditionalSignerItem>`.
  * `WalletAdditionalSigner` deleted, replaced by `WalletAdditionalSignerItem`.
  * `UserOwner` and `PublicKeyOwner` deleted, replaced by `OwnerInputUser` and `OwnerInputPublicKey`.

  **Wallet RPC**

  * `WalletRpcRequest.requestBody()` renamed to `walletRpcRequestBody()`.
  * `WalletRpcResponse.oneOf()` removed; use `walletRpcResponse()` returning `Optional<WalletRpcResponse>` from the `components` package.
  * `WalletRpcRequestBody` and `WalletRpcResponseBody` moved from `operations` to `components` package.
  * `RawSignRequest` and `RawSignRequestParams` (in operations) deleted, replaced by `RawSignInput`/`RawSignInputParams` in components.
  * Ethereum transaction field wrapper classes (e.g., `EthereumSendTransactionRpcInputChainId`, `...GasLimit`, `...Value`) removed and replaced with `UnsignedStandardEthereumTransaction` + `Quantity`.
  * `EthereumSignTransactionRpcInputParams.transaction()` and `EthereumSendTransactionRpcInputParams.transaction()` type changed from `UnsignedStandardEthereumTransaction` to `UnsignedEthereumTransaction`. Use `UnsignedEthereumTransaction.of(transaction)` to wrap existing instances.

  **Policies**

  * `Policies.update()` now takes a single `PolicyUpdateRequest` object.
  * `Policies.createRule()` now takes a single `CreateRuleRequest` object.
  * `Policies.deleteRule()` now takes a single `DeleteRuleRequest` object.
  * `PolicyCreateRequestBody.rules()` now accepts `List<Rule>` instead of `List<PolicyRuleRequestBody>`.
  * `PolicyChainType` deleted, replaced by `WalletChainType`.
  * `PolicyDeleteResponse.object()` renamed to `successResponse()`.

  **Key quorums**

  * `KeyQuorums.update()` now takes a single `KeyQuorumUpdateRequest` object.
  * `KeyQuorumCreateRequestBody` and `KeyQuorumUpdateRequestBody` moved from `operations` to `components` package.
  * Builder methods renamed: `.requestBody()` to `.keyQuorumCreateRequestBody()` / `.keyQuorumUpdateRequestBody()`.

  **Transactions**

  * `Transaction.status()` changed from `StatusEnum` to `TransactionStatus`.

  **Webhooks**

  * `FundsDepositedWebhookPayload`/`FundsWithdrawnWebhookPayload` asset sub-types consolidated into `WalletFundsAsset` union.
</Update>

<Update label="0.53.0">
  ### Changed

  * **BREAKING**: `Status` changed from an enum (`BROADCASTED`, `CONFIRMED`, etc.) to a oneOf union class (`StatusOk | StatusDisabled | StatusClosed`). This completely changes the `Status` type and its API surface.
  * **BREAKING**: `Transaction.status()` return type changed from `Status` (enum) to `StatusEnum` (new enum). The old `Status` type is now a different class entirely.
  * **BREAKING**: `RawSignRequestParams` changed from a concrete class with `bytes()`, `encoding()`, `hashFunction()` fields to a oneOf union of `Hash | Bytes`. The builder and all field accessors are removed.
  * **BREAKING**: `RawSignRequestParamsUnion` deleted; `RawSignRequest.params()` now returns `RawSignRequestParams` (which is the new oneOf type) instead of `RawSignRequestParamsUnion`.
  * **BREAKING**: `UserLinkedAccountUnlinkRequestBody.type()` changed from `Type` (deleted enum) to `LinkedAccountType` (new enum).

  **Field Type Changes on Linked Account Models**

  * **BREAKING**: `LinkedAccountCurveSigningEmbeddedWallet.recoveryMethod()` changed from `LinkedAccountCurveSigningEmbeddedWalletRecoveryMethod` to `EmbeddedWalletRecoveryMethod`.

  **Constructor Signature Changes**

  * **BREAKING**: `WalletBalanceRequest` constructor: `asset` and `chain` parameters changed from `@Nonnull` to `@Nullable`. The short-form constructor now only takes `walletId`. Return types of `asset()` and `chain()` changed from direct values to `Optional<>`.
  * **BREAKING**: `RawSignResponse` constructor now requires a `method` parameter (new required field).
  * Multiple linked account embedded wallet constructors now include `imported` and `delegated` as required `boolean` parameters instead of optional `Boolean`.
</Update>

<Update label="0.52.4">
  ### Changed

  * Better handling for parallel RPC requests
</Update>

<Update label="0.52.3">
  ### Changed

  * More debug logging
</Update>

<Update label="0.52.2">
  ### Changed

  * Use enhanced JSON mapper for authorization requests
</Update>

<Update label="0.52.1">
  ### Changed

  * Additional logging to help debug session expiration
</Update>

<Update label="0.52.0">
  ### Added

  * Passkey auth
  * Email auth
</Update>

<Update label="0.51.0">
  ### Added

  * System policies
  * Additional signer export
  * Policy APIs
  * Policy rule APIs
</Update>

<Update label="0.50.0">
  **Initial release** of the Java SDK. See the [quickstart](/basics/java/quickstart) guide for more
  details on how to get started.
</Update>
