diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index facdac35..8b84e553 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -59,16 +59,18 @@ docs/AddressNotAvailableError.md
docs/AddressRegistryAddVaultOptOutsRequest.md
docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md
docs/AddressRegistryAddVaultOptOutsResponse.md
-docs/AddressRegistryError.md
+docs/AddressRegistryCreateProofOfOwnershipRequest.md
+docs/AddressRegistryCreateProofOfOwnershipResponse.md
docs/AddressRegistryGetVaultOptOutResponse.md
docs/AddressRegistryLegalEntity.md
docs/AddressRegistryListVaultOptOutsResponse.md
docs/AddressRegistryRemoveAllVaultOptOutsResponse.md
docs/AddressRegistryRemoveVaultOptOutResponse.md
docs/AddressRegistryTenantRegistryResponse.md
-docs/AddressRegistryTravelRuleProvider.md
docs/AddressRegistryVaultListOrder.md
docs/AddressRegistryVaultOptOutItem.md
+docs/AddressRegistryVerifyProofOfOwnershipRequest.md
+docs/AddressRegistryVerifyProofOfOwnershipResponse.md
docs/AddressReverseLookupResponse.md
docs/AddressesFilters.md
docs/AlertExposureTypeEnum.md
@@ -200,11 +202,17 @@ docs/CantonCall.md
docs/CantonCallAllocationWithdraw.md
docs/CantonCallAllowListAdd.md
docs/CantonCallAllowListRemove.md
+docs/CantonCallDetails.md
docs/CantonCallEndInvestorInvite.md
docs/CantonCallEndInvestorInviteCancel.md
docs/CantonCallEndInvestorOffboard.md
docs/CantonCallParticipantOnboarding.md
docs/CantonCallTransferWithdraw.md
+docs/CantonDetails.md
+docs/CantonDomainEnum.md
+docs/CantonOfferResponseDetails.md
+docs/CantonSettlementDetails.md
+docs/CantonVendorEnum.md
docs/ChainDescriptor.md
docs/ChainInfoResponse.md
docs/ChannelDvnConfigWithConfirmations.md
@@ -257,7 +265,7 @@ docs/ConnectedAccountTradingPair.md
docs/ConnectedAccountTradingPairSupportedType.md
docs/ConnectedAccountTradingPairsResponse.md
docs/ConnectedAccountType.md
-docs/ConnectedAccountsBetaApi.md
+docs/ConnectedAccountsApi.md
docs/ConnectedAccountsResponse.md
docs/ConnectedSingleAccount.md
docs/ConnectedSingleAccountResponse.md
@@ -358,6 +366,7 @@ docs/CreateVaultAccountConnectionRequest.md
docs/CreateVaultAccountRequest.md
docs/CreateVaultAssetResponse.md
docs/CreateWalletRequest.md
+docs/CreateWebhookMtlsConfigRequest.md
docs/CreateWebhookOauthRequest.md
docs/CreateWebhookRequest.md
docs/CreateWorkflowExecutionRequestParamsInner.md
@@ -372,6 +381,7 @@ docs/DelegationBlockchainPositionInfo.md
docs/DelegationSummary.md
docs/DeleteNetworkConnectionResponse.md
docs/DeleteNetworkIdResponse.md
+docs/DeleteWebhookMtlsConfigResponse.md
docs/DeleteWebhookOauthResponse.md
docs/DeployLayerZeroAdaptersRequest.md
docs/DeployableAddressResponse.md
@@ -421,6 +431,7 @@ docs/EarnCurator.md
docs/EarnMetadata.md
docs/EarnProvider.md
docs/EditGasStationConfigurationResponse.md
+docs/EffectiveUtxoSelectionConfig.md
docs/EmbeddedWallet.md
docs/EmbeddedWalletAccount.md
docs/EmbeddedWalletAddressDetails.md
@@ -503,6 +514,7 @@ docs/FiatTransfer.md
docs/FixedAmountTypeEnum.md
docs/FixedFee.md
docs/FlowDirection.md
+docs/FokTimeInForce.md
docs/FpsHkAddress.md
docs/FpsHkDestination.md
docs/FpsHkPaymentInfo.md
@@ -624,6 +636,10 @@ docs/LegacyPublishResult.md
docs/LegacySrcOrDestAttributesInner.md
docs/LegalEntityRegistration.md
docs/LeiStatus.md
+docs/LimitExecutionRequestDetails.md
+docs/LimitExecutionResponseDetails.md
+docs/LimitTypeDetails.md
+docs/LimitTypeEnum.md
docs/LinkedTokensCount.md
docs/ListApprovalApiKeysResponse.md
docs/ListApprovalsResponse.md
@@ -792,6 +808,8 @@ docs/PolicyVerdictActionEnum2.md
docs/Position.md
docs/Position2.md
docs/PositionRelatedTransaction.md
+docs/PostTradeSettlement.md
+docs/PostTradeSettlementType.md
docs/PostalAddress.md
docs/PreScreening.md
docs/PrefundedSettlement.md
@@ -1279,10 +1297,12 @@ docs/UpdateTagRequest.md
docs/UpdateTokenOwnershipStatusDto.md
docs/UpdateVaultAccountAssetAddressRequest.md
docs/UpdateVaultAccountRequest.md
+docs/UpdateWebhookMtlsConfigRequest.md
docs/UpdateWebhookOauthRequest.md
docs/UpdateWebhookRequest.md
docs/UpdateWorkflowStatusRequest.md
docs/UpdateWorkflowStatusResponse.md
+docs/UpsertUtxoSelectionConfigRequest.md
docs/UsWirePaymentInfo.md
docs/UsdcGatewayWalletAsset.md
docs/UsdcGatewayWalletInfoResponse.md
@@ -1301,10 +1321,16 @@ docs/UtxoIdentifier.md
docs/UtxoInput.md
docs/UtxoInput2.md
docs/UtxoInputSelection.md
+docs/UtxoLabelFailure.md
+docs/UtxoLabelsErrorResponse.md
docs/UtxoManagementBetaApi.md
docs/UtxoOutput.md
+docs/UtxoSelectionConfigEntry.md
+docs/UtxoSelectionConfigResponse.md
+docs/UtxoSelectionConfigSourceEnum.md
docs/UtxoSelectionFilters.md
docs/UtxoSelectionParams.md
+docs/UtxoSelectionStrategyEnum.md
docs/ValidateAddressResponse.md
docs/ValidateLayerZeroChannelResponse.md
docs/ValidationKeyDto.md
@@ -1330,7 +1356,7 @@ docs/Web3ConnectionsApi.md
docs/Webhook.md
docs/WebhookEvent.md
docs/WebhookMetric.md
-docs/WebhookMtls.md
+docs/WebhookMtlsConfig.md
docs/WebhookMtlsCsrResponse.md
docs/WebhookMtlsKeyAlgorithm.md
docs/WebhookOauthCredentials.md
@@ -1386,7 +1412,7 @@ src/main/java/com/fireblocks/sdk/api/BlockchainsAssetsApi.java
src/main/java/com/fireblocks/sdk/api/ComplianceApi.java
src/main/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApi.java
src/main/java/com/fireblocks/sdk/api/ComplianceScreeningConfigurationApi.java
-src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java
+src/main/java/com/fireblocks/sdk/api/ConnectedAccountsApi.java
src/main/java/com/fireblocks/sdk/api/ConsoleUserApi.java
src/main/java/com/fireblocks/sdk/api/ContactsApi.java
src/main/java/com/fireblocks/sdk/api/ContractInteractionsApi.java
@@ -1486,16 +1512,18 @@ src/main/java/com/fireblocks/sdk/model/AddressNotAvailableError.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsRequest.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsResponse.java
-src/main/java/com/fireblocks/sdk/model/AddressRegistryError.java
+src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipRequest.java
+src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipResponse.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryGetVaultOptOutResponse.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryLegalEntity.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryListVaultOptOutsResponse.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryRemoveAllVaultOptOutsResponse.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryRemoveVaultOptOutResponse.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryTenantRegistryResponse.java
-src/main/java/com/fireblocks/sdk/model/AddressRegistryTravelRuleProvider.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryVaultListOrder.java
src/main/java/com/fireblocks/sdk/model/AddressRegistryVaultOptOutItem.java
+src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipRequest.java
+src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipResponse.java
src/main/java/com/fireblocks/sdk/model/AddressReverseLookupResponse.java
src/main/java/com/fireblocks/sdk/model/AddressesFilters.java
src/main/java/com/fireblocks/sdk/model/AlertExposureTypeEnum.java
@@ -1622,11 +1650,17 @@ src/main/java/com/fireblocks/sdk/model/CantonCall.java
src/main/java/com/fireblocks/sdk/model/CantonCallAllocationWithdraw.java
src/main/java/com/fireblocks/sdk/model/CantonCallAllowListAdd.java
src/main/java/com/fireblocks/sdk/model/CantonCallAllowListRemove.java
+src/main/java/com/fireblocks/sdk/model/CantonCallDetails.java
src/main/java/com/fireblocks/sdk/model/CantonCallEndInvestorInvite.java
src/main/java/com/fireblocks/sdk/model/CantonCallEndInvestorInviteCancel.java
src/main/java/com/fireblocks/sdk/model/CantonCallEndInvestorOffboard.java
src/main/java/com/fireblocks/sdk/model/CantonCallParticipantOnboarding.java
src/main/java/com/fireblocks/sdk/model/CantonCallTransferWithdraw.java
+src/main/java/com/fireblocks/sdk/model/CantonDetails.java
+src/main/java/com/fireblocks/sdk/model/CantonDomainEnum.java
+src/main/java/com/fireblocks/sdk/model/CantonOfferResponseDetails.java
+src/main/java/com/fireblocks/sdk/model/CantonSettlementDetails.java
+src/main/java/com/fireblocks/sdk/model/CantonVendorEnum.java
src/main/java/com/fireblocks/sdk/model/ChainDescriptor.java
src/main/java/com/fireblocks/sdk/model/ChainInfoResponse.java
src/main/java/com/fireblocks/sdk/model/ChannelDvnConfigWithConfirmations.java
@@ -1770,6 +1804,7 @@ src/main/java/com/fireblocks/sdk/model/CreateVaultAccountConnectionRequest.java
src/main/java/com/fireblocks/sdk/model/CreateVaultAccountRequest.java
src/main/java/com/fireblocks/sdk/model/CreateVaultAssetResponse.java
src/main/java/com/fireblocks/sdk/model/CreateWalletRequest.java
+src/main/java/com/fireblocks/sdk/model/CreateWebhookMtlsConfigRequest.java
src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java
src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java
src/main/java/com/fireblocks/sdk/model/CreateWorkflowExecutionRequestParamsInner.java
@@ -1784,6 +1819,7 @@ src/main/java/com/fireblocks/sdk/model/DelegationBlockchainPositionInfo.java
src/main/java/com/fireblocks/sdk/model/DelegationSummary.java
src/main/java/com/fireblocks/sdk/model/DeleteNetworkConnectionResponse.java
src/main/java/com/fireblocks/sdk/model/DeleteNetworkIdResponse.java
+src/main/java/com/fireblocks/sdk/model/DeleteWebhookMtlsConfigResponse.java
src/main/java/com/fireblocks/sdk/model/DeleteWebhookOauthResponse.java
src/main/java/com/fireblocks/sdk/model/DeployLayerZeroAdaptersRequest.java
src/main/java/com/fireblocks/sdk/model/DeployableAddressResponse.java
@@ -1831,6 +1867,7 @@ src/main/java/com/fireblocks/sdk/model/EarnCurator.java
src/main/java/com/fireblocks/sdk/model/EarnMetadata.java
src/main/java/com/fireblocks/sdk/model/EarnProvider.java
src/main/java/com/fireblocks/sdk/model/EditGasStationConfigurationResponse.java
+src/main/java/com/fireblocks/sdk/model/EffectiveUtxoSelectionConfig.java
src/main/java/com/fireblocks/sdk/model/EmbeddedWallet.java
src/main/java/com/fireblocks/sdk/model/EmbeddedWalletAccount.java
src/main/java/com/fireblocks/sdk/model/EmbeddedWalletAddressDetails.java
@@ -1909,6 +1946,7 @@ src/main/java/com/fireblocks/sdk/model/FiatTransfer.java
src/main/java/com/fireblocks/sdk/model/FixedAmountTypeEnum.java
src/main/java/com/fireblocks/sdk/model/FixedFee.java
src/main/java/com/fireblocks/sdk/model/FlowDirection.java
+src/main/java/com/fireblocks/sdk/model/FokTimeInForce.java
src/main/java/com/fireblocks/sdk/model/FpsHkAddress.java
src/main/java/com/fireblocks/sdk/model/FpsHkDestination.java
src/main/java/com/fireblocks/sdk/model/FpsHkPaymentInfo.java
@@ -2025,6 +2063,10 @@ src/main/java/com/fireblocks/sdk/model/LegacyPublishResult.java
src/main/java/com/fireblocks/sdk/model/LegacySrcOrDestAttributesInner.java
src/main/java/com/fireblocks/sdk/model/LegalEntityRegistration.java
src/main/java/com/fireblocks/sdk/model/LeiStatus.java
+src/main/java/com/fireblocks/sdk/model/LimitExecutionRequestDetails.java
+src/main/java/com/fireblocks/sdk/model/LimitExecutionResponseDetails.java
+src/main/java/com/fireblocks/sdk/model/LimitTypeDetails.java
+src/main/java/com/fireblocks/sdk/model/LimitTypeEnum.java
src/main/java/com/fireblocks/sdk/model/LinkedTokensCount.java
src/main/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponse.java
src/main/java/com/fireblocks/sdk/model/ListApprovalsResponse.java
@@ -2184,6 +2226,8 @@ src/main/java/com/fireblocks/sdk/model/PolicyVerdictActionEnum2.java
src/main/java/com/fireblocks/sdk/model/Position.java
src/main/java/com/fireblocks/sdk/model/Position2.java
src/main/java/com/fireblocks/sdk/model/PositionRelatedTransaction.java
+src/main/java/com/fireblocks/sdk/model/PostTradeSettlement.java
+src/main/java/com/fireblocks/sdk/model/PostTradeSettlementType.java
src/main/java/com/fireblocks/sdk/model/PostalAddress.java
src/main/java/com/fireblocks/sdk/model/PreScreening.java
src/main/java/com/fireblocks/sdk/model/PrefundedSettlement.java
@@ -2660,10 +2704,12 @@ src/main/java/com/fireblocks/sdk/model/UpdateTagRequest.java
src/main/java/com/fireblocks/sdk/model/UpdateTokenOwnershipStatusDto.java
src/main/java/com/fireblocks/sdk/model/UpdateVaultAccountAssetAddressRequest.java
src/main/java/com/fireblocks/sdk/model/UpdateVaultAccountRequest.java
+src/main/java/com/fireblocks/sdk/model/UpdateWebhookMtlsConfigRequest.java
src/main/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequest.java
src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java
src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequest.java
src/main/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponse.java
+src/main/java/com/fireblocks/sdk/model/UpsertUtxoSelectionConfigRequest.java
src/main/java/com/fireblocks/sdk/model/UsWirePaymentInfo.java
src/main/java/com/fireblocks/sdk/model/UsdcGatewayWalletAsset.java
src/main/java/com/fireblocks/sdk/model/UsdcGatewayWalletInfoResponse.java
@@ -2680,9 +2726,15 @@ src/main/java/com/fireblocks/sdk/model/UtxoIdentifier.java
src/main/java/com/fireblocks/sdk/model/UtxoInput.java
src/main/java/com/fireblocks/sdk/model/UtxoInput2.java
src/main/java/com/fireblocks/sdk/model/UtxoInputSelection.java
+src/main/java/com/fireblocks/sdk/model/UtxoLabelFailure.java
+src/main/java/com/fireblocks/sdk/model/UtxoLabelsErrorResponse.java
src/main/java/com/fireblocks/sdk/model/UtxoOutput.java
+src/main/java/com/fireblocks/sdk/model/UtxoSelectionConfigEntry.java
+src/main/java/com/fireblocks/sdk/model/UtxoSelectionConfigResponse.java
+src/main/java/com/fireblocks/sdk/model/UtxoSelectionConfigSourceEnum.java
src/main/java/com/fireblocks/sdk/model/UtxoSelectionFilters.java
src/main/java/com/fireblocks/sdk/model/UtxoSelectionParams.java
+src/main/java/com/fireblocks/sdk/model/UtxoSelectionStrategyEnum.java
src/main/java/com/fireblocks/sdk/model/ValidateAddressResponse.java
src/main/java/com/fireblocks/sdk/model/ValidateLayerZeroChannelResponse.java
src/main/java/com/fireblocks/sdk/model/ValidationKeyDto.java
@@ -2706,7 +2758,7 @@ src/main/java/com/fireblocks/sdk/model/WalletAssetAdditionalInfo.java
src/main/java/com/fireblocks/sdk/model/Webhook.java
src/main/java/com/fireblocks/sdk/model/WebhookEvent.java
src/main/java/com/fireblocks/sdk/model/WebhookMetric.java
-src/main/java/com/fireblocks/sdk/model/WebhookMtls.java
+src/main/java/com/fireblocks/sdk/model/WebhookMtlsConfig.java
src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java
src/main/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithm.java
src/main/java/com/fireblocks/sdk/model/WebhookOauthCredentials.java
@@ -2736,7 +2788,7 @@ src/test/java/com/fireblocks/sdk/api/BlockchainsAssetsApiTest.java
src/test/java/com/fireblocks/sdk/api/ComplianceApiTest.java
src/test/java/com/fireblocks/sdk/api/ComplianceOrchestratorBetaApiTest.java
src/test/java/com/fireblocks/sdk/api/ComplianceScreeningConfigurationApiTest.java
-src/test/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApiTest.java
+src/test/java/com/fireblocks/sdk/api/ConnectedAccountsApiTest.java
src/test/java/com/fireblocks/sdk/api/ConsoleUserApiTest.java
src/test/java/com/fireblocks/sdk/api/ContactsApiTest.java
src/test/java/com/fireblocks/sdk/api/ContractInteractionsApiTest.java
@@ -2835,16 +2887,18 @@ src/test/java/com/fireblocks/sdk/model/AddressNotAvailableErrorTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsRequestTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInnerTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsResponseTest.java
-src/test/java/com/fireblocks/sdk/model/AddressRegistryErrorTest.java
+src/test/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipRequestTest.java
+src/test/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryGetVaultOptOutResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryLegalEntityTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryListVaultOptOutsResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryRemoveAllVaultOptOutsResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryRemoveVaultOptOutResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryTenantRegistryResponseTest.java
-src/test/java/com/fireblocks/sdk/model/AddressRegistryTravelRuleProviderTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryVaultListOrderTest.java
src/test/java/com/fireblocks/sdk/model/AddressRegistryVaultOptOutItemTest.java
+src/test/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipRequestTest.java
+src/test/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressReverseLookupResponseTest.java
src/test/java/com/fireblocks/sdk/model/AddressesFiltersTest.java
src/test/java/com/fireblocks/sdk/model/AlertExposureTypeEnumTest.java
@@ -2970,12 +3024,18 @@ src/test/java/com/fireblocks/sdk/model/CancelTransactionResponseTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallAllocationWithdrawTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallAllowListAddTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallAllowListRemoveTest.java
+src/test/java/com/fireblocks/sdk/model/CantonCallDetailsTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallEndInvestorInviteCancelTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallEndInvestorInviteTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallEndInvestorOffboardTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallParticipantOnboardingTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallTest.java
src/test/java/com/fireblocks/sdk/model/CantonCallTransferWithdrawTest.java
+src/test/java/com/fireblocks/sdk/model/CantonDetailsTest.java
+src/test/java/com/fireblocks/sdk/model/CantonDomainEnumTest.java
+src/test/java/com/fireblocks/sdk/model/CantonOfferResponseDetailsTest.java
+src/test/java/com/fireblocks/sdk/model/CantonSettlementDetailsTest.java
+src/test/java/com/fireblocks/sdk/model/CantonVendorEnumTest.java
src/test/java/com/fireblocks/sdk/model/ChainDescriptorTest.java
src/test/java/com/fireblocks/sdk/model/ChainInfoResponseTest.java
src/test/java/com/fireblocks/sdk/model/ChannelDvnConfigWithConfirmationsTest.java
@@ -3119,6 +3179,7 @@ src/test/java/com/fireblocks/sdk/model/CreateVaultAccountConnectionRequestTest.j
src/test/java/com/fireblocks/sdk/model/CreateVaultAccountRequestTest.java
src/test/java/com/fireblocks/sdk/model/CreateVaultAssetResponseTest.java
src/test/java/com/fireblocks/sdk/model/CreateWalletRequestTest.java
+src/test/java/com/fireblocks/sdk/model/CreateWebhookMtlsConfigRequestTest.java
src/test/java/com/fireblocks/sdk/model/CreateWebhookOauthRequestTest.java
src/test/java/com/fireblocks/sdk/model/CreateWebhookRequestTest.java
src/test/java/com/fireblocks/sdk/model/CreateWorkflowExecutionRequestParamsInnerTest.java
@@ -3133,6 +3194,7 @@ src/test/java/com/fireblocks/sdk/model/DelegationSummaryTest.java
src/test/java/com/fireblocks/sdk/model/DelegationTest.java
src/test/java/com/fireblocks/sdk/model/DeleteNetworkConnectionResponseTest.java
src/test/java/com/fireblocks/sdk/model/DeleteNetworkIdResponseTest.java
+src/test/java/com/fireblocks/sdk/model/DeleteWebhookMtlsConfigResponseTest.java
src/test/java/com/fireblocks/sdk/model/DeleteWebhookOauthResponseTest.java
src/test/java/com/fireblocks/sdk/model/DeployLayerZeroAdaptersRequestTest.java
src/test/java/com/fireblocks/sdk/model/DeployableAddressResponseTest.java
@@ -3180,6 +3242,7 @@ src/test/java/com/fireblocks/sdk/model/EarnCuratorTest.java
src/test/java/com/fireblocks/sdk/model/EarnMetadataTest.java
src/test/java/com/fireblocks/sdk/model/EarnProviderTest.java
src/test/java/com/fireblocks/sdk/model/EditGasStationConfigurationResponseTest.java
+src/test/java/com/fireblocks/sdk/model/EffectiveUtxoSelectionConfigTest.java
src/test/java/com/fireblocks/sdk/model/EmbeddedWalletAccountTest.java
src/test/java/com/fireblocks/sdk/model/EmbeddedWalletAddressDetailsTest.java
src/test/java/com/fireblocks/sdk/model/EmbeddedWalletAlgoritmTest.java
@@ -3258,6 +3321,7 @@ src/test/java/com/fireblocks/sdk/model/FiatTransferTest.java
src/test/java/com/fireblocks/sdk/model/FixedAmountTypeEnumTest.java
src/test/java/com/fireblocks/sdk/model/FixedFeeTest.java
src/test/java/com/fireblocks/sdk/model/FlowDirectionTest.java
+src/test/java/com/fireblocks/sdk/model/FokTimeInForceTest.java
src/test/java/com/fireblocks/sdk/model/FpsHkAddressTest.java
src/test/java/com/fireblocks/sdk/model/FpsHkDestinationTest.java
src/test/java/com/fireblocks/sdk/model/FpsHkPaymentInfoTest.java
@@ -3374,6 +3438,10 @@ src/test/java/com/fireblocks/sdk/model/LegacyPublishResultTest.java
src/test/java/com/fireblocks/sdk/model/LegacySrcOrDestAttributesInnerTest.java
src/test/java/com/fireblocks/sdk/model/LegalEntityRegistrationTest.java
src/test/java/com/fireblocks/sdk/model/LeiStatusTest.java
+src/test/java/com/fireblocks/sdk/model/LimitExecutionRequestDetailsTest.java
+src/test/java/com/fireblocks/sdk/model/LimitExecutionResponseDetailsTest.java
+src/test/java/com/fireblocks/sdk/model/LimitTypeDetailsTest.java
+src/test/java/com/fireblocks/sdk/model/LimitTypeEnumTest.java
src/test/java/com/fireblocks/sdk/model/LinkedTokensCountTest.java
src/test/java/com/fireblocks/sdk/model/ListApprovalApiKeysResponseTest.java
src/test/java/com/fireblocks/sdk/model/ListApprovalsResponseTest.java
@@ -3533,6 +3601,8 @@ src/test/java/com/fireblocks/sdk/model/PolicyVerdictActionEnumTest.java
src/test/java/com/fireblocks/sdk/model/Position2Test.java
src/test/java/com/fireblocks/sdk/model/PositionRelatedTransactionTest.java
src/test/java/com/fireblocks/sdk/model/PositionTest.java
+src/test/java/com/fireblocks/sdk/model/PostTradeSettlementTest.java
+src/test/java/com/fireblocks/sdk/model/PostTradeSettlementTypeTest.java
src/test/java/com/fireblocks/sdk/model/PostalAddressTest.java
src/test/java/com/fireblocks/sdk/model/PreScreeningTest.java
src/test/java/com/fireblocks/sdk/model/PrefundedSettlementTest.java
@@ -4009,10 +4079,12 @@ src/test/java/com/fireblocks/sdk/model/UpdateTagRequestTest.java
src/test/java/com/fireblocks/sdk/model/UpdateTokenOwnershipStatusDtoTest.java
src/test/java/com/fireblocks/sdk/model/UpdateVaultAccountAssetAddressRequestTest.java
src/test/java/com/fireblocks/sdk/model/UpdateVaultAccountRequestTest.java
+src/test/java/com/fireblocks/sdk/model/UpdateWebhookMtlsConfigRequestTest.java
src/test/java/com/fireblocks/sdk/model/UpdateWebhookOauthRequestTest.java
src/test/java/com/fireblocks/sdk/model/UpdateWebhookRequestTest.java
src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusRequestTest.java
src/test/java/com/fireblocks/sdk/model/UpdateWorkflowStatusResponseTest.java
+src/test/java/com/fireblocks/sdk/model/UpsertUtxoSelectionConfigRequestTest.java
src/test/java/com/fireblocks/sdk/model/UsWirePaymentInfoTest.java
src/test/java/com/fireblocks/sdk/model/UsdcGatewayWalletAssetTest.java
src/test/java/com/fireblocks/sdk/model/UsdcGatewayWalletInfoResponseTest.java
@@ -4029,9 +4101,15 @@ src/test/java/com/fireblocks/sdk/model/UtxoIdentifierTest.java
src/test/java/com/fireblocks/sdk/model/UtxoInput2Test.java
src/test/java/com/fireblocks/sdk/model/UtxoInputSelectionTest.java
src/test/java/com/fireblocks/sdk/model/UtxoInputTest.java
+src/test/java/com/fireblocks/sdk/model/UtxoLabelFailureTest.java
+src/test/java/com/fireblocks/sdk/model/UtxoLabelsErrorResponseTest.java
src/test/java/com/fireblocks/sdk/model/UtxoOutputTest.java
+src/test/java/com/fireblocks/sdk/model/UtxoSelectionConfigEntryTest.java
+src/test/java/com/fireblocks/sdk/model/UtxoSelectionConfigResponseTest.java
+src/test/java/com/fireblocks/sdk/model/UtxoSelectionConfigSourceEnumTest.java
src/test/java/com/fireblocks/sdk/model/UtxoSelectionFiltersTest.java
src/test/java/com/fireblocks/sdk/model/UtxoSelectionParamsTest.java
+src/test/java/com/fireblocks/sdk/model/UtxoSelectionStrategyEnumTest.java
src/test/java/com/fireblocks/sdk/model/ValidateAddressResponseTest.java
src/test/java/com/fireblocks/sdk/model/ValidateLayerZeroChannelResponseTest.java
src/test/java/com/fireblocks/sdk/model/ValidationKeyDtoTest.java
@@ -4054,9 +4132,9 @@ src/test/java/com/fireblocks/sdk/model/WalletAssetAdditionalInfoTest.java
src/test/java/com/fireblocks/sdk/model/WalletAssetTest.java
src/test/java/com/fireblocks/sdk/model/WebhookEventTest.java
src/test/java/com/fireblocks/sdk/model/WebhookMetricTest.java
+src/test/java/com/fireblocks/sdk/model/WebhookMtlsConfigTest.java
src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java
src/test/java/com/fireblocks/sdk/model/WebhookMtlsKeyAlgorithmTest.java
-src/test/java/com/fireblocks/sdk/model/WebhookMtlsTest.java
src/test/java/com/fireblocks/sdk/model/WebhookOauthCredentialsTest.java
src/test/java/com/fireblocks/sdk/model/WebhookPaginatedResponseTest.java
src/test/java/com/fireblocks/sdk/model/WebhookTest.java
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 04aae775..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,239 +0,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file.
-
-The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
-and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [v32.0.0](https://github.com/fireblocks/java-sdk/compare/v15.0.0...v32.0.0) - 2026-09-23
-
-### Merged
-
-- Generated SDK #2874610640 [`#158`](https://github.com/fireblocks/java-sdk/pull/158)
-
-## [v15.0.0](https://github.com/fireblocks/java-sdk/compare/v14.1.0...v15.0.0) - 2026-03-15
-
-### Merged
-
-- Generated SDK #3733 (major) [`#128`](https://github.com/fireblocks/java-sdk/pull/128)
-
-## [v14.1.0](https://github.com/fireblocks/java-sdk/compare/v14.0.0...v14.1.0) - 2026-02-26
-
-### Merged
-
-- Generated SDK #2167 [`#126`](https://github.com/fireblocks/java-sdk/pull/126)
-
-## [v14.0.0](https://github.com/fireblocks/java-sdk/compare/v13.0.0...v14.0.0) - 2026-02-03
-
-### Merged
-
-- Generated SDK #4746 [`#121`](https://github.com/fireblocks/java-sdk/pull/121)
-
-## [v13.0.0](https://github.com/fireblocks/java-sdk/compare/v12.1.3...v13.0.0) - 2025-11-13
-
-### Merged
-
-- Generated SDK #5834 [`#116`](https://github.com/fireblocks/java-sdk/pull/116)
-
-## [v12.1.3](https://github.com/fireblocks/java-sdk/compare/v12.1.2...v12.1.3) - 2025-10-22
-
-### Merged
-
-- Generated SDK #8293 [`#115`](https://github.com/fireblocks/java-sdk/pull/115)
-
-## [v12.1.2](https://github.com/fireblocks/java-sdk/compare/v12.1.1...v12.1.2) - 2025-09-29
-
-### Merged
-
-- Generated SDK #6061 [`#113`](https://github.com/fireblocks/java-sdk/pull/113)
-
-## [v12.1.1](https://github.com/fireblocks/java-sdk/compare/v12.1.0...v12.1.1) - 2025-09-10
-
-### Merged
-
-- Generated SDK #1410 [`#111`](https://github.com/fireblocks/java-sdk/pull/111)
-
-## [v12.1.0](https://github.com/fireblocks/java-sdk/compare/v12.0.0...v12.1.0) - 2025-09-09
-
-### Merged
-
-- Generated SDK #4521 [`#109`](https://github.com/fireblocks/java-sdk/pull/109)
-
-## [v12.0.0](https://github.com/fireblocks/java-sdk/compare/v11.2.0...v12.0.0) - 2025-09-01
-
-### Merged
-
-- Generated SDK #7741 [`#108`](https://github.com/fireblocks/java-sdk/pull/108)
-
-## [v11.2.0](https://github.com/fireblocks/java-sdk/compare/v11.1.0...v11.2.0) - 2025-08-21
-
-### Merged
-
-- Generated SDK #3302 [`#107`](https://github.com/fireblocks/java-sdk/pull/107)
-
-## [v11.1.0](https://github.com/fireblocks/java-sdk/compare/v11.0.0...v11.1.0) - 2025-08-11
-
-### Merged
-
-- Generated SDK #1782 [`#105`](https://github.com/fireblocks/java-sdk/pull/105)
-
-## [v11.0.0](https://github.com/fireblocks/java-sdk/compare/v10.4.0...v11.0.0) - 2025-07-15
-
-### Merged
-
-- Generated SDK #5610 [`#103`](https://github.com/fireblocks/java-sdk/pull/103)
-
-## [v10.4.0](https://github.com/fireblocks/java-sdk/compare/v10.3.0...v10.4.0) - 2025-06-29
-
-### Merged
-
-- Generated SDK #1492 [`#101`](https://github.com/fireblocks/java-sdk/pull/101)
-
-## [v10.3.0](https://github.com/fireblocks/java-sdk/compare/v10.2.0...v10.3.0) - 2025-06-18
-
-### Merged
-
-- Generated SDK #4009 [`#99`](https://github.com/fireblocks/java-sdk/pull/99)
-
-## [v10.2.0](https://github.com/fireblocks/java-sdk/compare/v10.1.1...v10.2.0) - 2025-06-04
-
-### Merged
-
-- Generated SDK #8912 [`#98`](https://github.com/fireblocks/java-sdk/pull/98)
-
-## [v10.1.1](https://github.com/fireblocks/java-sdk/compare/v10.1.0...v10.1.1) - 2025-05-18
-
-### Merged
-
-- Generated SDK #5019 [`#97`](https://github.com/fireblocks/java-sdk/pull/97)
-
-## [v10.1.0](https://github.com/fireblocks/java-sdk/compare/v10.0.2...v10.1.0) - 2025-05-07
-
-### Merged
-
-- Generated SDK #7076 [`#95`](https://github.com/fireblocks/java-sdk/pull/95)
-
-## [v10.0.2](https://github.com/fireblocks/java-sdk/compare/v10.0.1...v10.0.2) - 2025-04-20
-
-### Merged
-
-- Generated SDK #4794 [`#94`](https://github.com/fireblocks/java-sdk/pull/94)
-
-## [v10.0.1](https://github.com/fireblocks/java-sdk/compare/v10.0.0...v10.0.1) - 2025-04-07
-
-### Merged
-
-- Generated SDK #3065 [`#93`](https://github.com/fireblocks/java-sdk/pull/93)
-
-## [v10.0.0](https://github.com/fireblocks/java-sdk/compare/v9.0.0...v10.0.0) - 2025-03-30
-
-### Merged
-
-- Generated SDK #619 [`#90`](https://github.com/fireblocks/java-sdk/pull/90)
-
-## [v9.0.0](https://github.com/fireblocks/java-sdk/compare/v8.1.0...v9.0.0) - 2025-03-17
-
-### Merged
-
-- Generated SDK #645 [`#89`](https://github.com/fireblocks/java-sdk/pull/89)
-
-## [v8.1.0](https://github.com/fireblocks/java-sdk/compare/v8.0.1...v8.1.0) - 2025-02-24
-
-### Merged
-
-- Generated SDK #9833 [`#84`](https://github.com/fireblocks/java-sdk/pull/84)
-
-## [v8.0.1](https://github.com/fireblocks/java-sdk/compare/v8.0.0...v8.0.1) - 2025-02-12
-
-### Merged
-
-- Generated SDK #4262 [`#82`](https://github.com/fireblocks/java-sdk/pull/82)
-
-## [v8.0.0](https://github.com/fireblocks/java-sdk/compare/v7.0.0...v8.0.0) - 2025-02-02
-
-### Merged
-
-- Generated SDK #538 [`#80`](https://github.com/fireblocks/java-sdk/pull/80)
-
-## [v7.0.0](https://github.com/fireblocks/java-sdk/compare/v6.0.0...v7.0.0) - 2025-01-08
-
-### Merged
-
-- Generated SDK #8699 [`#77`](https://github.com/fireblocks/java-sdk/pull/77)
-
-## [v6.0.0](https://github.com/fireblocks/java-sdk/compare/v5.0.0...v6.0.0) - 2024-12-05
-
-### Merged
-
-- Generated SDK #1430 [`#73`](https://github.com/fireblocks/java-sdk/pull/73)
-
-## [v5.0.0](https://github.com/fireblocks/java-sdk/compare/v4.0.0...v5.0.0) - 2024-10-31
-
-### Merged
-
-- Generated SDK #5184 [`#71`](https://github.com/fireblocks/java-sdk/pull/71)
-
-## [v4.0.0](https://github.com/fireblocks/java-sdk/compare/v3.1.0...v4.0.0) - 2024-09-17
-
-### Merged
-
-- Generated SDK #237 [`#70`](https://github.com/fireblocks/java-sdk/pull/70)
-
-## [v3.1.0](https://github.com/fireblocks/java-sdk/compare/v3.0.0...v3.1.0) - 2024-07-25
-
-### Merged
-
-- Generated SDK #6749 [`#67`](https://github.com/fireblocks/java-sdk/pull/67)
-
-## [v3.0.0](https://github.com/fireblocks/java-sdk/compare/v2.1.0...v3.0.0) - 2024-07-17
-
-### Merged
-
-- Generated SDK #6152 [`#65`](https://github.com/fireblocks/java-sdk/pull/65)
-- Generated SDK #7984 [`#62`](https://github.com/fireblocks/java-sdk/pull/62)
-- Generated SDK #2873 [`#61`](https://github.com/fireblocks/java-sdk/pull/61)
-
-## [v2.1.0](https://github.com/fireblocks/java-sdk/compare/v2.0.1...v2.1.0) - 2024-06-04
-
-### Merged
-
-- Generated SDK for version COR-46191/fix_pipelines [`#24`](https://github.com/fireblocks/java-sdk/pull/24)
-- Generated SDK for version COR-46191/fix_pipelines [`#23`](https://github.com/fireblocks/java-sdk/pull/23)
-- Generated SDK for version COR-46191/fix_pipelines [`#22`](https://github.com/fireblocks/java-sdk/pull/22)
-- Generated SDK for version COR-46191/fix_pipelines [`#21`](https://github.com/fireblocks/java-sdk/pull/21)
-
-## [v2.0.1](https://github.com/fireblocks/java-sdk/compare/v2.0.0...v2.0.1) - 2024-06-04
-
-### Merged
-
-- Generated SDK for version COR-46191/fix_pipelines [`#20`](https://github.com/fireblocks/java-sdk/pull/20)
-
-## [v2.0.0](https://github.com/fireblocks/java-sdk/compare/v1.1.0...v2.0.0) - 2024-05-08
-
-### Merged
-
-- feat: add tokenization api [`#12`](https://github.com/fireblocks/java-sdk/pull/12)
-
-## [v1.1.0](https://github.com/fireblocks/java-sdk/compare/v1.0.1...v1.1.0) - 2024-04-17
-
-### Merged
-
-- feat: add cosigners beta api [`#11`](https://github.com/fireblocks/java-sdk/pull/11)
-- fix: fix readme doc headline [`#10`](https://github.com/fireblocks/java-sdk/pull/10)
-
-## [v1.0.1](https://github.com/fireblocks/java-sdk/compare/v1.0.0...v1.0.1) - 2024-04-07
-
-### Merged
-
-- Generated SDK for version v1.0.1 [`#9`](https://github.com/fireblocks/java-sdk/pull/9)
-
-## v1.0.0 - 2024-04-07
-
-### Merged
-
-- Generated SDK for version v1.0.0 GA [`#8`](https://github.com/fireblocks/java-sdk/pull/8)
-- v0.0.1-beta [`#6`](https://github.com/fireblocks/java-sdk/pull/6)
-- Update GitHub Actions workflows [`#5`](https://github.com/fireblocks/java-sdk/pull/5)
-- Generated #1189972817 [`#3`](https://github.com/fireblocks/java-sdk/pull/3)
-- Add installation instructions [`#2`](https://github.com/fireblocks/java-sdk/pull/2)
-- Added Idempotency & NCW headers support #6 [`#1`](https://github.com/fireblocks/java-sdk/pull/1)
diff --git a/README.md b/README.md
index 0cea5e02..bd0f32dc 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,7 @@ Add this dependency to your project's POM:
com.fireblocks.sdk
fireblocks-sdk
- 32.0.0
+ 0.0.0
compile
```
@@ -42,7 +42,7 @@ Add this dependency to your project's POM:
Add this dependency to your project's build file:
```groovy
-compile "com.fireblocks.sdk:fireblocks-sdk:32.0.0"
+compile "com.fireblocks.sdk:fireblocks-sdk:0.0.0"
```
### Others
@@ -55,7 +55,7 @@ mvn clean package
Then manually install the following JARs:
-- `target/fireblocks-sdk-32.0.0.jar`
+- `target/fireblocks-sdk-0.0.0.jar`
- `target/lib/*.jar`
@@ -173,6 +173,7 @@ Class | Method | HTTP request | Description
*ComplianceApi* | [**activateByorkConfig**](docs/ComplianceApi.md#activateByorkConfig) | **POST** /screening/byork/config/activate | Activate BYORK Light
*ComplianceApi* | [**addAddressRegistryVaultOptOuts**](docs/ComplianceApi.md#addAddressRegistryVaultOptOuts) | **POST** /address_registry/vaults | Add vault accounts to the address registry opt-out list
*ComplianceApi* | [**assignVaultsToLegalEntity**](docs/ComplianceApi.md#assignVaultsToLegalEntity) | **POST** /legal_entities/{legalEntityId}/vaults | Assign vault accounts to a legal entity
+*ComplianceApi* | [**createAddressRegistryProofOfOwnership**](docs/ComplianceApi.md#createAddressRegistryProofOfOwnership) | **POST** /address_registry/proof_of_ownership_exports | Create a Proof of Ownership PDF for an address
*ComplianceApi* | [**createCounterpartyGroup**](docs/ComplianceApi.md#createCounterpartyGroup) | **POST** /counterparty_groups | Create a counterparty group
*ComplianceApi* | [**deactivateArsConfig**](docs/ComplianceApi.md#deactivateArsConfig) | **POST** /screening/ars/config/deactivate | Deactivate ARS (Address Registry Screening)
*ComplianceApi* | [**deactivateByorkConfig**](docs/ComplianceApi.md#deactivateByorkConfig) | **POST** /screening/byork/config/deactivate | Deactivate BYORK Light
@@ -209,26 +210,28 @@ Class | Method | HTTP request | Description
*ComplianceApi* | [**updateLegalEntity**](docs/ComplianceApi.md#updateLegalEntity) | **PUT** /legal_entities/{legalEntityId} | Update legal entity
*ComplianceApi* | [**updateScreeningConfiguration**](docs/ComplianceApi.md#updateScreeningConfiguration) | **PUT** /screening/configurations | Tenant - Screening Configuration
*ComplianceApi* | [**updateTravelRuleConfig**](docs/ComplianceApi.md#updateTravelRuleConfig) | **PUT** /screening/travel_rule/policy_configuration | Update Travel Rule Configuration
+*ComplianceApi* | [**verifyAddressRegistryProofOfOwnership**](docs/ComplianceApi.md#verifyAddressRegistryProofOfOwnership) | **POST** /address_registry/proof_of_ownership_exports/verify | Verify a Proof of Ownership export
*ComplianceOrchestratorBetaApi* | [**getScreeningResult**](docs/ComplianceOrchestratorBetaApi.md#getScreeningResult) | **GET** /compliance/orchestrator/screenings/{screeningId} | Get a Compliance Orchestrator screening's result
*ComplianceOrchestratorBetaApi* | [**getWorkflow**](docs/ComplianceOrchestratorBetaApi.md#getWorkflow) | **GET** /compliance/orchestrator/workflows/{workflowId} | Get a Compliance Orchestrator workflow
*ComplianceOrchestratorBetaApi* | [**triggerScreening**](docs/ComplianceOrchestratorBetaApi.md#triggerScreening) | **POST** /compliance/orchestrator/screenings | Trigger a Compliance Orchestrator screening
*ComplianceOrchestratorBetaApi* | [**updateWorkflowStatus**](docs/ComplianceOrchestratorBetaApi.md#updateWorkflowStatus) | **PATCH** /compliance/orchestrator/workflows/{workflowId}/status | Update a Compliance Orchestrator workflow's status
*ComplianceScreeningConfigurationApi* | [**getAmlScreeningConfiguration**](docs/ComplianceScreeningConfigurationApi.md#getAmlScreeningConfiguration) | **GET** /screening/aml/policy_configuration | Get AML Screening Policy Configuration
*ComplianceScreeningConfigurationApi* | [**getScreeningConfiguration**](docs/ComplianceScreeningConfigurationApi.md#getScreeningConfiguration) | **GET** /screening/travel_rule/policy_configuration | Get Travel Rule Screening Policy Configuration
-*ConnectedAccountsBetaApi* | [**addConnectedAccount**](docs/ConnectedAccountsBetaApi.md#addConnectedAccount) | **POST** /connected_accounts | Add a connected account
-*ConnectedAccountsBetaApi* | [**disconnectConnectedAccount**](docs/ConnectedAccountsBetaApi.md#disconnectConnectedAccount) | **DELETE** /connected_accounts/{accountId} | Disconnect connected account
-*ConnectedAccountsBetaApi* | [**getConnectedAccount**](docs/ConnectedAccountsBetaApi.md#getConnectedAccount) | **GET** /connected_accounts/{accountId} | Get connected account
-*ConnectedAccountsBetaApi* | [**getConnectedAccountAllowlist**](docs/ConnectedAccountsBetaApi.md#getConnectedAccountAllowlist) | **GET** /connected_accounts/{accountId}/allowlist | Get allowlist for connected account
-*ConnectedAccountsBetaApi* | [**getConnectedAccountAllowlistEntry**](docs/ConnectedAccountsBetaApi.md#getConnectedAccountAllowlistEntry) | **GET** /connected_accounts/{accountId}/allowlist/{allowlistId} | Get a single allowlist entry for a connected account
-*ConnectedAccountsBetaApi* | [**getConnectedAccountBalances**](docs/ConnectedAccountsBetaApi.md#getConnectedAccountBalances) | **GET** /connected_accounts/{accountId}/balances | Get balances for an account
-*ConnectedAccountsBetaApi* | [**getConnectedAccountRates**](docs/ConnectedAccountsBetaApi.md#getConnectedAccountRates) | **GET** /connected_accounts/{accountId}/rates | Get exchange rates for an account
-*ConnectedAccountsBetaApi* | [**getConnectedAccountTradingPairs**](docs/ConnectedAccountsBetaApi.md#getConnectedAccountTradingPairs) | **GET** /connected_accounts/{accountId}/manifest/capabilities/trading/pairs | Get supported trading pairs for an account
-*ConnectedAccountsBetaApi* | [**getConnectedAccounts**](docs/ConnectedAccountsBetaApi.md#getConnectedAccounts) | **GET** /connected_accounts | Get connected accounts
-*ConnectedAccountsBetaApi* | [**getConnectedAccountsCredentialsPublicKey**](docs/ConnectedAccountsBetaApi.md#getConnectedAccountsCredentialsPublicKey) | **GET** /connected_accounts/credentials/public_key | Get public key to encrypt connected account credentials
-*ConnectedAccountsBetaApi* | [**renameConnectedAccount**](docs/ConnectedAccountsBetaApi.md#renameConnectedAccount) | **POST** /connected_accounts/{accountId}/rename | Rename Connected Account
-*ConnectedAccountsBetaApi* | [**syncConnectedAccountAllowlist**](docs/ConnectedAccountsBetaApi.md#syncConnectedAccountAllowlist) | **POST** /connected_accounts/{accountId}/allowlist/sync | Sync allowlist for connected account
-*ConnectedAccountsBetaApi* | [**updateConnectedAccountCredentials**](docs/ConnectedAccountsBetaApi.md#updateConnectedAccountCredentials) | **POST** /connected_accounts/{accountId}/credentials | Update connected account credentials
+*ConnectedAccountsApi* | [**addConnectedAccount**](docs/ConnectedAccountsApi.md#addConnectedAccount) | **POST** /connected_accounts | Add a connected account
+*ConnectedAccountsApi* | [**disconnectConnectedAccount**](docs/ConnectedAccountsApi.md#disconnectConnectedAccount) | **DELETE** /connected_accounts/{accountId} | Disconnect connected account
+*ConnectedAccountsApi* | [**getConnectedAccount**](docs/ConnectedAccountsApi.md#getConnectedAccount) | **GET** /connected_accounts/{accountId} | Get connected account
+*ConnectedAccountsApi* | [**getConnectedAccountAllowlist**](docs/ConnectedAccountsApi.md#getConnectedAccountAllowlist) | **GET** /connected_accounts/{accountId}/allowlist | Get allowlist for connected account
+*ConnectedAccountsApi* | [**getConnectedAccountAllowlistEntry**](docs/ConnectedAccountsApi.md#getConnectedAccountAllowlistEntry) | **GET** /connected_accounts/{accountId}/allowlist/{allowlistId} | Get a single allowlist entry for a connected account
+*ConnectedAccountsApi* | [**getConnectedAccountBalances**](docs/ConnectedAccountsApi.md#getConnectedAccountBalances) | **GET** /connected_accounts/{accountId}/balances | Get balances for an account
+*ConnectedAccountsApi* | [**getConnectedAccountRates**](docs/ConnectedAccountsApi.md#getConnectedAccountRates) | **GET** /connected_accounts/{accountId}/rates | Get exchange rates for an account
+*ConnectedAccountsApi* | [**getConnectedAccountTradingPairs**](docs/ConnectedAccountsApi.md#getConnectedAccountTradingPairs) | **GET** /connected_accounts/{accountId}/manifest/capabilities/trading/pairs | Get supported trading pairs for an account
+*ConnectedAccountsApi* | [**getConnectedAccounts**](docs/ConnectedAccountsApi.md#getConnectedAccounts) | **GET** /connected_accounts | Get connected accounts
+*ConnectedAccountsApi* | [**getConnectedAccountsCredentialsPublicKey**](docs/ConnectedAccountsApi.md#getConnectedAccountsCredentialsPublicKey) | **GET** /connected_accounts/credentials/public_key | Get public key to encrypt connected account credentials
+*ConnectedAccountsApi* | [**renameConnectedAccount**](docs/ConnectedAccountsApi.md#renameConnectedAccount) | **POST** /connected_accounts/{accountId}/rename | Rename Connected Account
+*ConnectedAccountsApi* | [**syncConnectedAccountAllowlist**](docs/ConnectedAccountsApi.md#syncConnectedAccountAllowlist) | **POST** /connected_accounts/{accountId}/allowlist/sync | Sync allowlist for connected account
+*ConnectedAccountsApi* | [**updateConnectedAccountCredentials**](docs/ConnectedAccountsApi.md#updateConnectedAccountCredentials) | **POST** /connected_accounts/{accountId}/credentials | Update connected account credentials
*ConsoleUserApi* | [**createConsoleUser**](docs/ConsoleUserApi.md#createConsoleUser) | **POST** /management/users | Create console user
+*ConsoleUserApi* | [**deleteConsoleUser**](docs/ConsoleUserApi.md#deleteConsoleUser) | **DELETE** /management/users/{id} | Request deletion of a console user
*ConsoleUserApi* | [**getConsoleUsers**](docs/ConsoleUserApi.md#getConsoleUsers) | **GET** /management/users | Get console users
*ContactsApi* | [**getContacts**](docs/ContactsApi.md#getContacts) | **GET** /contacts | List contacts
*ContractInteractionsApi* | [**decodeContractData**](docs/ContractInteractionsApi.md#decodeContractData) | **POST** /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/decode | Decode a function call data, error, or event log
@@ -543,8 +546,12 @@ Class | Method | HTTP request | Description
*UserGroupsBetaApi* | [**getUserGroups**](docs/UserGroupsBetaApi.md#getUserGroups) | **GET** /management/user_groups | List user groups
*UserGroupsBetaApi* | [**updateUserGroup**](docs/UserGroupsBetaApi.md#updateUserGroup) | **PUT** /management/user_groups/{groupId} | Update user group
*UsersApi* | [**getUsers**](docs/UsersApi.md#getUsers) | **GET** /users | List users
+*UtxoManagementBetaApi* | [**getUtxoSelectionConfig**](docs/UtxoManagementBetaApi.md#getUtxoSelectionConfig) | **GET** /utxo_management/selection_config | Get UTXO selection config
*UtxoManagementBetaApi* | [**getUtxos**](docs/UtxoManagementBetaApi.md#getUtxos) | **GET** /utxo_management/{vaultAccountId}/{assetId}/unspent_outputs | List unspent outputs (UTXOs)
+*UtxoManagementBetaApi* | [**getVaultAssetUtxoSelectionConfig**](docs/UtxoManagementBetaApi.md#getVaultAssetUtxoSelectionConfig) | **GET** /utxo_management/{vaultAccountId}/{assetId}/selection_config | Get vault and asset UTXO selection config
*UtxoManagementBetaApi* | [**updateUtxoLabels**](docs/UtxoManagementBetaApi.md#updateUtxoLabels) | **PATCH** /utxo_management/{vaultAccountId}/{assetId}/labels | Attach or detach labels to/from UTXOs
+*UtxoManagementBetaApi* | [**upsertUtxoSelectionConfig**](docs/UtxoManagementBetaApi.md#upsertUtxoSelectionConfig) | **PUT** /utxo_management/selection_config | Upsert UTXO selection config
+*UtxoManagementBetaApi* | [**upsertVaultAssetUtxoSelectionConfig**](docs/UtxoManagementBetaApi.md#upsertVaultAssetUtxoSelectionConfig) | **PUT** /utxo_management/{vaultAccountId}/{assetId}/selection_config | Upsert vault and asset UTXO selection config
*VaultsApi* | [**activateAssetForVaultAccount**](docs/VaultsApi.md#activateAssetForVaultAccount) | **POST** /vault/accounts/{vaultAccountId}/{assetId}/activate | Activate a wallet in a vault account
*VaultsApi* | [**activateUsdcGatewayWalletBeta**](docs/VaultsApi.md#activateUsdcGatewayWalletBeta) | **POST** /vault/accounts/{vaultAccountId}/usdc_gateway/activate | Activate a USDC Gateway wallet
*VaultsApi* | [**attachOrDetachTagsFromVaultAccounts**](docs/VaultsApi.md#attachOrDetachTagsFromVaultAccounts) | **POST** /vault/accounts/attached_tags | Attach or detach tags from vault accounts
@@ -590,8 +597,10 @@ Class | Method | HTTP request | Description
*WebhooksApi* | [**resendTransactionWebhooks**](docs/WebhooksApi.md#resendTransactionWebhooks) | **POST** /webhooks/resend/{txId} | Resend webhooks for a transaction by ID
*WebhooksApi* | [**resendWebhooks**](docs/WebhooksApi.md#resendWebhooks) | **POST** /webhooks/resend | Resend failed webhooks
*WebhooksV2Api* | [**createWebhook**](docs/WebhooksV2Api.md#createWebhook) | **POST** /webhooks | Create a new webhook
+*WebhooksV2Api* | [**createWebhookMtlsConfig**](docs/WebhooksV2Api.md#createWebhookMtlsConfig) | **POST** /webhooks_settings/mtls | Create an mTLS configuration
*WebhooksV2Api* | [**createWebhookOauth**](docs/WebhooksV2Api.md#createWebhookOauth) | **POST** /webhooks_settings/oauth | Create OAuth credentials
*WebhooksV2Api* | [**deleteWebhook**](docs/WebhooksV2Api.md#deleteWebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook
+*WebhooksV2Api* | [**deleteWebhookMtlsConfig**](docs/WebhooksV2Api.md#deleteWebhookMtlsConfig) | **DELETE** /webhooks_settings/mtls/{webhookMtlsId} | Delete an mTLS configuration
*WebhooksV2Api* | [**deleteWebhookOauth**](docs/WebhooksV2Api.md#deleteWebhookOauth) | **DELETE** /webhooks_settings/oauth/{webhookOauthId} | Delete OAuth credentials
*WebhooksV2Api* | [**getMetrics**](docs/WebhooksV2Api.md#getMetrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics
*WebhooksV2Api* | [**getMtlsCsr**](docs/WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks_settings/mtls_csr | Get mTLS CSR
@@ -601,6 +610,8 @@ Class | Method | HTTP request | Description
*WebhooksV2Api* | [**getResendByQueryJobStatus**](docs/WebhooksV2Api.md#getResendByQueryJobStatus) | **GET** /webhooks/{webhookId}/notifications/resend_by_query/jobs/{jobId} | Get resend by query job status
*WebhooksV2Api* | [**getResendJobStatus**](docs/WebhooksV2Api.md#getResendJobStatus) | **GET** /webhooks/{webhookId}/notifications/resend_failed/jobs/{jobId} | Get resend job status
*WebhooksV2Api* | [**getWebhook**](docs/WebhooksV2Api.md#getWebhook) | **GET** /webhooks/{webhookId} | Get webhook by id
+*WebhooksV2Api* | [**getWebhookMtlsConfig**](docs/WebhooksV2Api.md#getWebhookMtlsConfig) | **GET** /webhooks_settings/mtls/{webhookMtlsId} | Get an mTLS configuration by id
+*WebhooksV2Api* | [**getWebhookMtlsConfigs**](docs/WebhooksV2Api.md#getWebhookMtlsConfigs) | **GET** /webhooks_settings/mtls | List the uploaded mTLS configurations
*WebhooksV2Api* | [**getWebhookOauth**](docs/WebhooksV2Api.md#getWebhookOauth) | **GET** /webhooks_settings/oauth/{webhookOauthId} | Get OAuth credentials by id
*WebhooksV2Api* | [**getWebhookOauths**](docs/WebhooksV2Api.md#getWebhookOauths) | **GET** /webhooks_settings/oauth | Get all OAuth credentials
*WebhooksV2Api* | [**getWebhooks**](docs/WebhooksV2Api.md#getWebhooks) | **GET** /webhooks | Get all webhooks
@@ -609,6 +620,7 @@ Class | Method | HTTP request | Description
*WebhooksV2Api* | [**resendNotificationsByQuery**](docs/WebhooksV2Api.md#resendNotificationsByQuery) | **POST** /webhooks/{webhookId}/notifications/resend_by_query | Resend notifications by query
*WebhooksV2Api* | [**resendNotificationsByResourceId**](docs/WebhooksV2Api.md#resendNotificationsByResourceId) | **POST** /webhooks/{webhookId}/notifications/resend_by_resource | Resend notifications by resource Id
*WebhooksV2Api* | [**updateWebhook**](docs/WebhooksV2Api.md#updateWebhook) | **PATCH** /webhooks/{webhookId} | Update webhook
+*WebhooksV2Api* | [**updateWebhookMtlsConfig**](docs/WebhooksV2Api.md#updateWebhookMtlsConfig) | **PATCH** /webhooks_settings/mtls/{webhookMtlsId} | Update an mTLS configuration
*WebhooksV2Api* | [**updateWebhookOauth**](docs/WebhooksV2Api.md#updateWebhookOauth) | **PATCH** /webhooks_settings/oauth/{webhookOauthId} | Update OAuth credentials
*WhitelistIpAddressesApi* | [**getWhitelistIpAddresses**](docs/WhitelistIpAddressesApi.md#getWhitelistIpAddresses) | **GET** /management/api_users/{userId}/whitelist_ip_addresses | Get whitelisted ip addresses for an API Key
*WorkspaceApi* | [**getWorkspace**](docs/WorkspaceApi.md#getWorkspace) | **GET** /workspace | Get workspace
@@ -668,16 +680,18 @@ Class | Method | HTTP request | Description
- [AddressRegistryAddVaultOptOutsRequest](docs/AddressRegistryAddVaultOptOutsRequest.md)
- [AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner](docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md)
- [AddressRegistryAddVaultOptOutsResponse](docs/AddressRegistryAddVaultOptOutsResponse.md)
- - [AddressRegistryError](docs/AddressRegistryError.md)
+ - [AddressRegistryCreateProofOfOwnershipRequest](docs/AddressRegistryCreateProofOfOwnershipRequest.md)
+ - [AddressRegistryCreateProofOfOwnershipResponse](docs/AddressRegistryCreateProofOfOwnershipResponse.md)
- [AddressRegistryGetVaultOptOutResponse](docs/AddressRegistryGetVaultOptOutResponse.md)
- [AddressRegistryLegalEntity](docs/AddressRegistryLegalEntity.md)
- [AddressRegistryListVaultOptOutsResponse](docs/AddressRegistryListVaultOptOutsResponse.md)
- [AddressRegistryRemoveAllVaultOptOutsResponse](docs/AddressRegistryRemoveAllVaultOptOutsResponse.md)
- [AddressRegistryRemoveVaultOptOutResponse](docs/AddressRegistryRemoveVaultOptOutResponse.md)
- [AddressRegistryTenantRegistryResponse](docs/AddressRegistryTenantRegistryResponse.md)
- - [AddressRegistryTravelRuleProvider](docs/AddressRegistryTravelRuleProvider.md)
- [AddressRegistryVaultListOrder](docs/AddressRegistryVaultListOrder.md)
- [AddressRegistryVaultOptOutItem](docs/AddressRegistryVaultOptOutItem.md)
+ - [AddressRegistryVerifyProofOfOwnershipRequest](docs/AddressRegistryVerifyProofOfOwnershipRequest.md)
+ - [AddressRegistryVerifyProofOfOwnershipResponse](docs/AddressRegistryVerifyProofOfOwnershipResponse.md)
- [AddressReverseLookupResponse](docs/AddressReverseLookupResponse.md)
- [AddressesFilters](docs/AddressesFilters.md)
- [AlertExposureTypeEnum](docs/AlertExposureTypeEnum.md)
@@ -804,11 +818,17 @@ Class | Method | HTTP request | Description
- [CantonCallAllocationWithdraw](docs/CantonCallAllocationWithdraw.md)
- [CantonCallAllowListAdd](docs/CantonCallAllowListAdd.md)
- [CantonCallAllowListRemove](docs/CantonCallAllowListRemove.md)
+ - [CantonCallDetails](docs/CantonCallDetails.md)
- [CantonCallEndInvestorInvite](docs/CantonCallEndInvestorInvite.md)
- [CantonCallEndInvestorInviteCancel](docs/CantonCallEndInvestorInviteCancel.md)
- [CantonCallEndInvestorOffboard](docs/CantonCallEndInvestorOffboard.md)
- [CantonCallParticipantOnboarding](docs/CantonCallParticipantOnboarding.md)
- [CantonCallTransferWithdraw](docs/CantonCallTransferWithdraw.md)
+ - [CantonDetails](docs/CantonDetails.md)
+ - [CantonDomainEnum](docs/CantonDomainEnum.md)
+ - [CantonOfferResponseDetails](docs/CantonOfferResponseDetails.md)
+ - [CantonSettlementDetails](docs/CantonSettlementDetails.md)
+ - [CantonVendorEnum](docs/CantonVendorEnum.md)
- [ChainDescriptor](docs/ChainDescriptor.md)
- [ChainInfoResponse](docs/ChainInfoResponse.md)
- [ChannelDvnConfigWithConfirmations](docs/ChannelDvnConfigWithConfirmations.md)
@@ -952,6 +972,7 @@ Class | Method | HTTP request | Description
- [CreateVaultAccountRequest](docs/CreateVaultAccountRequest.md)
- [CreateVaultAssetResponse](docs/CreateVaultAssetResponse.md)
- [CreateWalletRequest](docs/CreateWalletRequest.md)
+ - [CreateWebhookMtlsConfigRequest](docs/CreateWebhookMtlsConfigRequest.md)
- [CreateWebhookOauthRequest](docs/CreateWebhookOauthRequest.md)
- [CreateWebhookRequest](docs/CreateWebhookRequest.md)
- [CreateWorkflowExecutionRequestParamsInner](docs/CreateWorkflowExecutionRequestParamsInner.md)
@@ -966,6 +987,7 @@ Class | Method | HTTP request | Description
- [DelegationSummary](docs/DelegationSummary.md)
- [DeleteNetworkConnectionResponse](docs/DeleteNetworkConnectionResponse.md)
- [DeleteNetworkIdResponse](docs/DeleteNetworkIdResponse.md)
+ - [DeleteWebhookMtlsConfigResponse](docs/DeleteWebhookMtlsConfigResponse.md)
- [DeleteWebhookOauthResponse](docs/DeleteWebhookOauthResponse.md)
- [DeployLayerZeroAdaptersRequest](docs/DeployLayerZeroAdaptersRequest.md)
- [DeployableAddressResponse](docs/DeployableAddressResponse.md)
@@ -1013,6 +1035,7 @@ Class | Method | HTTP request | Description
- [EarnMetadata](docs/EarnMetadata.md)
- [EarnProvider](docs/EarnProvider.md)
- [EditGasStationConfigurationResponse](docs/EditGasStationConfigurationResponse.md)
+ - [EffectiveUtxoSelectionConfig](docs/EffectiveUtxoSelectionConfig.md)
- [EmbeddedWallet](docs/EmbeddedWallet.md)
- [EmbeddedWalletAccount](docs/EmbeddedWalletAccount.md)
- [EmbeddedWalletAddressDetails](docs/EmbeddedWalletAddressDetails.md)
@@ -1091,6 +1114,7 @@ Class | Method | HTTP request | Description
- [FixedAmountTypeEnum](docs/FixedAmountTypeEnum.md)
- [FixedFee](docs/FixedFee.md)
- [FlowDirection](docs/FlowDirection.md)
+ - [FokTimeInForce](docs/FokTimeInForce.md)
- [FpsHkAddress](docs/FpsHkAddress.md)
- [FpsHkDestination](docs/FpsHkDestination.md)
- [FpsHkPaymentInfo](docs/FpsHkPaymentInfo.md)
@@ -1207,6 +1231,10 @@ Class | Method | HTTP request | Description
- [LegacySrcOrDestAttributesInner](docs/LegacySrcOrDestAttributesInner.md)
- [LegalEntityRegistration](docs/LegalEntityRegistration.md)
- [LeiStatus](docs/LeiStatus.md)
+ - [LimitExecutionRequestDetails](docs/LimitExecutionRequestDetails.md)
+ - [LimitExecutionResponseDetails](docs/LimitExecutionResponseDetails.md)
+ - [LimitTypeDetails](docs/LimitTypeDetails.md)
+ - [LimitTypeEnum](docs/LimitTypeEnum.md)
- [LinkedTokensCount](docs/LinkedTokensCount.md)
- [ListApprovalApiKeysResponse](docs/ListApprovalApiKeysResponse.md)
- [ListApprovalsResponse](docs/ListApprovalsResponse.md)
@@ -1366,6 +1394,8 @@ Class | Method | HTTP request | Description
- [Position](docs/Position.md)
- [Position2](docs/Position2.md)
- [PositionRelatedTransaction](docs/PositionRelatedTransaction.md)
+ - [PostTradeSettlement](docs/PostTradeSettlement.md)
+ - [PostTradeSettlementType](docs/PostTradeSettlementType.md)
- [PostalAddress](docs/PostalAddress.md)
- [PreScreening](docs/PreScreening.md)
- [PrefundedSettlement](docs/PrefundedSettlement.md)
@@ -1842,10 +1872,12 @@ Class | Method | HTTP request | Description
- [UpdateTokenOwnershipStatusDto](docs/UpdateTokenOwnershipStatusDto.md)
- [UpdateVaultAccountAssetAddressRequest](docs/UpdateVaultAccountAssetAddressRequest.md)
- [UpdateVaultAccountRequest](docs/UpdateVaultAccountRequest.md)
+ - [UpdateWebhookMtlsConfigRequest](docs/UpdateWebhookMtlsConfigRequest.md)
- [UpdateWebhookOauthRequest](docs/UpdateWebhookOauthRequest.md)
- [UpdateWebhookRequest](docs/UpdateWebhookRequest.md)
- [UpdateWorkflowStatusRequest](docs/UpdateWorkflowStatusRequest.md)
- [UpdateWorkflowStatusResponse](docs/UpdateWorkflowStatusResponse.md)
+ - [UpsertUtxoSelectionConfigRequest](docs/UpsertUtxoSelectionConfigRequest.md)
- [UsWirePaymentInfo](docs/UsWirePaymentInfo.md)
- [UsdcGatewayWalletAsset](docs/UsdcGatewayWalletAsset.md)
- [UsdcGatewayWalletInfoResponse](docs/UsdcGatewayWalletInfoResponse.md)
@@ -1862,9 +1894,15 @@ Class | Method | HTTP request | Description
- [UtxoInput](docs/UtxoInput.md)
- [UtxoInput2](docs/UtxoInput2.md)
- [UtxoInputSelection](docs/UtxoInputSelection.md)
+ - [UtxoLabelFailure](docs/UtxoLabelFailure.md)
+ - [UtxoLabelsErrorResponse](docs/UtxoLabelsErrorResponse.md)
- [UtxoOutput](docs/UtxoOutput.md)
+ - [UtxoSelectionConfigEntry](docs/UtxoSelectionConfigEntry.md)
+ - [UtxoSelectionConfigResponse](docs/UtxoSelectionConfigResponse.md)
+ - [UtxoSelectionConfigSourceEnum](docs/UtxoSelectionConfigSourceEnum.md)
- [UtxoSelectionFilters](docs/UtxoSelectionFilters.md)
- [UtxoSelectionParams](docs/UtxoSelectionParams.md)
+ - [UtxoSelectionStrategyEnum](docs/UtxoSelectionStrategyEnum.md)
- [ValidateAddressResponse](docs/ValidateAddressResponse.md)
- [ValidateLayerZeroChannelResponse](docs/ValidateLayerZeroChannelResponse.md)
- [ValidationKeyDto](docs/ValidationKeyDto.md)
@@ -1888,7 +1926,7 @@ Class | Method | HTTP request | Description
- [Webhook](docs/Webhook.md)
- [WebhookEvent](docs/WebhookEvent.md)
- [WebhookMetric](docs/WebhookMetric.md)
- - [WebhookMtls](docs/WebhookMtls.md)
+ - [WebhookMtlsConfig](docs/WebhookMtlsConfig.md)
- [WebhookMtlsCsrResponse](docs/WebhookMtlsCsrResponse.md)
- [WebhookMtlsKeyAlgorithm](docs/WebhookMtlsKeyAlgorithm.md)
- [WebhookOauthCredentials](docs/WebhookOauthCredentials.md)
diff --git a/api/openapi.yaml b/api/openapi.yaml
index f4457d5f..1e7ede32 100644
--- a/api/openapi.yaml
+++ b/api/openapi.yaml
@@ -2549,7 +2549,9 @@ paths:
description: |-
Submits one Canton call. `type` names the call and selects the shape of `payload`.
An unknown or missing `type`, or a `payload` missing a required field, is a `400`. A field that does not belong to the selected `type` is ignored rather than rejected.
- Four types are specified but not available in v1 and return `501`: `DTCC_END_INVESTOR_INVITE_CANCEL`, `DTCC_END_INVESTOR_OFFBOARD`, `DTCC_ALLOW_LIST_ADD`, `DTCC_ALLOW_LIST_REMOVE`. `TRANSFER_WITHDRAW` has no owning service at all.
+ A `501` has two different causes, and the distinction is permanent rather than a build-order detail, so it belongs in the published spec:
+ NO CANTON CAPABILITY — specified so the contract is complete, but not available in v1: `DTCC_END_INVESTOR_INVITE_CANCEL`, `DTCC_END_INVESTOR_OFFBOARD`, `DTCC_ALLOW_LIST_ADD`, `DTCC_ALLOW_LIST_REMOVE`. `TRANSFER_WITHDRAW` has no owning service at all. NO HANDLER YET — the capability exists and the type is being wired one slice at a time.
+ `ALLOCATION_WITHDRAW` is implemented and answers `201` / `400` / `404` / `409`.
operationId: createCantonCall
parameters:
- description: "A unique identifier for the request. If the request is sent\
@@ -2631,9 +2633,9 @@ paths:
/operations/canton/offers/{offerId}/responses:
post:
description: |-
- ONE endpoint for every offer domain. Two layers of discrimination, nested: `domain` selects `response`, and inside `response` the `responseType` selects the variant. Both layers are closed, so an onboarding response type sent under `domain: ALLOCATIONS` is a `400`.
+ ONE endpoint for every offer domain. Two layers of discrimination, nested: `domain` selects `response`, and inside `response` the `responseType` selects the variant. Both layers are closed, so an onboarding response type sent under `domain: ALLOCATION` is a `400`.
{"domain":"ONBOARDING","response":{"responseType":"DTCC_…_REJECT","reason":"KYC"}}
- `domain: TRANSFERS` is declared so the endpoint covers every offer domain. Transfer responses are not available yet — the domain is part of the contract, not of v1's behaviour.
+ `domain: TRANSFER` is declared so the endpoint covers every offer domain. Transfer responses are not available yet — the domain is part of the contract, not of v1's behaviour.
operationId: respondToCantonOffer
parameters:
- description: The Fireblocks transaction id of the incoming offer being answered.
@@ -2697,8 +2699,8 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/ErrorSchema"
- description: "The responseType is not currently in availableResponses —\
- \ already answered, expired, or a response is in flight"
+ description: "The offer is not answerable — already answered, expired, or\
+ \ a response is in flight"
headers:
X-Request-ID:
$ref: "#/components/headers/X-Request-ID"
@@ -2751,12 +2753,20 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/AddressRegistryError"
- description: "Bad request — either request validation (path `{address}`\
- \ empty or whitespace-only after trim, e.g. encoded spaces only; numeric\
- \ code 4100), or the authenticated workspace is not opted in to the address\
- \ registry (numeric code 2140). The `message` field describes the failure;\
- \ use `code` to distinguish."
+ $ref: "#/components/schemas/ErrorSchema"
+ description: |
+ - `{address}` empty or whitespace-only after trim. Error code 4100.
+ - Workspace not opted in to the address registry. Error code 2140.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: This workspace is blocked from Address Registry public lookup.
+ Error code 2146.
headers:
X-Request-ID:
$ref: "#/components/headers/X-Request-ID"
@@ -2764,10 +2774,18 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/AddressRegistryError"
- description: "Not found (error code 2142) — unresolved address, no legal\
- \ entity for a resolved address, or the same not-found outcome in other\
- \ cases."
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Address not found, owner not opted in, or legal entity not\
+ \ usable for lookup. Error code 2142."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "429":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: Rate limited. Error code 2145. Retry-safe after backing off.
headers:
X-Request-ID:
$ref: "#/components/headers/X-Request-ID"
@@ -2801,6 +2819,218 @@ paths:
source: response = fireblocks.compliance.get_legal_entity_for_address(address);
x-accepts:
- application/json
+ /address_registry/proof_of_ownership_exports:
+ post:
+ description: |-
+ Creates a Proof of Ownership PDF for a blockchain address owned by the authenticated workspace — for example, to share with a counterparty or bank as compliance evidence. Recipients can confirm it with `POST /v1/address_registry/proof_of_ownership_exports/verify`.
+
+ Check `proofOfOwnershipAvailable` on `GET /v1/address_registry/legal_entities/{address}` first if you want to know whether create is likely to succeed.
+ operationId: createAddressRegistryProofOfOwnership
+ parameters:
+ - description: "A unique identifier for the request. If the request is sent\
+ \ multiple times with the same idempotency key, the server will return the\
+ \ same response as the first request. The idempotency key is valid for 24\
+ \ hours."
+ explode: false
+ in: header
+ name: Idempotency-Key
+ required: false
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AddressRegistryCreateProofOfOwnershipRequest"
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AddressRegistryCreateProofOfOwnershipResponse"
+ description: PDF export created
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: |
+ - Missing, empty, or whitespace-only `address`. Error code 4100.
+ - Workspace not opted in to the address registry. Error code 2140.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: This workspace is blocked from creating Proof of Ownership
+ exports. Error code 2146.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Address not found, not owned by this workspace, or not usable\
+ \ for export. Error code 2142."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "429":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: Rate limited. Error code 2145. Retry-safe after backing off.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "500":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: Internal error. No PDF is returned. Not retry-safe. Error code
+ 2143.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "503":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: Rate-limit infrastructure temporarily unavailable. Safe to
+ retry with backoff. Error code 2143 — same as the 500 case; use the HTTP
+ status to tell them apart.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Create a Proof of Ownership PDF for an address
+ tags:
+ - Compliance
+ x-rate-limit-category: high_compute
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.compliance.createAddressRegistryProofOfOwnership(complianceApiCreateAddressRegistryProofOfOwnershipRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture>\
+ \ response = fireblocks.compliance().createAddressRegistryProofOfOwnership(addressRegistryCreateProofOfOwnershipRequest,\
+ \ idempotencyKey);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.compliance.create_address_registry_proof_of_ownership(address_registry_create_proof_of_ownership_request,\
+ \ idempotency_key);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.compliance.createAddressRegistryProofOfOwnership(complianceApiCreateAddressRegistryProofOfOwnershipRequest);"
+ - lang: Java
+ source: "CompletableFuture>\
+ \ response = fireblocks.compliance().createAddressRegistryProofOfOwnership(addressRegistryCreateProofOfOwnershipRequest,\
+ \ idempotencyKey);"
+ - lang: Python
+ source: "response = fireblocks.compliance.create_address_registry_proof_of_ownership(address_registry_create_proof_of_ownership_request,\
+ \ idempotency_key);"
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /address_registry/proof_of_ownership_exports/verify:
+ post:
+ description: "Verifies a Proof of Ownership export against the record Fireblocks\
+ \ stored at creation. Returns `valid: false` (not 404) for an unknown, expired,\
+ \ or mismatched export. Available to any authenticated Fireblocks workspace,\
+ \ not just the export's original owner."
+ operationId: verifyAddressRegistryProofOfOwnership
+ parameters:
+ - description: "A unique identifier for the request. If the request is sent\
+ \ multiple times with the same idempotency key, the server will return the\
+ \ same response as the first request. The idempotency key is valid for 24\
+ \ hours."
+ explode: false
+ in: header
+ name: Idempotency-Key
+ required: false
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AddressRegistryVerifyProofOfOwnershipRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AddressRegistryVerifyProofOfOwnershipResponse"
+ description: Verification result
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Missing, empty, or whitespace-only `exportId`, `verificationHash`,\
+ \ or `address`, or `expiresAt` not empty and not a valid `YYYY-MM-DD`\
+ \ date. Error code 4100."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Verify a Proof of Ownership export
+ tags:
+ - Compliance
+ x-rate-limit-category: read
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.compliance.verifyAddressRegistryProofOfOwnership(complianceApiVerifyAddressRegistryProofOfOwnershipRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture>\
+ \ response = fireblocks.compliance().verifyAddressRegistryProofOfOwnership(addressRegistryVerifyProofOfOwnershipRequest,\
+ \ idempotencyKey);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.compliance.verify_address_registry_proof_of_ownership(address_registry_verify_proof_of_ownership_request,\
+ \ idempotency_key);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.compliance.verifyAddressRegistryProofOfOwnership(complianceApiVerifyAddressRegistryProofOfOwnershipRequest);"
+ - lang: Java
+ source: "CompletableFuture>\
+ \ response = fireblocks.compliance().verifyAddressRegistryProofOfOwnership(addressRegistryVerifyProofOfOwnershipRequest,\
+ \ idempotencyKey);"
+ - lang: Python
+ source: "response = fireblocks.compliance.verify_address_registry_proof_of_ownership(address_registry_verify_proof_of_ownership_request,\
+ \ idempotency_key);"
+ x-content-type: application/json
+ x-accepts:
+ - application/json
/address_registry/tenant:
delete:
description: Opts the workspace out. No request body. Response uses the same
@@ -3044,7 +3274,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/AddressRegistryError"
+ $ref: "#/components/schemas/ErrorSchema"
description: Validation error (e.g. invalid or malformed pageCursor)
headers:
X-Request-ID:
@@ -3119,7 +3349,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/AddressRegistryError"
+ $ref: "#/components/schemas/ErrorSchema"
description: Validation error (e.g. empty list or invalid vault ids)
headers:
X-Request-ID:
@@ -3192,7 +3422,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/AddressRegistryError"
+ $ref: "#/components/schemas/ErrorSchema"
description: Invalid path parameter (e.g. negative or out-of-range vault
account id)
headers:
@@ -3259,7 +3489,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/AddressRegistryError"
+ $ref: "#/components/schemas/ErrorSchema"
description: Invalid path parameter (e.g. negative or out-of-range vault
account id)
headers:
@@ -5857,8 +6087,6 @@ paths:
get:
description: |
Returns all connected accounts.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: getConnectedAccounts
parameters:
- description: Whether to include only main accounts in the response.
@@ -5902,33 +6130,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Get connected accounts
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: query
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccounts(connectedAccountsBetaApiGetConnectedAccountsRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccounts(connectedAccountsApiGetConnectedAccountsRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().getConnectedAccounts(mainAccounts,\
+ \ = fireblocks.connectedAccounts().getConnectedAccounts(mainAccounts,\
\ pageSize, pageCursor);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.get_connected_accounts(main_accounts,\
+ code: "response = fireblocks.connected_accounts.get_connected_accounts(main_accounts,\
\ page_size, page_cursor);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccounts(connectedAccountsBetaApiGetConnectedAccountsRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccounts(connectedAccountsApiGetConnectedAccountsRequest);"
- lang: Java
source: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().getConnectedAccounts(mainAccounts,\
- \ pageSize, pageCursor);"
+ \ = fireblocks.connectedAccounts().getConnectedAccounts(mainAccounts, pageSize,\
+ \ pageCursor);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.get_connected_accounts(main_accounts,\
+ source: "response = fireblocks.connected_accounts.get_connected_accounts(main_accounts,\
\ page_size, page_cursor);"
x-accepts:
- application/json
@@ -5942,8 +6170,6 @@ paths:
The `providerType` is derived server-side from the `providerId` — callers do not supply it.
Endpoint Permission: Editor, Admin, Non-Signing Admin.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: addConnectedAccount
parameters:
- description: "A unique identifier for the request. If the request is sent\
@@ -6023,33 +6249,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Add a connected account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: write
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.addConnectedAccount(connectedAccountsBetaApiAddConnectedAccountRequest);"
+ \ = fireblocks.connectedAccounts.addConnectedAccount(connectedAccountsApiAddConnectedAccountRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().addConnectedAccount(addConnectedAccountRequest,\
+ \ = fireblocks.connectedAccounts().addConnectedAccount(addConnectedAccountRequest,\
\ idempotencyKey);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.add_connected_account(add_connected_account_request,\
+ code: "response = fireblocks.connected_accounts.add_connected_account(add_connected_account_request,\
\ idempotency_key);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.addConnectedAccount(connectedAccountsBetaApiAddConnectedAccountRequest);"
+ \ = fireblocks.connectedAccounts.addConnectedAccount(connectedAccountsApiAddConnectedAccountRequest);"
- lang: Java
source: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().addConnectedAccount(addConnectedAccountRequest,\
+ \ = fireblocks.connectedAccounts().addConnectedAccount(addConnectedAccountRequest,\
\ idempotencyKey);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.add_connected_account(add_connected_account_request,\
+ source: "response = fireblocks.connected_accounts.add_connected_account(add_connected_account_request,\
\ idempotency_key);"
x-content-type: application/json
x-accepts:
@@ -6058,9 +6284,6 @@ paths:
delete:
description: |
Disconnect a connected account by ID.
-
- **Note**:
- - This endpoint is currently in beta and might be subject to changes.
operationId: disconnectConnectedAccount
parameters:
- description: The ID of the account to disconnect.
@@ -6082,33 +6305,31 @@ paths:
$ref: "#/components/responses/Error"
summary: Disconnect connected account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: write
x-readme:
code-samples:
- language: typescript
- code: "const response: Promise> = fireblocks.connectedAccountsBeta.disconnectConnectedAccount(connectedAccountsBetaApiDisconnectConnectedAccountRequest);"
+ code: "const response: Promise> = fireblocks.connectedAccounts.disconnectConnectedAccount(connectedAccountsApiDisconnectConnectedAccountRequest);"
name: Fireblocks SDK TypeScript example
- language: java
- code: CompletableFuture> response = fireblocks.connectedAccountsBeta().disconnectConnectedAccount(accountId);
+ code: CompletableFuture> response = fireblocks.connectedAccounts().disconnectConnectedAccount(accountId);
name: Fireblocks SDK Java example
- language: python
- code: response = fireblocks.connected_accounts_beta.disconnect_connected_account(account_id);
+ code: response = fireblocks.connected_accounts.disconnect_connected_account(account_id);
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
- source: "const response: Promise> = fireblocks.connectedAccountsBeta.disconnectConnectedAccount(connectedAccountsBetaApiDisconnectConnectedAccountRequest);"
+ source: "const response: Promise> = fireblocks.connectedAccounts.disconnectConnectedAccount(connectedAccountsApiDisconnectConnectedAccountRequest);"
- lang: Java
- source: CompletableFuture> response = fireblocks.connectedAccountsBeta().disconnectConnectedAccount(accountId);
+ source: CompletableFuture> response = fireblocks.connectedAccounts().disconnectConnectedAccount(accountId);
- lang: Python
- source: response = fireblocks.connected_accounts_beta.disconnect_connected_account(account_id);
+ source: response = fireblocks.connected_accounts.disconnect_connected_account(account_id);
x-accepts:
- application/json
get:
description: |
Retrieve detailed information about a specific connected account by ID.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: getConnectedAccount
parameters:
- description: The ID of the account to fetch.
@@ -6134,30 +6355,30 @@ paths:
$ref: "#/components/responses/Error"
summary: Get connected account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: read
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccount(connectedAccountsBetaApiGetConnectedAccountRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccount(connectedAccountsApiGetConnectedAccountRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: CompletableFuture> response
- = fireblocks.connectedAccountsBeta().getConnectedAccount(accountId);
+ = fireblocks.connectedAccounts().getConnectedAccount(accountId);
name: Fireblocks SDK Java example
- language: python
- code: response = fireblocks.connected_accounts_beta.get_connected_account(account_id);
+ code: response = fireblocks.connected_accounts.get_connected_account(account_id);
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccount(connectedAccountsBetaApiGetConnectedAccountRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccount(connectedAccountsApiGetConnectedAccountRequest);"
- lang: Java
source: CompletableFuture> response
- = fireblocks.connectedAccountsBeta().getConnectedAccount(accountId);
+ = fireblocks.connectedAccounts().getConnectedAccount(accountId);
- lang: Python
- source: response = fireblocks.connected_accounts_beta.get_connected_account(account_id);
+ source: response = fireblocks.connected_accounts.get_connected_account(account_id);
x-accepts:
- application/json
/connected_accounts/{accountId}/allowlist:
@@ -6165,7 +6386,7 @@ paths:
description: |
Retrieves the address allowlist for a specified connected account.
- **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
+ **Note:** Currently supports CoinbaseExchange/Binance accounts only.
operationId: getConnectedAccountAllowlist
parameters:
- description: The connected account identifier
@@ -6268,31 +6489,31 @@ paths:
$ref: "#/components/responses/Error"
summary: Get allowlist for connected account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: query
x-readme:
code-samples:
- language: typescript
code: "const response: Promise> =\
- \ fireblocks.connectedAccountsBeta.getConnectedAccountAllowlist(connectedAccountsBetaApiGetConnectedAccountAllowlistRequest);"
+ \ fireblocks.connectedAccounts.getConnectedAccountAllowlist(connectedAccountsApiGetConnectedAccountAllowlistRequest);"
name: Fireblocks SDK TypeScript example
- language: java
- code: "CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId,\
+ code: "CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountAllowlist(accountId,\
\ status, assetId, networkId, address, pageCursor, pageSize, order);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist(account_id,\
+ code: "response = fireblocks.connected_accounts.get_connected_account_allowlist(account_id,\
\ status, asset_id, network_id, address, page_cursor, page_size, order);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise> =\
- \ fireblocks.connectedAccountsBeta.getConnectedAccountAllowlist(connectedAccountsBetaApiGetConnectedAccountAllowlistRequest);"
+ \ fireblocks.connectedAccounts.getConnectedAccountAllowlist(connectedAccountsApiGetConnectedAccountAllowlistRequest);"
- lang: Java
- source: "CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId,\
+ source: "CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountAllowlist(accountId,\
\ status, assetId, networkId, address, pageCursor, pageSize, order);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist(account_id,\
+ source: "response = fireblocks.connected_accounts.get_connected_account_allowlist(account_id,\
\ status, asset_id, network_id, address, page_cursor, page_size, order);"
x-accepts:
- application/json
@@ -6301,7 +6522,7 @@ paths:
description: |
Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account.
- **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
+ **Note:** Currently supports CoinbaseExchange/Binance accounts only.
operationId: getConnectedAccountAllowlistEntry
parameters:
- description: The connected account identifier
@@ -6343,33 +6564,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Get a single allowlist entry for a connected account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: query
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlistEntry(connectedAccountsBetaApiGetConnectedAccountAllowlistEntryRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountAllowlistEntry(connectedAccountsApiGetConnectedAccountAllowlistEntryRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture> response =\
- \ fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId,\
+ \ fireblocks.connectedAccounts().getConnectedAccountAllowlistEntry(accountId,\
\ allowlistId);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist_entry(account_id,\
+ code: "response = fireblocks.connected_accounts.get_connected_account_allowlist_entry(account_id,\
\ allowlist_id);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlistEntry(connectedAccountsBetaApiGetConnectedAccountAllowlistEntryRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountAllowlistEntry(connectedAccountsApiGetConnectedAccountAllowlistEntryRequest);"
- lang: Java
source: "CompletableFuture> response =\
- \ fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId,\
+ \ fireblocks.connectedAccounts().getConnectedAccountAllowlistEntry(accountId,\
\ allowlistId);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist_entry(account_id,\
+ source: "response = fireblocks.connected_accounts.get_connected_account_allowlist_entry(account_id,\
\ allowlist_id);"
x-accepts:
- application/json
@@ -6380,7 +6601,7 @@ paths:
**Rate limit:** 1 request per minute per connected account.
- **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
+ **Note:** Currently supports CoinbaseExchange/Binance accounts only.
operationId: syncConnectedAccountAllowlist
parameters:
- description: "A unique identifier for the request. If the request is sent\
@@ -6412,29 +6633,29 @@ paths:
$ref: "#/components/responses/Error"
summary: Sync allowlist for connected account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: async
x-readme:
code-samples:
- language: typescript
- code: "const response: Promise> = fireblocks.connectedAccountsBeta.syncConnectedAccountAllowlist(connectedAccountsBetaApiSyncConnectedAccountAllowlistRequest);"
+ code: "const response: Promise> = fireblocks.connectedAccounts.syncConnectedAccountAllowlist(connectedAccountsApiSyncConnectedAccountAllowlistRequest);"
name: Fireblocks SDK TypeScript example
- language: java
- code: "CompletableFuture> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId,\
+ code: "CompletableFuture> response = fireblocks.connectedAccounts().syncConnectedAccountAllowlist(accountId,\
\ idempotencyKey);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.sync_connected_account_allowlist(account_id,\
+ code: "response = fireblocks.connected_accounts.sync_connected_account_allowlist(account_id,\
\ idempotency_key);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
- source: "const response: Promise> = fireblocks.connectedAccountsBeta.syncConnectedAccountAllowlist(connectedAccountsBetaApiSyncConnectedAccountAllowlistRequest);"
+ source: "const response: Promise> = fireblocks.connectedAccounts.syncConnectedAccountAllowlist(connectedAccountsApiSyncConnectedAccountAllowlistRequest);"
- lang: Java
- source: "CompletableFuture> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId,\
+ source: "CompletableFuture> response = fireblocks.connectedAccounts().syncConnectedAccountAllowlist(accountId,\
\ idempotencyKey);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.sync_connected_account_allowlist(account_id,\
+ source: "response = fireblocks.connected_accounts.sync_connected_account_allowlist(account_id,\
\ idempotency_key);"
x-accepts:
- application/json
@@ -6442,8 +6663,6 @@ paths:
get:
description: |
Retrieve current asset balances for a specific connected account as a flat list (one row per `assetId`, `balanceType`).
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: getConnectedAccountBalances
parameters:
- description: The ID of the account to fetch balances for.
@@ -6487,33 +6706,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Get balances for an account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: query
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountBalances(connectedAccountsBetaApiGetConnectedAccountBalancesRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountBalances(connectedAccountsApiGetConnectedAccountBalancesRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture>\
- \ response = fireblocks.connectedAccountsBeta().getConnectedAccountBalances(accountId,\
+ \ response = fireblocks.connectedAccounts().getConnectedAccountBalances(accountId,\
\ pageSize, pageCursor);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.get_connected_account_balances(account_id,\
+ code: "response = fireblocks.connected_accounts.get_connected_account_balances(account_id,\
\ page_size, page_cursor);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountBalances(connectedAccountsBetaApiGetConnectedAccountBalancesRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountBalances(connectedAccountsApiGetConnectedAccountBalancesRequest);"
- lang: Java
source: "CompletableFuture>\
- \ response = fireblocks.connectedAccountsBeta().getConnectedAccountBalances(accountId,\
+ \ response = fireblocks.connectedAccounts().getConnectedAccountBalances(accountId,\
\ pageSize, pageCursor);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.get_connected_account_balances(account_id,\
+ source: "response = fireblocks.connected_accounts.get_connected_account_balances(account_id,\
\ page_size, page_cursor);"
x-accepts:
- application/json
@@ -6534,8 +6753,6 @@ paths:
affected accounts are disconnected in the meantime.
Endpoint Permission: Admin, Non-Signing Admin.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: updateConnectedAccountCredentials
parameters:
- description: The unique identifier of the connected account whose API key
@@ -6613,33 +6830,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Update connected account credentials
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: write
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.updateConnectedAccountCredentials(connectedAccountsBetaApiUpdateConnectedAccountCredentialsRequest);"
+ \ = fireblocks.connectedAccounts.updateConnectedAccountCredentials(connectedAccountsApiUpdateConnectedAccountCredentialsRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture>\
- \ response = fireblocks.connectedAccountsBeta().updateConnectedAccountCredentials(updateConnectedAccountCredentialsRequest,\
+ \ response = fireblocks.connectedAccounts().updateConnectedAccountCredentials(updateConnectedAccountCredentialsRequest,\
\ accountId, idempotencyKey);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.update_connected_account_credentials(update_connected_account_credentials_request,\
+ code: "response = fireblocks.connected_accounts.update_connected_account_credentials(update_connected_account_credentials_request,\
\ account_id, idempotency_key);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.updateConnectedAccountCredentials(connectedAccountsBetaApiUpdateConnectedAccountCredentialsRequest);"
+ \ = fireblocks.connectedAccounts.updateConnectedAccountCredentials(connectedAccountsApiUpdateConnectedAccountCredentialsRequest);"
- lang: Java
source: "CompletableFuture>\
- \ response = fireblocks.connectedAccountsBeta().updateConnectedAccountCredentials(updateConnectedAccountCredentialsRequest,\
+ \ response = fireblocks.connectedAccounts().updateConnectedAccountCredentials(updateConnectedAccountCredentialsRequest,\
\ accountId, idempotencyKey);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.update_connected_account_credentials(update_connected_account_credentials_request,\
+ source: "response = fireblocks.connected_accounts.update_connected_account_credentials(update_connected_account_credentials_request,\
\ account_id, idempotency_key);"
x-content-type: application/json
x-accepts:
@@ -6648,8 +6865,6 @@ paths:
get:
description: |
Retrieve all asset trading pairs supported by a specific connected account, including the pair type (`quote`, `market`, `onOffRamp`).
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: getConnectedAccountTradingPairs
parameters:
- description: The ID of the account to fetch supported pairs for.
@@ -6694,33 +6909,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Get supported trading pairs for an account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: query
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountTradingPairs(connectedAccountsBetaApiGetConnectedAccountTradingPairsRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountTradingPairs(connectedAccountsApiGetConnectedAccountTradingPairsRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture>\
- \ response = fireblocks.connectedAccountsBeta().getConnectedAccountTradingPairs(accountId,\
+ \ response = fireblocks.connectedAccounts().getConnectedAccountTradingPairs(accountId,\
\ pageSize, pageCursor);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.get_connected_account_trading_pairs(account_id,\
+ code: "response = fireblocks.connected_accounts.get_connected_account_trading_pairs(account_id,\
\ page_size, page_cursor);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountTradingPairs(connectedAccountsBetaApiGetConnectedAccountTradingPairsRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountTradingPairs(connectedAccountsApiGetConnectedAccountTradingPairsRequest);"
- lang: Java
source: "CompletableFuture>\
- \ response = fireblocks.connectedAccountsBeta().getConnectedAccountTradingPairs(accountId,\
+ \ response = fireblocks.connectedAccounts().getConnectedAccountTradingPairs(accountId,\
\ pageSize, pageCursor);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.get_connected_account_trading_pairs(account_id,\
+ source: "response = fireblocks.connected_accounts.get_connected_account_trading_pairs(account_id,\
\ page_size, page_cursor);"
x-accepts:
- application/json
@@ -6728,8 +6943,6 @@ paths:
get:
description: |
Retrieve current exchange rates for converting between specific assets in a connected account.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: getConnectedAccountRates
parameters:
- description: The ID of the account to fetch rates for.
@@ -6773,33 +6986,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Get exchange rates for an account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: read
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountRates(connectedAccountsBetaApiGetConnectedAccountRatesRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountRates(connectedAccountsApiGetConnectedAccountRatesRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().getConnectedAccountRates(accountId,\
+ \ = fireblocks.connectedAccounts().getConnectedAccountRates(accountId,\
\ baseAssetId, quoteAssetId);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.get_connected_account_rates(account_id,\
+ code: "response = fireblocks.connected_accounts.get_connected_account_rates(account_id,\
\ base_asset_id, quote_asset_id);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountRates(connectedAccountsBetaApiGetConnectedAccountRatesRequest);"
+ \ = fireblocks.connectedAccounts.getConnectedAccountRates(connectedAccountsApiGetConnectedAccountRatesRequest);"
- lang: Java
source: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().getConnectedAccountRates(accountId,\
- \ baseAssetId, quoteAssetId);"
+ \ = fireblocks.connectedAccounts().getConnectedAccountRates(accountId, baseAssetId,\
+ \ quoteAssetId);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.get_connected_account_rates(account_id,\
+ source: "response = fireblocks.connected_accounts.get_connected_account_rates(account_id,\
\ base_asset_id, quote_asset_id);"
x-accepts:
- application/json
@@ -6807,8 +7020,6 @@ paths:
post:
description: |
Rename a connected account by account ID.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: renameConnectedAccount
parameters:
- description: The unique identifier of the connected account
@@ -6882,33 +7093,33 @@ paths:
$ref: "#/components/responses/Error"
summary: Rename Connected Account
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: write
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.renameConnectedAccount(connectedAccountsBetaApiRenameConnectedAccountRequest);"
+ \ = fireblocks.connectedAccounts.renameConnectedAccount(connectedAccountsApiRenameConnectedAccountRequest);"
name: Fireblocks SDK TypeScript example
- language: java
code: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().renameConnectedAccount(renameConnectedAccountRequest,\
+ \ = fireblocks.connectedAccounts().renameConnectedAccount(renameConnectedAccountRequest,\
\ accountId, idempotencyKey);"
name: Fireblocks SDK Java example
- language: python
- code: "response = fireblocks.connected_accounts_beta.rename_connected_account(rename_connected_account_request,\
+ code: "response = fireblocks.connected_accounts.rename_connected_account(rename_connected_account_request,\
\ account_id, idempotency_key);"
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.renameConnectedAccount(connectedAccountsBetaApiRenameConnectedAccountRequest);"
+ \ = fireblocks.connectedAccounts.renameConnectedAccount(connectedAccountsApiRenameConnectedAccountRequest);"
- lang: Java
source: "CompletableFuture> response\
- \ = fireblocks.connectedAccountsBeta().renameConnectedAccount(renameConnectedAccountRequest,\
+ \ = fireblocks.connectedAccounts().renameConnectedAccount(renameConnectedAccountRequest,\
\ accountId, idempotencyKey);"
- lang: Python
- source: "response = fireblocks.connected_accounts_beta.rename_connected_account(rename_connected_account_request,\
+ source: "response = fireblocks.connected_accounts.rename_connected_account(rename_connected_account_request,\
\ account_id, idempotency_key);"
x-content-type: application/json
x-accepts:
@@ -6919,8 +7130,6 @@ paths:
Returns the RSA public key used to encrypt the `creds` field before calling `POST /connected_accounts`.
The key is a singleton resource scoped to the connected-accounts credentials domain — there is one per tenant context.
-
- **Note:** This endpoint is currently in beta and might be subject to changes.
operationId: getConnectedAccountsCredentialsPublicKey
responses:
"200":
@@ -6936,30 +7145,30 @@ paths:
$ref: "#/components/responses/Error"
summary: Get public key to encrypt connected account credentials
tags:
- - Connected Accounts (Beta)
+ - Connected Accounts
x-rate-limit-category: read
x-readme:
code-samples:
- language: typescript
code: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountsCredentialsPublicKey();"
+ \ = fireblocks.connectedAccounts.getConnectedAccountsCredentialsPublicKey();"
name: Fireblocks SDK TypeScript example
- language: java
code: CompletableFuture>
- response = fireblocks.connectedAccountsBeta().getConnectedAccountsCredentialsPublicKey();
+ response = fireblocks.connectedAccounts().getConnectedAccountsCredentialsPublicKey();
name: Fireblocks SDK Java example
- language: python
- code: response = fireblocks.connected_accounts_beta.get_connected_accounts_credentials_public_key();
+ code: response = fireblocks.connected_accounts.get_connected_accounts_credentials_public_key();
name: Fireblocks SDK Python example
x-codeSamples:
- lang: TypeScript
source: "const response: Promise>\
- \ = fireblocks.connectedAccountsBeta.getConnectedAccountsCredentialsPublicKey();"
+ \ = fireblocks.connectedAccounts.getConnectedAccountsCredentialsPublicKey();"
- lang: Java
source: CompletableFuture>
- response = fireblocks.connectedAccountsBeta().getConnectedAccountsCredentialsPublicKey();
+ response = fireblocks.connectedAccounts().getConnectedAccountsCredentialsPublicKey();
- lang: Python
- source: response = fireblocks.connected_accounts_beta.get_connected_accounts_credentials_public_key();
+ source: response = fireblocks.connected_accounts.get_connected_accounts_credentials_public_key();
x-accepts:
- application/json
/management/users:
@@ -7145,6 +7354,144 @@ paths:
x-content-type: application/json
x-accepts:
- application/json
+ /management/users/{id}:
+ delete:
+ description: |-
+ Requests deletion of a console user. The request is asynchronous: it goes through the workspace's configured "Delete users" approval policy (Settings > Quorums), exactly as deleting a user from the console does, and the user is removed only once that approval completes.
+ - Track progress by polling GET /management/users; deletion is complete when the user is disabled.
+ - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
+ Endpoint Permission: Admin, Non-Signing Admin.
+ **Note:** This endpoint is currently in beta and might be subject to changes.
+ operationId: deleteConsoleUser
+ parameters:
+ - description: The ID of the console user to delete
+ explode: false
+ in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ style: simple
+ - description: "Acknowledges the impact of removing this user and proceeds anyway.\
+ \ Overrides both USER_REFERENCED_IN_TAP and QUORUM_INTEGRITY, the same way\
+ \ the acknowledgement checkbox does in the console."
+ explode: true
+ in: query
+ name: force
+ required: false
+ schema:
+ default: false
+ type: boolean
+ style: form
+ responses:
+ "202":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ConsoleUser"
+ description: Deletion request accepted. Returns the console user that will
+ be removed once the workspace's configured approval completes.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: Unauthorized. Missing / invalid JWT token in Authorization
+ header.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Lacking permissions, or the target cannot be deleted: the\
+ \ user is the workspace Owner, or the caller is the target."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Console user not found. Also returned for users in other workspaces\
+ \ and for API users, so the endpoint does not reveal whether an ID exists."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "409":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "PENDING_REQUEST_EXISTS - a deletion request for this user\
+ \ is already awaiting approval; USER_REFERENCED_IN_TAP - the user is referenced\
+ \ by the workspace transaction authorization policy (can be overridden\
+ \ with force=true); or USER_PENDING_ONBOARDING - the user has not completed\
+ \ onboarding, so there is nothing to delete yet. Revoke the invitation\
+ \ from the console instead."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "422":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "QUORUM_INTEGRITY - the user is required to complete the workspace's\
+ \ admin approval quorum. Can be overridden with force=true, matching the\
+ \ console's acknowledgement checkbox."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "5XX":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: Internal error.
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Request deletion of a console user
+ tags:
+ - Console User
+ x-rate-limit-category: write
+ x-lifecycle:
+ state: private_beta
+ feature_flag: management.ff.delete-console-user
+ x-readme:
+ code-samples:
+ - language: javascript
+ code: const res = await fireblocks.deleteConsoleUser(consoleUserId);
+ name: Fireblocks SDK Javascript example
+ - language: typescript
+ code: "const response: Promise> = fireblocks.consoleUser.deleteConsoleUser(consoleUserApiDeleteConsoleUserRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture> response = fireblocks.consoleUser().deleteConsoleUser(id,\
+ \ force);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.console_user.delete_console_user(id, force);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise> = fireblocks.consoleUser.deleteConsoleUser(consoleUserApiDeleteConsoleUserRequest);"
+ - lang: Java
+ source: "CompletableFuture> response = fireblocks.consoleUser().deleteConsoleUser(id,\
+ \ force);"
+ - lang: Python
+ source: "response = fireblocks.console_user.delete_console_user(id, force);"
+ x-accepts:
+ - application/json
/contacts:
get:
description: |
@@ -33311,10 +33658,30 @@ paths:
/utxo_management/{vaultAccountId}/{assetId}/labels:
patch:
description: |-
- Attach or detach labels to/from UTXOs in a vault account. Labels can be used for organizing and filtering UTXOs.
- Labels are applied additively — `labelsToAttach` adds to the existing label set and `labelsToDetach` removes from it. Neither operation replaces the full set.
- **Note:** These endpoints are currently in beta and might be subject to changes.
- Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
+ Attach or detach labels to/from UTXOs in a vault account. Labels can be
+ used for organizing and filtering UTXOs.
+
+ Labels are applied additively — `labelsToAttach` adds to the existing
+ label set and `labelsToDetach` removes from it. Neither operation
+ replaces the full set.
+
+ The request is all-or-nothing: if any identifier cannot be labelled, no
+ UTXO is labelled and the request fails with `400`. The response lists
+ every failed identifier in `failures`, each with its own `reason` — use
+ it, not the status, to decide what to do:
+ - `NOT_FOUND` — not found in this vault and asset.
+ - `NOT_LABELLABLE` — spent, or removed, and can no longer be labelled.
+
+ A UTXO removed within the last hour is reported as `NOT_FOUND` with
+ `utxoStatus: REMOVED`; if it does not reappear, it becomes
+ `NOT_LABELLABLE` after about an hour. A `400` without `failures` means
+ the request itself is malformed.
+
+ **Note:** These endpoints are currently in beta and might be subject to
+ changes.
+
+ Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver,
+ Editor.
operationId: updateUtxoLabels
parameters:
- description: The ID of the vault account
@@ -33363,6 +33730,16 @@ paths:
headers:
X-Request-ID:
$ref: "#/components/headers/X-Request-ID"
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UtxoLabelsErrorResponse"
+ description: "Some identifiers could not be labelled (listed in `failures`),\
+ \ or the request is malformed. No UTXO was labelled."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
default:
$ref: "#/components/responses/Error"
summary: Attach or detach labels to/from UTXOs
@@ -33398,6 +33775,161 @@ paths:
x-content-type: application/json
x-accepts:
- application/json
+ /utxo_management/{vaultAccountId}/{assetId}/selection_config:
+ get:
+ description: |-
+ Returns the config stored at this vault-and-asset scope, if any, and the effective strategy after workspace fallback and runtime resolution. `ADAPTIVE` is the recommended strategy. When no row is stored at this scope and none is inherited from the workspace (source `DEFAULT`), `effective` is `ADAPTIVE` if adaptive selection is serving for this scope, otherwise `ASC`.
+ **Note:** These endpoints are currently in beta and might be subject to changes.
+ Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
+ operationId: getVaultAssetUtxoSelectionConfig
+ parameters:
+ - description: The ID of the vault account.
+ explode: false
+ in: path
+ name: vaultAccountId
+ required: true
+ schema:
+ format: numeric
+ type: string
+ x-fb-entity: vault_account
+ style: simple
+ - description: The ID of the asset
+ explode: false
+ in: path
+ name: assetId
+ required: true
+ schema:
+ type: string
+ x-fb-entity: asset
+ style: simple
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UtxoSelectionConfigResponse"
+ description: Current UTXO selection config
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Get vault and asset UTXO selection config
+ tags:
+ - UTXO Management (Beta)
+ x-rate-limit-category: read
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.getVaultAssetUtxoSelectionConfig();"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: CompletableFuture> response
+ = fireblocks.uTXOManagementBeta().getVaultAssetUtxoSelectionConfig();
+ name: Fireblocks SDK Java example
+ - language: python
+ code: response = fireblocks.u_t_x_o_management_beta.get_vault_asset_utxo_selection_config();
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.getVaultAssetUtxoSelectionConfig();"
+ - lang: Java
+ source: CompletableFuture> response
+ = fireblocks.uTXOManagementBeta().getVaultAssetUtxoSelectionConfig();
+ - lang: Python
+ source: response = fireblocks.u_t_x_o_management_beta.get_vault_asset_utxo_selection_config();
+ x-accepts:
+ - application/json
+ put:
+ description: |-
+ Creates or updates the UTXO selection strategy for this vault account and asset. `ADAPTIVE` is recommended.
+ **Note:** These endpoints are currently in beta and might be subject to changes.
+ Endpoint Permission: Admin, Non-Signing Admin.
+ operationId: upsertVaultAssetUtxoSelectionConfig
+ parameters:
+ - description: The ID of the vault account.
+ explode: false
+ in: path
+ name: vaultAccountId
+ required: true
+ schema:
+ format: numeric
+ type: string
+ x-fb-entity: vault_account
+ style: simple
+ - description: The ID of the asset
+ explode: false
+ in: path
+ name: assetId
+ required: true
+ schema:
+ type: string
+ x-fb-entity: asset
+ style: simple
+ - description: "A unique identifier for the request. If the request is sent\
+ \ multiple times with the same idempotency key, the server will return the\
+ \ same response as the first request. The idempotency key is valid for 24\
+ \ hours."
+ explode: false
+ in: header
+ name: Idempotency-Key
+ required: false
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertUtxoSelectionConfigRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UtxoSelectionConfigResponse"
+ description: Updated UTXO selection config
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Upsert vault and asset UTXO selection config
+ tags:
+ - UTXO Management (Beta)
+ x-rate-limit-category: write
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.upsertVaultAssetUtxoSelectionConfig(uTXOManagementBetaApiUpsertVaultAssetUtxoSelectionConfigRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture> response\
+ \ = fireblocks.uTXOManagementBeta().upsertVaultAssetUtxoSelectionConfig(upsertUtxoSelectionConfigRequest,\
+ \ idempotencyKey);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.u_t_x_o_management_beta.upsert_vault_asset_utxo_selection_config(upsert_utxo_selection_config_request,\
+ \ idempotency_key);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.upsertVaultAssetUtxoSelectionConfig(uTXOManagementBetaApiUpsertVaultAssetUtxoSelectionConfigRequest);"
+ - lang: Java
+ source: "CompletableFuture> response\
+ \ = fireblocks.uTXOManagementBeta().upsertVaultAssetUtxoSelectionConfig(upsertUtxoSelectionConfigRequest,\
+ \ idempotencyKey);"
+ - lang: Python
+ source: "response = fireblocks.u_t_x_o_management_beta.upsert_vault_asset_utxo_selection_config(upsert_utxo_selection_config_request,\
+ \ idempotency_key);"
+ x-content-type: application/json
+ x-accepts:
+ - application/json
/utxo_management/{vaultAccountId}/{assetId}/unspent_outputs:
get:
description: |-
@@ -33616,6 +34148,122 @@ paths:
\ max_amount);"
x-accepts:
- application/json
+ /utxo_management/selection_config:
+ get:
+ description: |-
+ Returns the workspace-level configured selection strategy and the effective strategy after runtime resolution. `ADAPTIVE` is the recommended strategy. When no row is stored (source `DEFAULT`), `effective` is `ADAPTIVE` if adaptive selection is serving for this workspace, otherwise `ASC`.
+ **Note:** These endpoints are currently in beta and might be subject to changes.
+ Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
+ operationId: getUtxoSelectionConfig
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UtxoSelectionConfigResponse"
+ description: Current UTXO selection config
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Get UTXO selection config
+ tags:
+ - UTXO Management (Beta)
+ x-rate-limit-category: read
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.getUtxoSelectionConfig();"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: CompletableFuture> response
+ = fireblocks.uTXOManagementBeta().getUtxoSelectionConfig();
+ name: Fireblocks SDK Java example
+ - language: python
+ code: response = fireblocks.u_t_x_o_management_beta.get_utxo_selection_config();
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.getUtxoSelectionConfig();"
+ - lang: Java
+ source: CompletableFuture> response
+ = fireblocks.uTXOManagementBeta().getUtxoSelectionConfig();
+ - lang: Python
+ source: response = fireblocks.u_t_x_o_management_beta.get_utxo_selection_config();
+ x-accepts:
+ - application/json
+ put:
+ description: |-
+ Creates or updates the workspace-level UTXO selection strategy. `ADAPTIVE` is recommended.
+ **Note:** These endpoints are currently in beta and might be subject to changes.
+ Endpoint Permission: Admin, Non-Signing Admin.
+ operationId: upsertUtxoSelectionConfig
+ parameters:
+ - description: "A unique identifier for the request. If the request is sent\
+ \ multiple times with the same idempotency key, the server will return the\
+ \ same response as the first request. The idempotency key is valid for 24\
+ \ hours."
+ explode: false
+ in: header
+ name: Idempotency-Key
+ required: false
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertUtxoSelectionConfigRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UtxoSelectionConfigResponse"
+ description: Updated UTXO selection config
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Upsert UTXO selection config
+ tags:
+ - UTXO Management (Beta)
+ x-rate-limit-category: write
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.upsertUtxoSelectionConfig(uTXOManagementBetaApiUpsertUtxoSelectionConfigRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture> response\
+ \ = fireblocks.uTXOManagementBeta().upsertUtxoSelectionConfig(upsertUtxoSelectionConfigRequest,\
+ \ idempotencyKey);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.u_t_x_o_management_beta.upsert_utxo_selection_config(upsert_utxo_selection_config_request,\
+ \ idempotency_key);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.uTXOManagementBeta.upsertUtxoSelectionConfig(uTXOManagementBetaApiUpsertUtxoSelectionConfigRequest);"
+ - lang: Java
+ source: "CompletableFuture> response\
+ \ = fireblocks.uTXOManagementBeta().upsertUtxoSelectionConfig(upsertUtxoSelectionConfigRequest,\
+ \ idempotencyKey);"
+ - lang: Python
+ source: "response = fireblocks.u_t_x_o_management_beta.upsert_utxo_selection_config(upsert_utxo_selection_config_request,\
+ \ idempotency_key);"
+ x-content-type: application/json
+ x-accepts:
+ - application/json
/vault/accounts:
get:
deprecated: true
@@ -37613,6 +38261,142 @@ paths:
x-content-type: application/json
x-accepts:
- application/json
+ /webhooks_settings/mtls:
+ get:
+ description: |
+ Lists the workspace's mTLS configurations, newest first. Pass `ids` to ask about
+ particular ones instead — useful for resolving the `webhookMtlsId` values on a set of
+ webhooks in one call.
+ operationId: getWebhookMtlsConfigs
+ parameters:
+ - description: "Return only the configurations with these ids, instead of all\
+ \ of them. Repeat the parameter for each id. An id belonging to another\
+ \ workspace, or to nothing, is left out of the response rather than failing\
+ \ the request."
+ example:
+ - 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ explode: true
+ in: query
+ name: ids
+ required: false
+ schema:
+ items:
+ format: uuid
+ type: string
+ maxItems: 100
+ type: array
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WebhookMtlsConfigsList"
+ description: The workspace's mTLS configurations
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: List the uploaded mTLS configurations
+ tags:
+ - Webhooks V2
+ x-rate-limit-category: read
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.webhooksV2.getWebhookMtlsConfigs(webhooksV2ApiGetWebhookMtlsConfigsRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: CompletableFuture>> response =
+ fireblocks.webhooksV2().getWebhookMtlsConfigs(ids);
+ name: Fireblocks SDK Java example
+ - language: python
+ code: response = fireblocks.webhooks_v2.get_webhook_mtls_configs(ids);
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.webhooksV2.getWebhookMtlsConfigs(webhooksV2ApiGetWebhookMtlsConfigsRequest);"
+ - lang: Java
+ source: CompletableFuture>> response =
+ fireblocks.webhooksV2().getWebhookMtlsConfigs(ids);
+ - lang: Python
+ source: response = fireblocks.webhooks_v2.get_webhook_mtls_configs(ids);
+ x-accepts:
+ - application/json
+ post:
+ description: |
+ Stores a certificate signed against the CSR from `GET /v1/webhooks_settings/mtls_csr` and returns its id, which is then set as `webhookMtlsId` on a webhook or on OAuth credentials. The private key the certificate was issued for is derived from the certificate, so it is never named by the caller.
+
+ Re-uploading a certificate already stored returns the existing id rather than creating a second configuration, so several webhooks and OAuth credentials can share one certificate.
+
+ A certificate that was not issued for a private key this workspace holds is rejected with a `400`.
+
+ **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ operationId: createWebhookMtlsConfig
+ parameters:
+ - description: "A unique identifier for the request. If the request is sent\
+ \ multiple times with the same idempotency key, the server will return the\
+ \ same response as the first request. The idempotency key is valid for 24\
+ \ hours."
+ explode: false
+ in: header
+ name: Idempotency-Key
+ required: false
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CreateWebhookMtlsConfigRequest"
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WebhookMtlsConfig"
+ description: The stored mTLS configuration
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Create an mTLS configuration
+ tags:
+ - Webhooks V2
+ x-rate-limit-category: write
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise> =\
+ \ fireblocks.webhooksV2.createWebhookMtlsConfig(webhooksV2ApiCreateWebhookMtlsConfigRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture> response = fireblocks.webhooksV2().createWebhookMtlsConfig(createWebhookMtlsConfigRequest,\
+ \ idempotencyKey);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.webhooks_v2.create_webhook_mtls_config(create_webhook_mtls_config_request,\
+ \ idempotency_key);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise> =\
+ \ fireblocks.webhooksV2.createWebhookMtlsConfig(webhooksV2ApiCreateWebhookMtlsConfigRequest);"
+ - lang: Java
+ source: "CompletableFuture> response = fireblocks.webhooksV2().createWebhookMtlsConfig(createWebhookMtlsConfigRequest,\
+ \ idempotencyKey);"
+ - lang: Python
+ source: "response = fireblocks.webhooks_v2.create_webhook_mtls_config(create_webhook_mtls_config_request,\
+ \ idempotency_key);"
+ x-content-type: application/json
+ x-accepts:
+ - application/json
/webhooks_settings/mtls_csr:
get:
description: |
@@ -37678,6 +38462,232 @@ paths:
source: response = fireblocks.webhooks_v2.get_mtls_csr(key_algorithm);
x-accepts:
- application/json
+ /webhooks_settings/mtls/{webhookMtlsId}:
+ delete:
+ description: |
+ Deletes an mTLS configuration. By default the delete is refused while the configuration is still in use: if any webhook or OAuth credentials reference it, nothing is deleted and the request fails with `409 Conflict`, naming the reason and listing the ids of what references it. This protects a shared configuration from being removed out from under the webhooks and token requests that depend on it.
+
+ Pass `forceDelete=true` to delete anyway. That detaches everything referencing it — it clears `webhookMtlsId` on each webhook and OAuth credentials, it does **not** delete them — then deletes the configuration and returns the deleted resource together with `detachedWebhookIds` and `detachedWebhookOauthIds`. Detached webhooks keep delivering notifications, and detached OAuth credentials keep requesting tokens, but without a client certificate, so an endpoint that requires mTLS will reject them from that point on.
+
+ When nothing references the configuration the delete succeeds either way, and both lists come back empty.
+
+ **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ operationId: deleteWebhookMtlsConfig
+ parameters:
+ - description: The unique identifier of the mTLS configuration
+ explode: false
+ in: path
+ name: webhookMtlsId
+ required: true
+ schema:
+ example: 44fcead0-7053-4831-a53a-df7fb90d440f
+ format: uuid
+ type: string
+ style: simple
+ - description: "Delete the configuration even while webhooks or OAuth credentials\
+ \ still reference it, detaching them instead of refusing; their ids are\
+ \ returned in `detachedWebhookIds` and `detachedWebhookOauthIds`. Leave\
+ \ it unset, or `false`, to get a `409 Conflict` whenever anything still\
+ \ references the configuration."
+ example: true
+ explode: true
+ in: query
+ name: forceDelete
+ required: false
+ schema:
+ default: false
+ type: boolean
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/DeleteWebhookMtlsConfigResponse"
+ description: "The deleted mTLS configuration, plus the ids of any webhooks\
+ \ and OAuth credentials that were detached from it"
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "409":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Webhooks or OAuth credentials still reference this configuration\
+ \ and `forceDelete` was not set. Nothing was deleted. The error message\
+ \ names the reason and the ids of what references it — detach those webhooks\
+ \ and OAuth credentials, or retry with `forceDelete=true`."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Delete an mTLS configuration
+ tags:
+ - Webhooks V2
+ x-rate-limit-category: write
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise>\
+ \ = fireblocks.webhooksV2.deleteWebhookMtlsConfig(webhooksV2ApiDeleteWebhookMtlsConfigRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture> response\
+ \ = fireblocks.webhooksV2().deleteWebhookMtlsConfig(webhookMtlsId, forceDelete);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.webhooks_v2.delete_webhook_mtls_config(webhook_mtls_id,\
+ \ force_delete);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise>\
+ \ = fireblocks.webhooksV2.deleteWebhookMtlsConfig(webhooksV2ApiDeleteWebhookMtlsConfigRequest);"
+ - lang: Java
+ source: "CompletableFuture> response\
+ \ = fireblocks.webhooksV2().deleteWebhookMtlsConfig(webhookMtlsId, forceDelete);"
+ - lang: Python
+ source: "response = fireblocks.webhooks_v2.delete_webhook_mtls_config(webhook_mtls_id,\
+ \ force_delete);"
+ x-accepts:
+ - application/json
+ get:
+ description: |
+ Retrieve one stored mTLS configuration by its id.
+ operationId: getWebhookMtlsConfig
+ parameters:
+ - description: The unique identifier of the mTLS configuration
+ explode: false
+ in: path
+ name: webhookMtlsId
+ required: true
+ schema:
+ example: 44fcead0-7053-4831-a53a-df7fb90d440f
+ format: uuid
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WebhookMtlsConfig"
+ description: An mTLS configuration
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Get an mTLS configuration by id
+ tags:
+ - Webhooks V2
+ x-rate-limit-category: read
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise> =\
+ \ fireblocks.webhooksV2.getWebhookMtlsConfig(webhooksV2ApiGetWebhookMtlsConfigRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: CompletableFuture> response = fireblocks.webhooksV2().getWebhookMtlsConfig(webhookMtlsId);
+ name: Fireblocks SDK Java example
+ - language: python
+ code: response = fireblocks.webhooks_v2.get_webhook_mtls_config(webhook_mtls_id);
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise> =\
+ \ fireblocks.webhooksV2.getWebhookMtlsConfig(webhooksV2ApiGetWebhookMtlsConfigRequest);"
+ - lang: Java
+ source: CompletableFuture> response = fireblocks.webhooksV2().getWebhookMtlsConfig(webhookMtlsId);
+ - lang: Python
+ source: response = fireblocks.webhooks_v2.get_webhook_mtls_config(webhook_mtls_id);
+ x-accepts:
+ - application/json
+ patch:
+ description: |
+ Renames a configuration, replaces its certificate, or both. Only the fields present in the request are changed; anything omitted is left as it is, and a request with neither field is rejected with a `400`.
+
+ Replacing `signedCert` switches every webhook and OAuth credentials set using this configuration over to the new certificate in one write, and the private key it was issued for is re-derived from the certificate. A replacement that was not issued for a private key this workspace holds is rejected with a `400`.
+
+ Sending `name: null` removes the label.
+
+ **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ operationId: updateWebhookMtlsConfig
+ parameters:
+ - description: The unique identifier of the mTLS configuration
+ explode: false
+ in: path
+ name: webhookMtlsId
+ required: true
+ schema:
+ example: 44fcead0-7053-4831-a53a-df7fb90d440f
+ format: uuid
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpdateWebhookMtlsConfigRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WebhookMtlsConfig"
+ description: The updated mTLS configuration
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorSchema"
+ description: "Neither `name` nor `signedCert` was provided, so there is\
+ \ nothing to change, or the replacement certificate was rejected — it\
+ \ is not valid X.509, or it was not issued for a private key this workspace\
+ \ holds."
+ headers:
+ X-Request-ID:
+ $ref: "#/components/headers/X-Request-ID"
+ default:
+ $ref: "#/components/responses/Error"
+ summary: Update an mTLS configuration
+ tags:
+ - Webhooks V2
+ x-rate-limit-category: write
+ x-readme:
+ code-samples:
+ - language: typescript
+ code: "const response: Promise> =\
+ \ fireblocks.webhooksV2.updateWebhookMtlsConfig(webhooksV2ApiUpdateWebhookMtlsConfigRequest);"
+ name: Fireblocks SDK TypeScript example
+ - language: java
+ code: "CompletableFuture> response = fireblocks.webhooksV2().updateWebhookMtlsConfig(updateWebhookMtlsConfigRequest,\
+ \ webhookMtlsId);"
+ name: Fireblocks SDK Java example
+ - language: python
+ code: "response = fireblocks.webhooks_v2.update_webhook_mtls_config(update_webhook_mtls_config_request,\
+ \ webhook_mtls_id);"
+ name: Fireblocks SDK Python example
+ x-codeSamples:
+ - lang: TypeScript
+ source: "const response: Promise> =\
+ \ fireblocks.webhooksV2.updateWebhookMtlsConfig(webhooksV2ApiUpdateWebhookMtlsConfigRequest);"
+ - lang: Java
+ source: "CompletableFuture> response = fireblocks.webhooksV2().updateWebhookMtlsConfig(updateWebhookMtlsConfigRequest,\
+ \ webhookMtlsId);"
+ - lang: Python
+ source: "response = fireblocks.webhooks_v2.update_webhook_mtls_config(update_webhook_mtls_config_request,\
+ \ webhook_mtls_id);"
+ x-content-type: application/json
+ x-accepts:
+ - application/json
/webhooks_settings/oauth:
get:
description: |
@@ -37938,7 +38948,7 @@ paths:
description: |
Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials.
- `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it.
+ `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `webhookMtlsId` is a scalar rather than a map, so `null` there does remove it.
**Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
operationId: updateWebhookOauth
@@ -47336,6 +48346,159 @@ components:
example: "0.0013"
type: string
type: object
+ CantonDomainEnum:
+ description: "The Canton domain a transaction belongs to. Singular, and it matches\
+ \ the prefix of the `type` / `responseType` values in the same domain character\
+ \ for character."
+ enum:
+ - ONBOARDING
+ - ALLOCATION
+ - TRANSFER
+ example: ALLOCATION
+ type: string
+ CantonVendorEnum:
+ description: The vendor whose flow this is. Present only where the flow is vendor-specific
+ — absent on vendor-neutral Splice operations such as allocation withdraw.
+ enum:
+ - DTCC
+ - TRADEWEB
+ example: DTCC
+ type: string
+ CantonOfferResponseDetails:
+ description: "The transaction belongs to an offer conversation: the offer itself,\
+ \ the response to it, or a leg that carries no answer of its own. The only\
+ \ block that changes over a transaction's lifetime."
+ example:
+ version: 1
+ domain: ONBOARDING
+ vendor: DTCC
+ availableResponses:
+ - DTCC_END_INVESTOR_ONBOARDING_ACCEPT
+ - DTCC_END_INVESTOR_ONBOARDING_REJECT
+ expiresAt: 2026-12-31T23:59:59Z
+ properties:
+ version:
+ description: "The shape of this block. Stamped at creation and never changed,\
+ \ so a reader always knows which version it is holding."
+ example: 1
+ type: integer
+ domain:
+ $ref: "#/components/schemas/CantonDomainEnum"
+ vendor:
+ $ref: "#/components/schemas/CantonVendorEnum"
+ availableResponses:
+ description: The responses that can be sent for this offer right now. An
+ empty array means nothing is answerable on this transaction — which is
+ the difference between an actionable offer and a linked leg that shares
+ its sub-status.
+ example:
+ - DTCC_END_INVESTOR_ONBOARDING_ACCEPT
+ - DTCC_END_INVESTOR_ONBOARDING_REJECT
+ items:
+ description: A response type that may be sent for this offer.
+ example: DTCC_END_INVESTOR_ONBOARDING_ACCEPT
+ type: string
+ type: array
+ expiresAt:
+ description: "When the offer expires, where it has a deadline."
+ example: 2026-12-31T23:59:59Z
+ format: date-time
+ type: string
+ approvalTransactionId:
+ description: "The response transaction, once one has been dispatched for\
+ \ this offer."
+ example: 2a7f4c31-9d08-4b52-8e6a-1f3c70b9d485
+ type: string
+ originalTransactionId:
+ description: The transaction this one relates to — the offer a response
+ answered.
+ example: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
+ type: string
+ verdict:
+ description: "The outcome, set once the transaction reaches a terminal status."
+ enum:
+ - ACCEPTED
+ - REJECTED
+ example: ACCEPTED
+ type: string
+ type: object
+ CantonCallDetails:
+ description: A call made through the Canton calls endpoint. Written once and
+ never changed.
+ example:
+ version: 1
+ domain: ALLOCATION
+ type: ALLOCATION_WITHDRAW
+ originalTransactionId: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
+ properties:
+ version:
+ description: "The shape of this block. Stamped at creation and never changed,\
+ \ so a reader always knows which version it is holding."
+ example: 1
+ type: integer
+ domain:
+ $ref: "#/components/schemas/CantonDomainEnum"
+ type:
+ description: "The call type, matching the `type` sent when the call was\
+ \ created."
+ example: ALLOCATION_WITHDRAW
+ type: string
+ vendor:
+ $ref: "#/components/schemas/CantonVendorEnum"
+ originalTransactionId:
+ description: "The transaction this call acts on. On a withdraw it is the\
+ \ allocation that was withdrawn, so the withdraw transaction read on its\
+ \ own still says what it withdrew."
+ example: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
+ type: string
+ type: object
+ CantonSettlementDetails:
+ description: "The credit side of a delivery-versus-payment: a venue settled\
+ \ an allocation. Written once, at creation — the transaction is already complete\
+ \ when it appears."
+ example:
+ version: 1
+ domain: ALLOCATION
+ type: ALLOCATION_SETTLEMENT
+ originalTransactionId: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
+ properties:
+ version:
+ description: "The shape of this block. Stamped at creation and never changed,\
+ \ so a reader always knows which version it is holding."
+ example: 1
+ type: integer
+ domain:
+ $ref: "#/components/schemas/CantonDomainEnum"
+ type:
+ description: The settlement type.
+ example: ALLOCATION_SETTLEMENT
+ type: string
+ originalTransactionId:
+ description: The allocation this receipt settles.
+ example: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
+ type: string
+ type: object
+ CantonDetails:
+ description: |-
+ Canton transaction context. Present on transactions that belong to a Canton flow, and the authoritative signal that a transaction IS one — do not branch on `operation`, which is `CANTON_CALL` for customer-initiated calls but `TRANSFER` for an incoming Canton transfer offer. **No `cantonDetails` at all means the transaction is not a Canton item.**
+
+ The service sets exactly one of `offerResponse`, `call` or `settlement`. That is a guarantee about what is sent, NOT a constraint this schema enforces: the three are declared as independent optional properties on purpose, so that a response carrying a block a client does not yet know about — or a row written before a block type existed — still validates. Response schemas here stay additive. Read the block you recognise; do not reject a payload for the shape of the others.
+
+ Every block carries `version`, stamped when the transaction is created and never changed — a transaction written today keeps its shape, so `version` is how you know which shape you are reading.
+ example:
+ call:
+ version: 1
+ domain: ALLOCATION
+ type: ALLOCATION_WITHDRAW
+ originalTransactionId: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
+ properties:
+ offerResponse:
+ $ref: "#/components/schemas/CantonOfferResponseDetails"
+ call:
+ $ref: "#/components/schemas/CantonCallDetails"
+ settlement:
+ $ref: "#/components/schemas/CantonSettlementDetails"
+ type: object
RewardInfo:
description: "This field is relevant only for Algorand transactions. Both `srcRewards`\
\ and `destRewards` will appear only for Vault to Vault transactions, otherwise\
@@ -49676,6 +50839,12 @@ components:
screeningStatus: COMPLETED
categoryId: 5
timestamp: 1774363599908
+ cantonDetails:
+ call:
+ version: 1
+ domain: ALLOCATION
+ type: ALLOCATION_WITHDRAW
+ originalTransactionId: 9f2b7c14-8d55-4a02-b6e1-5c3f90a7d488
requestedAmount: 3.616076749251911
status: status
note: note
@@ -50529,6 +51698,8 @@ components:
\ the `feeCurrency` field, if any."
example: PATH_USD
type: string
+ cantonDetails:
+ $ref: "#/components/schemas/CantonDetails"
networkRecords:
description: "In case a single transaction resulted with multiple transfers,\
\ for example a result of a contract call, then this parameter specifies\
@@ -50706,6 +51877,7 @@ components:
* `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)
* `APPROVE` - Enables the approve function for a smart contract or wallet to withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions).
* `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.
+ * `CANTON_CALL` - A customer-initiated Canton operation, such as withdrawing an allocation or responding to an onboarding offer. Note that not every Canton transaction carries this operation — an incoming Canton transfer offer is a `TRANSFER` — so use the top-level `cantonDetails` rather than `operation` to identify a Canton transaction.
enum:
- TRANSFER
- BURN
@@ -50716,6 +51888,7 @@ components:
- TYPED_MESSAGE
- APPROVE
- ENABLE_ASSET
+ - CANTON_CALL
type: string
TransferPeerPathSubType:
enum:
@@ -60134,28 +61307,6 @@ components:
- order.updated
- automation_execution.update
type: string
- WebhookMtls:
- description: "mTLS configuration for the webhook. On responses, present only\
- \ when a signed client certificate is set. On requests, provide a signed client\
- \ certificate to enable mTLS, or null to remove it."
- example:
- clientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
- nullable: true
- properties:
- clientSignedCert:
- description: Signed client certificate PEM used for mTLS when delivering
- notifications.
- example: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
- type: string
- required:
- - clientSignedCert
- type: object
WebhookCustomHeadersResponse:
description: Names of the custom headers configured for this webhook. Header
values are never returned.
@@ -60168,14 +61319,10 @@ components:
Webhook:
example:
createdAt: 1625126400000
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
webhookOauthId: 123e4567-e89b-12d3-a456-426614174000
description: This webhook is used for transactions notifications
id: 123e4567-e89b-12d3-a456-426614174000
- mtls:
- clientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
url: https://example.com/webhook
events:
- transaction.created
@@ -60228,8 +61375,13 @@ components:
example: 1625126400000
format: int64
type: integer
- mtls:
- $ref: "#/components/schemas/WebhookMtls"
+ webhookMtlsId:
+ description: "The id of the mTLS configuration this webhook presents when\
+ \ delivering, from `/v1/webhooks_settings/mtls`. Absent when the webhook\
+ \ does not use mTLS."
+ example: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ format: uuid
+ type: string
webhookOauthId:
description: "The id of the OAuth credentials this webhook authenticates\
\ with. Absent when the webhook does not use OAuth. Read the credentials\
@@ -60259,14 +61411,10 @@ components:
next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
data:
- createdAt: 1625126400000
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
webhookOauthId: 123e4567-e89b-12d3-a456-426614174000
description: This webhook is used for transactions notifications
id: 123e4567-e89b-12d3-a456-426614174000
- mtls:
- clientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
url: https://example.com/webhook
events:
- transaction.created
@@ -60277,14 +61425,10 @@ components:
status: ENABLED
updatedAt: 1625126400000
- createdAt: 1625126400000
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
webhookOauthId: 123e4567-e89b-12d3-a456-426614174000
description: This webhook is used for transactions notifications
id: 123e4567-e89b-12d3-a456-426614174000
- mtls:
- clientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
url: https://example.com/webhook
events:
- transaction.created
@@ -60332,13 +61476,9 @@ components:
type: object
CreateWebhookRequest:
example:
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
webhookOauthId: 123e4567-e89b-12d3-a456-426614174000
description: This webhook is used for transactions notifications
- mtls:
- clientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
url: https://example.com/webhook
events:
- transaction.created
@@ -60376,8 +61516,15 @@ components:
\ receive notifications."
example: false
type: boolean
- mtls:
- $ref: "#/components/schemas/WebhookMtls"
+ webhookMtlsId:
+ description: "The id of the mTLS configuration this webhook presents when\
+ \ delivering, from `/v1/webhooks_settings/mtls`. Several webhooks may\
+ \ share one configuration, so replacing its certificate covers all of\
+ \ them at once. Send `null` to stop using mTLS for this webhook."
+ example: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ format: uuid
+ nullable: true
+ type: string
webhookOauthId:
description: "The id of the OAuth credentials this webhook authenticates\
\ with, from `/v1/webhooks_settings/oauth`. Several webhooks may share\
@@ -60448,6 +61595,171 @@ components:
- csr
- keyAlgorithm
type: object
+ WebhookMtlsConfig:
+ description: "A signed client certificate stored for the workspace, and the\
+ \ id a webhook or OAuth credentials set references to use it. Several of them\
+ \ may share one configuration, so replacing the certificate here switches\
+ \ all of them at once."
+ example:
+ signedCert: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ createdAt: 1694572200000
+ name: Production gateway 2026
+ id: 44fcead0-7053-4831-a53a-df7fb90d440f
+ expiresAt: 1726108200000
+ updatedAt: 1726108200000
+ properties:
+ id:
+ description: "The unique identifier of the mTLS configuration, to be set\
+ \ as `webhookMtlsId` on a webhook or on OAuth credentials."
+ example: 44fcead0-7053-4831-a53a-df7fb90d440f
+ format: uuid
+ type: string
+ name:
+ description: The label given to this mTLS configuration.
+ example: Production gateway 2026
+ type: string
+ signedCert:
+ description: The signed client certificate PEM.
+ example: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ type: string
+ expiresAt:
+ description: "When the certificate itself expires, in milliseconds since\
+ \ the epoch."
+ example: 1726108200000
+ format: int64
+ type: integer
+ createdAt:
+ description: "When the certificate was uploaded, in milliseconds since the\
+ \ epoch."
+ example: 1694572200000
+ format: int64
+ type: integer
+ updatedAt:
+ description: "When this configuration was last changed, in milliseconds\
+ \ since the epoch. Differs from createdAt once the certificate has been\
+ \ replaced or the configuration renamed."
+ example: 1726108200000
+ format: int64
+ type: integer
+ required:
+ - createdAt
+ - expiresAt
+ - id
+ - signedCert
+ - updatedAt
+ type: object
+ WebhookMtlsConfigsList:
+ description: "Every mTLS configuration belonging to the workspace, newest first."
+ items:
+ $ref: "#/components/schemas/WebhookMtlsConfig"
+ type: array
+ CreateWebhookMtlsConfigRequest:
+ example:
+ signedCert: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ name: Production gateway 2026
+ properties:
+ name:
+ description: "A label for this mTLS configuration, to tell several certificates\
+ \ apart. Letters, digits and spaces only."
+ example: Production gateway 2026
+ maxLength: 255
+ pattern: "^[a-zA-Z0-9 ]*$"
+ type: string
+ signedCert:
+ description: "Signed client certificate PEM, issued for the CSR from `GET\
+ \ /v1/webhooks_settings/mtls_csr`. The private key it belongs to is derived\
+ \ from the certificate itself."
+ example: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ type: string
+ required:
+ - signedCert
+ type: object
+ DeleteWebhookMtlsConfigResponse:
+ allOf:
+ - $ref: "#/components/schemas/WebhookMtlsConfig"
+ - properties:
+ detachedWebhookIds:
+ description: "Webhooks whose `webhookMtlsId` was cleared. The webhooks\
+ \ themselves are not deleted and keep delivering, just without a client\
+ \ certificate. Empty unless `forceDelete=true` detached something."
+ example:
+ - 44fcead0-7053-4831-a53a-df7fb90d440f
+ items:
+ format: uuid
+ type: string
+ type: array
+ detachedWebhookOauthIds:
+ description: OAuth credentials whose `webhookMtlsId` was cleared. Their
+ token requests continue without a client certificate. Empty unless `forceDelete=true`
+ detached something.
+ example:
+ - 6e5daa9a-56cd-4975-ac16-bb9d1b48dff5
+ items:
+ format: uuid
+ type: string
+ type: array
+ required:
+ - detachedWebhookIds
+ - detachedWebhookOauthIds
+ type: object
+ description: "The deleted mTLS configuration, plus the ids of any webhooks and\
+ \ OAuth credentials the delete detached from it. They are only detached by\
+ \ `forceDelete=true`; without it a delete is refused with `409` while anything\
+ \ still references the configuration."
+ example:
+ signedCert: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ createdAt: 1694572200000
+ detachedWebhookIds:
+ - 44fcead0-7053-4831-a53a-df7fb90d440f
+ name: Production gateway 2026
+ detachedWebhookOauthIds:
+ - 6e5daa9a-56cd-4975-ac16-bb9d1b48dff5
+ id: 44fcead0-7053-4831-a53a-df7fb90d440f
+ expiresAt: 1726108200000
+ updatedAt: 1726108200000
+ UpdateWebhookMtlsConfigRequest:
+ description: At least one property must be provided.
+ example:
+ signedCert: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ name: Production gateway 2027
+ minProperties: 1
+ properties:
+ name:
+ description: "A new label for this mTLS configuration, or `null` to remove\
+ \ it. Letters, digits and spaces only."
+ example: Production gateway 2027
+ maxLength: 255
+ nullable: true
+ pattern: "^[a-zA-Z0-9 ]*$"
+ type: string
+ signedCert:
+ description: "A replacement signed certificate PEM. Every webhook and OAuth\
+ \ credentials set using this configuration switches to it, and the private\
+ \ key it was issued for is re-derived from the certificate."
+ example: |-
+ -----BEGIN CERTIFICATE-----
+ ...
+ -----END CERTIFICATE-----
+ type: string
+ type: object
WebhookOauthCredentials:
description: "A stored OAuth 2.0 client credential set, referenced by webhooks\
\ through their `webhookOauthId`. Deliveries for a webhook that references\
@@ -60462,6 +61774,7 @@ components:
clientId: my-client-id
customBodyParams:
- scope
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
customJwtClaims:
- aud
- resource
@@ -60471,10 +61784,6 @@ components:
url: https://auth.example.com/oauth/token
customHeaders:
- X-Api-Key
- mtlsClientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
updatedAt: 1625097600000
properties:
id:
@@ -60532,13 +61841,12 @@ components:
items:
type: string
type: array
- mtlsClientSignedCert:
- description: PEM-encoded client certificate used for mTLS when fetching
- OAuth tokens.
- example: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
+ webhookMtlsId:
+ description: "The id of the mTLS configuration presented to the token endpoint.\
+ \ Absent when the token request does not use mTLS. Read the certificate\
+ \ from `/v1/webhooks_settings/mtls/{id}`."
+ example: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ format: uuid
type: string
createdAt:
description: "The date and time the OAuth credentials were created, in milliseconds."
@@ -60609,6 +61917,7 @@ components:
clientId: my-client-id
customBodyParams:
scope: payments.read payments.write
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
customJwtClaims:
aud: https://auth.example.com
email_verified: true
@@ -60618,10 +61927,6 @@ components:
url: https://auth.example.com/oauth/token
customHeaders:
x-api-key: gateway-key
- mtlsClientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
properties:
name:
description: "A label for this credential set, shown when listing them."
@@ -60693,13 +61998,17 @@ components:
x-api-key: gateway-key
nullable: true
type: object
- mtlsClientSignedCert:
- description: PEM-encoded client certificate for mTLS when fetching tokens.
- Must be a valid X.509 certificate inside its validity window.
- example: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
+ webhookMtlsId:
+ description: "The id of the mTLS configuration presented to the token endpoint,\
+ \ from `/v1/webhooks_settings/mtls`. It can be the same configuration\
+ \ a webhook uses, so one certificate, signed from `GET /v1/webhooks_settings/mtls_csr`,\
+ \ serves both the token endpoint and the receiver. Omit, or send `null`,\
+ \ for a token request without mTLS. Requires the mTLS feature to be enabled\
+ \ for the workspace (`403` otherwise), a configuration of this workspace\
+ \ (`404` otherwise), and one linked to a private key (`400` otherwise)."
+ example: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ format: uuid
+ nullable: true
type: string
required:
- clientId
@@ -60735,6 +62044,7 @@ components:
- scope
detachedWebhookIds:
- 44fcead0-7053-4831-a53a-df7fb90d440f
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
customJwtClaims:
- aud
- resource
@@ -60744,10 +62054,6 @@ components:
url: https://auth.example.com/oauth/token
customHeaders:
- X-Api-Key
- mtlsClientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
updatedAt: 1625097600000
WebhookOauthCustomJwtClaimsUpdate:
additionalProperties:
@@ -60791,12 +62097,13 @@ components:
description: |-
A partial update. Every field is optional and an omitted field is left as it is, so `{ "clientSecret": "new-secret" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials.
- The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `mtlsClientSignedCert` is a scalar, so `null` there removes it.
+ The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `webhookMtlsId` is a scalar, so `null` there removes it.
example:
clientId: my-client-id
customBodyParams:
scope: payments.read payments.write
audience: null
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
customJwtClaims:
aud: https://auth.example.com
resource: null
@@ -60807,10 +62114,6 @@ components:
customHeaders:
x-api-key: gateway-key
x-tenant: null
- mtlsClientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
properties:
name:
description: A label for this credential set. Omit to leave it unchanged.
@@ -60885,14 +62188,15 @@ components:
x-tenant: null
nullable: true
type: object
- mtlsClientSignedCert:
- description: "PEM-encoded client certificate for mTLS. Must be a valid X.509\
- \ certificate inside its validity window. Omit to leave it unchanged,\
- \ or send `null` to remove it."
- example: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
+ webhookMtlsId:
+ description: "The id of the mTLS configuration presented to the token endpoint,\
+ \ from `/v1/webhooks_settings/mtls`. Omit to leave it unchanged, or send\
+ \ `null` to stop using mTLS for the token request. Requires the mTLS feature\
+ \ to be enabled for the workspace (`403` otherwise), a configuration of\
+ \ this workspace (`404` otherwise), and one linked to a private key (`400`\
+ \ otherwise)."
+ example: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ format: uuid
nullable: true
type: string
type: object
@@ -60919,13 +62223,9 @@ components:
type: object
UpdateWebhookRequest:
example:
+ webhookMtlsId: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
webhookOauthId: 123e4567-e89b-12d3-a456-426614174000
description: This webhook is used for transactions notifications
- mtls:
- clientSignedCert: |-
- -----BEGIN CERTIFICATE-----
- ...
- -----END CERTIFICATE-----
url: https://example.com/webhook
events:
- transaction.created
@@ -60962,8 +62262,15 @@ components:
description: The status of the webhook
example: false
type: boolean
- mtls:
- $ref: "#/components/schemas/WebhookMtls"
+ webhookMtlsId:
+ description: "The id of the mTLS configuration this webhook presents when\
+ \ delivering, from `/v1/webhooks_settings/mtls`. Several webhooks may\
+ \ share one configuration, so replacing its certificate covers all of\
+ \ them at once. Send `null` to stop using mTLS for this webhook."
+ example: 6f1b7c62-0f2e-4f1a-9a5e-9f2b1c3d4e5f
+ format: uuid
+ nullable: true
+ type: string
webhookOauthId:
description: "The id of the OAuth credentials this webhook authenticates\
\ with, from `/v1/webhooks_settings/oauth`. Several webhooks may share\
@@ -68737,12 +70044,14 @@ components:
enum:
- DVP
- PREFUNDED
+ - POST_TRADE
type: string
ExecutionRequestDetailsType:
description: Execution type supported by the provider
enum:
- QUOTE
- MARKET
+ - LIMIT
type: string
ManifestOrderInfo:
description: Defines requirements for the POST /orders endpoint.
@@ -69066,6 +70375,7 @@ components:
- providerId: prov_8c3f1a4b2d6e9f7c
accountId: acc_5e9a2d1c4b7f3e8a
quoteAssetId: USD
+ baseAmount: "100.00"
properties:
scope:
description: One or more providers/accounts to request rates from. At least
@@ -69082,6 +70392,11 @@ components:
description: The target asset identifier.
example: USD
type: string
+ baseAmount:
+ description: The amount to convert from
+ example: "100.00"
+ pattern: ^\d+(\.\d+)?$
+ type: string
required:
- baseAssetId
- quoteAssetId
@@ -69975,7 +71290,8 @@ components:
side:
$ref: "#/components/schemas/Side"
expiresAt:
- description: The expiration time of the quote in ISO 8601 format.
+ description: |
+ The expiration time of the quote in ISO 8601 format, taken verbatim from the provider. This is not safety-margined by the server — integrators must apply their own margin if one is needed.
example: 2024-01-15T10:35:00.000Z
type: string
requiredParticipantsIdentificationOnOrder:
@@ -70450,16 +71766,68 @@ components:
type: RETRY
count: 1
slippageBps: 50
+ LimitTypeEnum:
+ description: Order type for limit orders
+ enum:
+ - LIMIT
+ type: string
+ FokTimeInForce:
+ description: "Fill-or-kill - the order must be filled in full at the limit price\
+ \ immediately, or not at all."
+ example:
+ type: FOK
+ properties:
+ type:
+ description: Discriminator for the fill-or-kill time-in-force type.
+ enum:
+ - FOK
+ example: FOK
+ type: string
+ required:
+ - type
+ type: object
+ TimeInForce:
+ $ref: "#/components/schemas/FokTimeInForce"
+ LimitTypeDetails:
+ properties:
+ type:
+ $ref: "#/components/schemas/LimitTypeEnum"
+ price:
+ description: Limit price for the order
+ example: "60000.00"
+ type: string
+ timeInForce:
+ $ref: "#/components/schemas/FokTimeInForce"
+ required:
+ - price
+ - timeInForce
+ - type
+ type: object
+ LimitExecutionRequestDetails:
+ allOf:
+ - $ref: "#/components/schemas/LimitTypeDetails"
+ - $ref: "#/components/schemas/ExecutionRequestBaseDetails"
+ example:
+ type: LIMIT
+ price: "60000.00"
+ timeInForce:
+ type: FOK
+ baseAssetId: USD
+ quoteAssetId: BTC
+ side: BUY
+ baseAmount: "1000.00"
ExecutionRequestDetails:
description: Order execution details
discriminator:
mapping:
MARKET: "#/components/schemas/MarketExecutionRequestDetails"
QUOTE: "#/components/schemas/QuoteExecutionWithRequoteRequestDetails"
+ LIMIT: "#/components/schemas/LimitExecutionRequestDetails"
propertyName: type
oneOf:
- $ref: "#/components/schemas/MarketExecutionRequestDetails"
- $ref: "#/components/schemas/QuoteExecutionWithRequoteRequestDetails"
+ - $ref: "#/components/schemas/LimitExecutionRequestDetails"
PrefundedSettlementType:
enum:
- PREFUNDED
@@ -70479,16 +71847,33 @@ components:
- destinationAccount
- type
type: object
+ PostTradeSettlementType:
+ enum:
+ - POST_TRADE
+ type: string
+ PostTradeSettlement:
+ description: |
+ Nothing moves on-platform; settlement happens bilaterally, provider-side, after execution.
+ example:
+ type: POST_TRADE
+ properties:
+ type:
+ $ref: "#/components/schemas/PostTradeSettlementType"
+ required:
+ - type
+ type: object
Settlement:
description: Settlement configuration for the order
discriminator:
mapping:
PREFUNDED: "#/components/schemas/PrefundedSettlement"
DVP: "#/components/schemas/DVPSettlement"
+ POST_TRADE: "#/components/schemas/PostTradeSettlement"
propertyName: type
oneOf:
- $ref: "#/components/schemas/PrefundedSettlement"
- $ref: "#/components/schemas/DVPSettlement"
+ - $ref: "#/components/schemas/PostTradeSettlement"
ReasonForPaymentEnum:
description: |
The reason or purpose of the payment. Used by providers (e.g. CPN) that require a categorical reason for cross-border payment compliance and reporting. Optional at the API level; runtime enforcement is handled by the calling service against the provider's requirements.
@@ -70752,15 +72137,32 @@ components:
type: RETRY
count: 1
slippageBps: 50
+ LimitExecutionResponseDetails:
+ allOf:
+ - $ref: "#/components/schemas/LimitTypeDetails"
+ - $ref: "#/components/schemas/ExecutionResponseBaseDetails"
+ example:
+ type: LIMIT
+ price: "60000.00"
+ timeInForce:
+ type: FOK
+ side: BUY
+ baseAmount: "1000.00"
+ baseAssetId: USDC
+ baseAssetRail: BLOCKCHAIN
+ quoteAssetId: BTC
+ quoteAssetRail: BLOCKCHAIN
ExecutionResponseDetails:
discriminator:
mapping:
MARKET: "#/components/schemas/MarketExecutionResponseDetails"
QUOTE: "#/components/schemas/QuoteExecutionWithRequoteResponseDetails"
+ LIMIT: "#/components/schemas/LimitExecutionResponseDetails"
propertyName: type
oneOf:
- $ref: "#/components/schemas/MarketExecutionResponseDetails"
- $ref: "#/components/schemas/QuoteExecutionWithRequoteResponseDetails"
+ - $ref: "#/components/schemas/LimitExecutionResponseDetails"
BlockchainAddress:
description: The blockchain address information.
example:
@@ -71974,6 +73376,11 @@ components:
- DESTINATION_NOT_WHITELISTED
- MISSING_DESTINATION_DETAILS
- MISSING_WORKSPACE_DETAILS
+ - CREDIT_LIMIT_EXCEEDED
+ - QUOTE_EXPIRED
+ - DESK_REJECTED
+ - REQUOTE_WORSE_PRICE
+ - FOK_KILLED
type: string
Failure:
properties:
@@ -73089,13 +74496,11 @@ components:
- approve
type: object
AddressRegistryTravelRuleProvider:
- description: Travel Rule provider identifier (string enum value).
- enum:
- - TRAVEL_RULE_PROVIDER_NOTABENE
- - TRAVEL_RULE_PROVIDER_SYGNA
- - TRAVEL_RULE_PROVIDER_TRISA
- - TRAVEL_RULE_PROVIDER_OPENVASP
- example: TRAVEL_RULE_PROVIDER_NOTABENE
+ description: "Travel Rule provider short code (e.g. `NOTABENE`, `SYGNA`, `TRISA`,\
+ \ `OPENVASP`). Plain string, not a fixed enum: the underlying provider list\
+ \ is sourced from legal-entity-service and can grow over time without a spec\
+ \ change here."
+ example: NOTABENE
type: string
AddressRegistryLegalEntity:
description: Legal entity details for a blockchain address.
@@ -73104,9 +74509,10 @@ components:
entityName: ACME Corporation
jurisdiction: US
leiData: true
+ proofOfOwnershipAvailable: false
travelRuleProviders:
- - TRAVEL_RULE_PROVIDER_NOTABENE
- - TRAVEL_RULE_PROVIDER_SYGNA
+ - NOTABENE
+ - SYGNA
email: compliance@example.com
properties:
leiData:
@@ -73130,8 +74536,8 @@ components:
type: string
travelRuleProviders:
example:
- - TRAVEL_RULE_PROVIDER_NOTABENE
- - TRAVEL_RULE_PROVIDER_SYGNA
+ - NOTABENE
+ - SYGNA
items:
$ref: "#/components/schemas/AddressRegistryTravelRuleProvider"
type: array
@@ -73139,31 +74545,131 @@ components:
description: Travel Rule contact email when available.
example: compliance@example.com
type: string
+ proofOfOwnershipAvailable:
+ description: Whether the caller can currently create a Proof of Ownership
+ PDF for this address (`POST /v1/address_registry/proof_of_ownership_exports`).
+ example: false
+ type: boolean
required:
- email
- entityName
- jurisdiction
- lei
- leiData
+ - proofOfOwnershipAvailable
- travelRuleProviders
type: object
- AddressRegistryError:
- description: Error body for address registry operations (4xx and 5xx).
+ AddressRegistryCreateProofOfOwnershipRequest:
+ description: Request body for creating an Address Registry Proof of Ownership
+ PDF export.
example:
- code: 2140
- message: Address registry opt-in required for this workspace.
+ address: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0
properties:
- code:
- description: |
- Application error code when present. For HTTP 400 on legal-entity lookup, distinguish: 4100 — request validation (e.g. missing, empty, or whitespace-only `address` after trim); 2140 — workspace not opted in to the address registry (`AR_OPT_IN_REQUIRED`). 2142 — not found (404). Other codes may appear, including on server errors.
- example: 2140
- type: integer
- message:
- description: Human-readable error message
- example: Address registry opt-in required for this workspace.
+ address:
+ description: "Blockchain address to prove ownership for (must resolve to\
+ \ the caller's workspace). Same format expectations as the `address` path\
+ \ parameter on `GET /v1/address_registry/legal_entities/{address}`."
+ example: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0
type: string
required:
- - message
+ - address
+ type: object
+ AddressRegistryCreateProofOfOwnershipResponse:
+ description: "Address Registry Proof of Ownership PDF export, created successfully."
+ example:
+ verificationHash: BHS2QaqGyYegvLBy5qrGhrES3A2n5JPD7ubpgJozRgeA
+ pdf: !!binary |-
+ SlZCRVJpMHhMalFLLi4u
+ exportId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
+ expiresAt: 2027-08-17
+ properties:
+ pdf:
+ description: "Base64-encoded Proof of Ownership PDF bytes. Fireblocks does\
+ \ not store the PDF: save it immediately, there is no re-download route."
+ example: !!binary |-
+ SlZCRVJpMHhMalFLLi4u
+ format: byte
+ type: string
+ exportId:
+ description: Stable id of the online-verifiable export record.
+ example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
+ format: uuid
+ type: string
+ verificationHash:
+ description: Verification hash bound to the export (also printed on the
+ PDF).
+ example: BHS2QaqGyYegvLBy5qrGhrES3A2n5JPD7ubpgJozRgeA
+ type: string
+ expiresAt:
+ description: Inclusive last UTC calendar day online verification is available
+ (`YYYY-MM-DD`).
+ example: 2027-08-17
+ type: string
+ required:
+ - expiresAt
+ - exportId
+ - pdf
+ - verificationHash
+ type: object
+ AddressRegistryVerifyProofOfOwnershipRequest:
+ description: Request body for verifying an Address Registry Proof of Ownership
+ export.
+ example:
+ verificationHash: BHS2QaqGyYegvLBy5qrGhrES3A2n5JPD7ubpgJozRgeA
+ address: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0
+ exportId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
+ expiresAt: 2027-08-17
+ properties:
+ exportId:
+ description: Export id from create / the PDF.
+ example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
+ format: uuid
+ minLength: 1
+ type: string
+ verificationHash:
+ description: Verification hash from create / the PDF (exact match required).
+ example: BHS2QaqGyYegvLBy5qrGhrES3A2n5JPD7ubpgJozRgeA
+ minLength: 1
+ type: string
+ address:
+ description: Address from the PDF (exact UTF-8 match to the stored export).
+ example: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0
+ minLength: 1
+ type: string
+ expiresAt:
+ description: "Optional but recommended: the PDF's \"Online verification\
+ \ available until\" date (`YYYY-MM-DD`), which speeds up the lookup. A\
+ \ wrong value yields `valid: false` even if the export exists — copy it\
+ \ exactly from the PDF, or omit it."
+ example: 2027-08-17
+ pattern: "^$|^\\d{4}-\\d{2}-\\d{2}$"
+ type: string
+ required:
+ - address
+ - exportId
+ - verificationHash
+ type: object
+ AddressRegistryVerifyProofOfOwnershipResponse:
+ description: "Online verification result. Authenticated calls always return\
+ \ HTTP 200 with this body (`valid: true` or `valid: false`); unknown/expired\
+ \ exports do not use 404."
+ example:
+ valid: true
+ expiresAt: 2027-08-17
+ properties:
+ valid:
+ description: Whether the stored export matches the supplied verification
+ hash and address within retention.
+ example: true
+ type: boolean
+ expiresAt:
+ description: Inclusive last UTC calendar day (`YYYY-MM-DD`) when `valid`
+ is true; empty string when `valid` is false.
+ example: 2027-08-17
+ type: string
+ required:
+ - expiresAt
+ - valid
type: object
AddressRegistryTenantRegistryResponse:
description: "Workspace participation in the address registry. Same shape for\
@@ -77135,14 +78641,11 @@ components:
- businessNumber
- city
- country
- - description
- incorporationCountry
- isRegulated
- legalName
- legalStructure
- - logo
- name
- - regulatoryAuthorities
- website
- yearFounded
type: object
@@ -77330,6 +78833,7 @@ components:
description: The second line of the VASP's address (if applicable). May
be null.
example: Suite 10
+ nullable: true
type: string
city:
description: The city where the VASP is located.
@@ -77353,6 +78857,7 @@ components:
logo:
description: URL to the logo of the VASP. May be null.
example: https://fireblocks.com/logo.png
+ nullable: true
type: string
legalStructure:
description: "The legal structure of the VASP (e.g., Corporation, LLC)."
@@ -77379,6 +78884,7 @@ components:
otherNames:
description: Other names the VASP is known by. May be null.
example: Fireblocks Test VASP
+ nullable: true
type: string
identificationType:
description: The type of identification used by the VASP.
@@ -77388,6 +78894,7 @@ components:
description: The country of identification for the VASP (ISO-3166 Alpha-2
code). May be null.
example: US
+ nullable: true
type: string
businessNumber:
description: The business registration number of the VASP.
@@ -77396,6 +78903,7 @@ components:
regulatoryAuthorities:
description: The regulatory authorities overseeing the VASP. May be null.
example: "SEC, FINCEN"
+ nullable: true
type: string
jurisdictions:
description: The jurisdictions where the VASP operates.
@@ -77409,6 +78917,7 @@ components:
street:
description: The street name where the VASP is located. May be null.
example: Wall Street
+ nullable: true
type: string
number:
description: The building number of the VASP's address. May be returned
@@ -77418,6 +78927,7 @@ components:
unit:
description: The unit or suite number of the VASP's address. May be null.
example: Apt 2B
+ nullable: true
type: string
postCode:
description: The postal code of the VASP's location.
@@ -77516,25 +79026,30 @@ components:
certificates:
description: Certificates or licenses held by the VASP. May be null.
example: ISO 27001
+ nullable: true
type: string
description:
description: A brief description of the VASP. May be null.
example: A leading provider of crypto security solutions.
+ nullable: true
type: string
travelRule_OPENVASP:
description: Travel rule compliance status for OpenVASP. Null when the VASP
does not support this protocol.
example: active
+ nullable: true
type: string
travelRule_SYGNA:
description: Travel rule compliance status for Sygna. Null when the VASP
does not support this protocol.
example: inactive
+ nullable: true
type: string
travelRule_TRISA:
description: Travel rule compliance status for TRISA. Null when the VASP
does not support this protocol.
example: pending
+ nullable: true
type: string
travelRule_TRLIGHT:
description: Travel rule compliance status for TRLight.
@@ -77544,21 +79059,25 @@ components:
description: Travel rule compliance status for EMAIL. Null when the VASP
does not support this protocol.
example: inactive
+ nullable: true
type: string
travelRule_TRP:
description: Travel rule compliance status for TRP. Null when the VASP does
not support this protocol.
example: active
+ nullable: true
type: string
travelRule_SHYFT:
description: Travel rule compliance status for Shyft. Null when the VASP
does not support this protocol.
example: inactive
+ nullable: true
type: string
travelRule_USTRAVELRULEWG:
description: Travel rule compliance status for US Travel Rule WG. Null when
the VASP does not support this protocol.
example: pending
+ nullable: true
type: string
createdAt:
description: Timestamp when the VASP record was created.
@@ -77567,6 +79086,7 @@ components:
createdBy:
description: The DID of the party that created the VASP record. May be null.
example: did:ethr:0x19b5ff8440019b635a86bbb632db854f2ea80423
+ nullable: true
type: string
updatedAt:
description: Timestamp of the last update to the VASP record.
@@ -77587,6 +79107,7 @@ components:
documents:
description: Documents associated with the VASP. May be null.
example: "['license.pdf', 'compliance.pdf']"
+ nullable: true
type: string
hasAdmin:
description: Indicates if the VASP has an admin.
@@ -91786,6 +93307,86 @@ components:
- status
- type
type: object
+ UtxoSelectionStrategyEnum:
+ description: "UTXO selection strategy. `ADAPTIVE` is recommended: the engine\
+ \ chooses inputs at selection time. `ASC` spends smallest UTXOs first. `DESC`\
+ \ spends largest first."
+ enum:
+ - ASC
+ - DESC
+ - ADAPTIVE
+ example: ADAPTIVE
+ type: string
+ UtxoSelectionConfigEntry:
+ description: Config row stored at exactly the requested scope. Omitted from
+ the parent object when none exists; the server does not emit JSON `null`.
+ example:
+ strategy: ADAPTIVE
+ updatedAt: 2026-09-09T15:00:00Z
+ properties:
+ strategy:
+ $ref: "#/components/schemas/UtxoSelectionStrategyEnum"
+ updatedAt:
+ description: Time at which this configured row was last updated.
+ example: 2026-09-09T15:00:00Z
+ format: date-time
+ type: string
+ required:
+ - strategy
+ - updatedAt
+ type: object
+ UtxoSelectionConfigSourceEnum:
+ description: Where the effective strategy was resolved from. `DEFAULT` means
+ no stored row applies at this scope or any scope it inherits from - `effective.strategy`
+ reports whichever strategy currently applies. `WORKSPACE` and `VAULT_ASSET`
+ are stored rows.
+ enum:
+ - DEFAULT
+ - WORKSPACE
+ - VAULT_ASSET
+ example: DEFAULT
+ type: string
+ EffectiveUtxoSelectionConfig:
+ example:
+ source: DEFAULT
+ strategy: ADAPTIVE
+ properties:
+ strategy:
+ $ref: "#/components/schemas/UtxoSelectionStrategyEnum"
+ source:
+ $ref: "#/components/schemas/UtxoSelectionConfigSourceEnum"
+ required:
+ - source
+ - strategy
+ type: object
+ UtxoSelectionConfigResponse:
+ description: "`effective` is always present. `configured` is omitted when no\
+ \ row is stored at the requested scope (the server does not emit `\"configured\"\
+ : null`). PUT responses always include `configured`."
+ example:
+ configured:
+ strategy: ADAPTIVE
+ updatedAt: 2026-09-09T15:00:00Z
+ effective:
+ source: DEFAULT
+ strategy: ADAPTIVE
+ properties:
+ configured:
+ $ref: "#/components/schemas/UtxoSelectionConfigEntry"
+ effective:
+ $ref: "#/components/schemas/EffectiveUtxoSelectionConfig"
+ required:
+ - effective
+ type: object
+ UpsertUtxoSelectionConfigRequest:
+ example:
+ strategy: ADAPTIVE
+ properties:
+ strategy:
+ $ref: "#/components/schemas/UtxoSelectionStrategyEnum"
+ required:
+ - strategy
+ type: object
UtxoInput-2:
example:
index: 0
@@ -91981,8 +93582,11 @@ components:
example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
type: string
txHash:
- description: On-chain transaction hash
+ description: "On-chain transaction hash, in lowercase hex as the chain reports\
+ \ it. Matched case-sensitively, so an uppercase hash is never found."
example: b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c
+ maxLength: 64
+ pattern: "^[0-9a-fA-F]{1,64}$"
type: string
index:
description: Output index (vout)
@@ -92017,7 +93621,7 @@ components:
description: List of UTXO identifiers to apply label changes to
items:
$ref: "#/components/schemas/UtxoIdentifier"
- maxItems: 200
+ maxItems: 50
minItems: 1
type: array
labelsToAttach:
@@ -92098,6 +93702,75 @@ components:
$ref: "#/components/schemas/UtxoOutput"
type: array
type: object
+ UtxoLabelFailure:
+ description: "A requested identifier that blocked the label request, with the\
+ \ reason it could not be labelled."
+ properties:
+ identifier:
+ allOf:
+ - $ref: "#/components/schemas/UtxoIdentifier"
+ description: The identifier exactly as it was sent in the request.
+ example:
+ txId: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
+ reason:
+ description: |-
+ Why the identifier could not be labelled:
+ - `NOT_FOUND` — no UTXO for it in this vault and asset. Retrying can work once it is indexed.
+ - `NOT_LABELLABLE` — the UTXO exists but can no longer be labelled (spent, or removed; for a transaction ID, every output). Retrying will not help.
+ enum:
+ - NOT_FOUND
+ - NOT_LABELLABLE
+ - UNUSABLE_IDENTIFIER
+ example: NOT_LABELLABLE
+ type: string
+ utxoStatus:
+ description: |-
+ The UTXO status behind the reason, when one explains it.
+ With `NOT_FOUND`, `REMOVED` means the UTXO was removed within the last hour and may still reappear;
+ if it does not, the same request returns `NOT_LABELLABLE` after about an hour.
+ enum:
+ - SPENT
+ - REMOVED
+ example: SPENT
+ type: string
+ required:
+ - identifier
+ - reason
+ type: object
+ UtxoLabelsErrorResponse:
+ description: "Returned when a label request is rejected. The request is all-or-nothing,\
+ \ so no UTXO was labelled."
+ example:
+ failures:
+ - identifier:
+ txId: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
+ reason: NOT_LABELLABLE
+ utxoStatus: SPENT
+ message: "Cannot label the requested UTXOs: not labellable in its current\
+ \ status: b70701f4-d7b1-4795-a8ee-b09cdb5b850e"
+ properties:
+ message:
+ description: "Summary of the rejection. When `failures` is present, it names\
+ \ the identifiers that blocked the request."
+ example: "Cannot label the requested UTXOs: not labellable in its current\
+ \ status: b70701f4-d7b1-4795-a8ee-b09cdb5b850e"
+ type: string
+ failures:
+ description: |-
+ Every identifier that blocked the request, each with its own reason.
+ Identifiers not listed were valid; resend them without the failed ones.
+ Absent when the request itself was invalid (e.g. a malformed label).
+ example:
+ - identifier:
+ txId: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
+ reason: NOT_LABELLABLE
+ utxoStatus: SPENT
+ items:
+ $ref: "#/components/schemas/UtxoLabelFailure"
+ type: array
+ required:
+ - message
+ type: object
LeiStatus:
description: Approval status of a legal entity registration
enum:
@@ -93444,8 +95117,9 @@ components:
description: Accept a DTCC end-investor onboarding offer. Carries no arguments.
properties:
responseType:
- description: How you are answering the offer. Must be one of the values
- currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`.
+ description: |-
+ How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`.
+ `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved.
enum:
- DTCC_END_INVESTOR_ONBOARDING_ACCEPT
example: DTCC_END_INVESTOR_ONBOARDING_ACCEPT
@@ -93458,8 +95132,9 @@ components:
description: Reject a DTCC end-investor onboarding offer.
properties:
responseType:
- description: How you are answering the offer. Must be one of the values
- currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`.
+ description: |-
+ How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`.
+ `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved.
enum:
- DTCC_END_INVESTOR_ONBOARDING_REJECT
example: DTCC_END_INVESTOR_ONBOARDING_REJECT
@@ -93480,8 +95155,9 @@ components:
description: Accept a Tradeweb co-signing delegation offer. Carries no arguments.
properties:
responseType:
- description: How you are answering the offer. Must be one of the values
- currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`.
+ description: |-
+ How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`.
+ `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved.
enum:
- TRADEWEB_COSIGNING_DELEGATION_ACCEPT
example: TRADEWEB_COSIGNING_DELEGATION_ACCEPT
@@ -93495,8 +95171,9 @@ components:
\ — the DAR has nowhere on-ledger to record a reason, so none is accepted."
properties:
responseType:
- description: How you are answering the offer. Must be one of the values
- currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`.
+ description: |-
+ How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`.
+ `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved.
enum:
- TRADEWEB_COSIGNING_DELEGATION_REJECT
example: TRADEWEB_COSIGNING_DELEGATION_REJECT
@@ -93575,8 +95252,8 @@ components:
description: Which offer domain this response belongs to. Selects the shape
of `response`.
enum:
- - ALLOCATIONS
- example: ALLOCATIONS
+ - ALLOCATION
+ example: ALLOCATION
type: string
response:
$ref: "#/components/schemas/AllocationResponse"
@@ -93626,8 +95303,8 @@ components:
description: Which offer domain this response belongs to. Selects the shape
of `response`.
enum:
- - TRANSFERS
- example: TRANSFERS
+ - TRANSFER
+ example: TRANSFER
type: string
response:
$ref: "#/components/schemas/TransferResponse"
@@ -93639,8 +95316,8 @@ components:
discriminator:
mapping:
ONBOARDING: "#/components/schemas/OfferResponseOnboarding"
- ALLOCATIONS: "#/components/schemas/OfferResponseAllocation"
- TRANSFERS: "#/components/schemas/OfferResponseTransfer"
+ ALLOCATION: "#/components/schemas/OfferResponseAllocation"
+ TRANSFER: "#/components/schemas/OfferResponseTransfer"
propertyName: domain
oneOf:
- $ref: "#/components/schemas/OfferResponseOnboarding"
@@ -93692,10 +95369,6 @@ components:
description: DTCC infra operator party id.
example: dtcc-operator::1220abc…
type: string
- provider:
- description: DTCC provider party id.
- example: dtcc-provider::1220abc…
- type: string
compliance:
description: DTCC compliance party id.
example: dtcc-compliance::1220abc…
@@ -93708,13 +95381,19 @@ components:
description: DTCC client onboarder party id — co-signs the accept.
example: dtcc-onboarder::1220abc…
type: string
+ upgrader:
+ description: "DTCC upgrader party id — the Model Upgrade Tool authority.\
+ \ Supplied by DTCC during the off-chain registration, alongside the other\
+ \ party ids."
+ example: dtcc-upgrader::1220abc…
+ type: string
required:
- asset
- clientOnboarder
- compliance
- operator
- - provider
- registrar
+ - upgrader
- vaultAccountId
type: object
CantonCallParticipantOnboarding:
@@ -93859,17 +95538,6 @@ components:
type: object
AllocationWithdrawPayload:
properties:
- vaultAccountId:
- description: The vault account whose Canton wallet acts here.
- example: "12"
- type: string
- asset:
- description: Chain asset — `CANTON` or `CANTON_TEST`.
- enum:
- - CANTON
- - CANTON_TEST
- example: CANTON
- type: string
allocationTransactionId:
description: The Fireblocks transaction id of the outgoing response that
created the allocation. The allocation is resolved from it — Canton contract
@@ -93878,8 +95546,6 @@ components:
type: string
required:
- allocationTransactionId
- - asset
- - vaultAccountId
type: object
CantonCallAllocationWithdraw:
additionalProperties: false
diff --git a/build.gradle b/build.gradle
index 8e211dba..d43e483e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,7 +3,7 @@ apply plugin: 'eclipse'
apply plugin: 'com.diffplug.spotless'
group = 'com.fireblocks.sdk'
-version = '32.0.0'
+version = '0.0.0'
buildscript {
repositories {
diff --git a/docs/AddressRegistryCreateProofOfOwnershipRequest.md b/docs/AddressRegistryCreateProofOfOwnershipRequest.md
new file mode 100644
index 00000000..0b9bbba2
--- /dev/null
+++ b/docs/AddressRegistryCreateProofOfOwnershipRequest.md
@@ -0,0 +1,14 @@
+
+
+# AddressRegistryCreateProofOfOwnershipRequest
+
+Request body for creating an Address Registry Proof of Ownership PDF export.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**address** | **String** | Blockchain address to prove ownership for (must resolve to the caller's workspace). Same format expectations as the `address` path parameter on `GET /v1/address_registry/legal_entities/{address}`. | |
+
+
+
diff --git a/docs/AddressRegistryCreateProofOfOwnershipResponse.md b/docs/AddressRegistryCreateProofOfOwnershipResponse.md
new file mode 100644
index 00000000..64274aad
--- /dev/null
+++ b/docs/AddressRegistryCreateProofOfOwnershipResponse.md
@@ -0,0 +1,17 @@
+
+
+# AddressRegistryCreateProofOfOwnershipResponse
+
+Address Registry Proof of Ownership PDF export, created successfully.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**pdf** | **byte[]** | Base64-encoded Proof of Ownership PDF bytes. Fireblocks does not store the PDF: save it immediately, there is no re-download route. | |
+|**exportId** | **UUID** | Stable id of the online-verifiable export record. | |
+|**verificationHash** | **String** | Verification hash bound to the export (also printed on the PDF). | |
+|**expiresAt** | **String** | Inclusive last UTC calendar day online verification is available (`YYYY-MM-DD`). | |
+
+
+
diff --git a/docs/AddressRegistryError.md b/docs/AddressRegistryError.md
deleted file mode 100644
index 3b915c0a..00000000
--- a/docs/AddressRegistryError.md
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-# AddressRegistryError
-
-Error body for address registry operations (4xx and 5xx).
-
-## Properties
-
-| Name | Type | Description | Notes |
-|------------ | ------------- | ------------- | -------------|
-|**code** | **Integer** | Application error code when present. For HTTP 400 on legal-entity lookup, distinguish: 4100 — request validation (e.g. missing, empty, or whitespace-only `address` after trim); 2140 — workspace not opted in to the address registry (`AR_OPT_IN_REQUIRED`). 2142 — not found (404). Other codes may appear, including on server errors. | [optional] |
-|**message** | **String** | Human-readable error message | |
-
-
-
diff --git a/docs/AddressRegistryLegalEntity.md b/docs/AddressRegistryLegalEntity.md
index ae155535..8be89fba 100644
--- a/docs/AddressRegistryLegalEntity.md
+++ b/docs/AddressRegistryLegalEntity.md
@@ -12,8 +12,9 @@ Legal entity details for a blockchain address.
|**entityName** | **String** | Legal entity display name. | |
|**jurisdiction** | **String** | Jurisdiction (e.g. ISO 3166-1 alpha-2 country code). | |
|**lei** | **String** | Legal Entity Identifier when available. Empty when `leiData` is `false`. | |
-|**travelRuleProviders** | **List<AddressRegistryTravelRuleProvider>** | | |
+|**travelRuleProviders** | **List<String>** | | |
|**email** | **String** | Travel Rule contact email when available. | |
+|**proofOfOwnershipAvailable** | **Boolean** | Whether the caller can currently create a Proof of Ownership PDF for this address (`POST /v1/address_registry/proof_of_ownership_exports`). | |
diff --git a/docs/AddressRegistryTravelRuleProvider.md b/docs/AddressRegistryTravelRuleProvider.md
deleted file mode 100644
index e2a95a96..00000000
--- a/docs/AddressRegistryTravelRuleProvider.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-# AddressRegistryTravelRuleProvider
-
-## Enum
-
-
-* `TRAVEL_RULE_PROVIDER_NOTABENE` (value: `"TRAVEL_RULE_PROVIDER_NOTABENE"`)
-
-* `TRAVEL_RULE_PROVIDER_SYGNA` (value: `"TRAVEL_RULE_PROVIDER_SYGNA"`)
-
-* `TRAVEL_RULE_PROVIDER_TRISA` (value: `"TRAVEL_RULE_PROVIDER_TRISA"`)
-
-* `TRAVEL_RULE_PROVIDER_OPENVASP` (value: `"TRAVEL_RULE_PROVIDER_OPENVASP"`)
-
-
-
diff --git a/docs/AddressRegistryVerifyProofOfOwnershipRequest.md b/docs/AddressRegistryVerifyProofOfOwnershipRequest.md
new file mode 100644
index 00000000..fb598392
--- /dev/null
+++ b/docs/AddressRegistryVerifyProofOfOwnershipRequest.md
@@ -0,0 +1,17 @@
+
+
+# AddressRegistryVerifyProofOfOwnershipRequest
+
+Request body for verifying an Address Registry Proof of Ownership export.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**exportId** | **UUID** | Export id from create / the PDF. | |
+|**verificationHash** | **String** | Verification hash from create / the PDF (exact match required). | |
+|**address** | **String** | Address from the PDF (exact UTF-8 match to the stored export). | |
+|**expiresAt** | **String** | Optional but recommended: the PDF's \"Online verification available until\" date (`YYYY-MM-DD`), which speeds up the lookup. A wrong value yields `valid: false` even if the export exists — copy it exactly from the PDF, or omit it. | [optional] |
+
+
+
diff --git a/docs/AddressRegistryVerifyProofOfOwnershipResponse.md b/docs/AddressRegistryVerifyProofOfOwnershipResponse.md
new file mode 100644
index 00000000..3a591615
--- /dev/null
+++ b/docs/AddressRegistryVerifyProofOfOwnershipResponse.md
@@ -0,0 +1,15 @@
+
+
+# AddressRegistryVerifyProofOfOwnershipResponse
+
+Online verification result. Authenticated calls always return HTTP 200 with this body (`valid: true` or `valid: false`); unknown/expired exports do not use 404.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**valid** | **Boolean** | Whether the stored export matches the supplied verification hash and address within retention. | |
+|**expiresAt** | **String** | Inclusive last UTC calendar day (`YYYY-MM-DD`) when `valid` is true; empty string when `valid` is false. | |
+
+
+
diff --git a/docs/AllocationWithdrawPayload.md b/docs/AllocationWithdrawPayload.md
index cf6f3610..28d82ba5 100644
--- a/docs/AllocationWithdrawPayload.md
+++ b/docs/AllocationWithdrawPayload.md
@@ -7,18 +7,7 @@
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
-|**vaultAccountId** | **String** | The vault account whose Canton wallet acts here. | |
-|**asset** | [**AssetEnum**](#AssetEnum) | Chain asset — `CANTON` or `CANTON_TEST`. | |
|**allocationTransactionId** | **String** | The Fireblocks transaction id of the outgoing response that created the allocation. The allocation is resolved from it — Canton contract ids are never accepted here. | |
-## Enum: AssetEnum
-
-| Name | Value |
-|---- | -----|
-| CANTON | "CANTON" |
-| CANTON_TEST | "CANTON_TEST" |
-
-
-
diff --git a/docs/CantonCallDetails.md b/docs/CantonCallDetails.md
new file mode 100644
index 00000000..8abe77c8
--- /dev/null
+++ b/docs/CantonCallDetails.md
@@ -0,0 +1,18 @@
+
+
+# CantonCallDetails
+
+A call made through the Canton calls endpoint. Written once and never changed.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**version** | **Integer** | The shape of this block. Stamped at creation and never changed, so a reader always knows which version it is holding. | [optional] |
+|**domain** | **CantonDomainEnum** | | [optional] |
+|**type** | **String** | The call type, matching the `type` sent when the call was created. | [optional] |
+|**vendor** | **CantonVendorEnum** | | [optional] |
+|**originalTransactionId** | **String** | The transaction this call acts on. On a withdraw it is the allocation that was withdrawn, so the withdraw transaction read on its own still says what it withdrew. | [optional] |
+
+
+
diff --git a/docs/CantonDetails.md b/docs/CantonDetails.md
new file mode 100644
index 00000000..102c674e
--- /dev/null
+++ b/docs/CantonDetails.md
@@ -0,0 +1,16 @@
+
+
+# CantonDetails
+
+Canton transaction context. Present on transactions that belong to a Canton flow, and the authoritative signal that a transaction IS one — do not branch on `operation`, which is `CANTON_CALL` for customer-initiated calls but `TRANSFER` for an incoming Canton transfer offer. **No `cantonDetails` at all means the transaction is not a Canton item.** The service sets exactly one of `offerResponse`, `call` or `settlement`. That is a guarantee about what is sent, NOT a constraint this schema enforces: the three are declared as independent optional properties on purpose, so that a response carrying a block a client does not yet know about — or a row written before a block type existed — still validates. Response schemas here stay additive. Read the block you recognise; do not reject a payload for the shape of the others. Every block carries `version`, stamped when the transaction is created and never changed — a transaction written today keeps its shape, so `version` is how you know which shape you are reading.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**offerResponse** | [**CantonOfferResponseDetails**](CantonOfferResponseDetails.md) | | [optional] |
+|**call** | [**CantonCallDetails**](CantonCallDetails.md) | | [optional] |
+|**settlement** | [**CantonSettlementDetails**](CantonSettlementDetails.md) | | [optional] |
+
+
+
diff --git a/docs/CantonDomainEnum.md b/docs/CantonDomainEnum.md
new file mode 100644
index 00000000..d4a47f76
--- /dev/null
+++ b/docs/CantonDomainEnum.md
@@ -0,0 +1,15 @@
+
+
+# CantonDomainEnum
+
+## Enum
+
+
+* `ONBOARDING` (value: `"ONBOARDING"`)
+
+* `ALLOCATION` (value: `"ALLOCATION"`)
+
+* `TRANSFER` (value: `"TRANSFER"`)
+
+
+
diff --git a/docs/CantonOfferResponseDetails.md b/docs/CantonOfferResponseDetails.md
new file mode 100644
index 00000000..7bcdb47f
--- /dev/null
+++ b/docs/CantonOfferResponseDetails.md
@@ -0,0 +1,30 @@
+
+
+# CantonOfferResponseDetails
+
+The transaction belongs to an offer conversation: the offer itself, the response to it, or a leg that carries no answer of its own. The only block that changes over a transaction's lifetime.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**version** | **Integer** | The shape of this block. Stamped at creation and never changed, so a reader always knows which version it is holding. | [optional] |
+|**domain** | **CantonDomainEnum** | | [optional] |
+|**vendor** | **CantonVendorEnum** | | [optional] |
+|**availableResponses** | **List<String>** | The responses that can be sent for this offer right now. An empty array means nothing is answerable on this transaction — which is the difference between an actionable offer and a linked leg that shares its sub-status. | [optional] |
+|**expiresAt** | **OffsetDateTime** | When the offer expires, where it has a deadline. | [optional] |
+|**approvalTransactionId** | **String** | The response transaction, once one has been dispatched for this offer. | [optional] |
+|**originalTransactionId** | **String** | The transaction this one relates to — the offer a response answered. | [optional] |
+|**verdict** | [**VerdictEnum**](#VerdictEnum) | The outcome, set once the transaction reaches a terminal status. | [optional] |
+
+
+
+## Enum: VerdictEnum
+
+| Name | Value |
+|---- | -----|
+| ACCEPTED | "ACCEPTED" |
+| REJECTED | "REJECTED" |
+
+
+
diff --git a/docs/CantonSettlementDetails.md b/docs/CantonSettlementDetails.md
new file mode 100644
index 00000000..21485d7a
--- /dev/null
+++ b/docs/CantonSettlementDetails.md
@@ -0,0 +1,17 @@
+
+
+# CantonSettlementDetails
+
+The credit side of a delivery-versus-payment: a venue settled an allocation. Written once, at creation — the transaction is already complete when it appears.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**version** | **Integer** | The shape of this block. Stamped at creation and never changed, so a reader always knows which version it is holding. | [optional] |
+|**domain** | **CantonDomainEnum** | | [optional] |
+|**type** | **String** | The settlement type. | [optional] |
+|**originalTransactionId** | **String** | The allocation this receipt settles. | [optional] |
+
+
+
diff --git a/docs/CantonVendorEnum.md b/docs/CantonVendorEnum.md
new file mode 100644
index 00000000..b2d624b5
--- /dev/null
+++ b/docs/CantonVendorEnum.md
@@ -0,0 +1,13 @@
+
+
+# CantonVendorEnum
+
+## Enum
+
+
+* `DTCC` (value: `"DTCC"`)
+
+* `TRADEWEB` (value: `"TRADEWEB"`)
+
+
+
diff --git a/docs/ComplianceApi.md b/docs/ComplianceApi.md
index 5352fe39..caff9ade 100644
--- a/docs/ComplianceApi.md
+++ b/docs/ComplianceApi.md
@@ -8,6 +8,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| [**activateByorkConfig**](ComplianceApi.md#activateByorkConfig) | **POST** /screening/byork/config/activate | Activate BYORK Light |
| [**addAddressRegistryVaultOptOuts**](ComplianceApi.md#addAddressRegistryVaultOptOuts) | **POST** /address_registry/vaults | Add vault accounts to the address registry opt-out list |
| [**assignVaultsToLegalEntity**](ComplianceApi.md#assignVaultsToLegalEntity) | **POST** /legal_entities/{legalEntityId}/vaults | Assign vault accounts to a legal entity |
+| [**createAddressRegistryProofOfOwnership**](ComplianceApi.md#createAddressRegistryProofOfOwnership) | **POST** /address_registry/proof_of_ownership_exports | Create a Proof of Ownership PDF for an address |
| [**createCounterpartyGroup**](ComplianceApi.md#createCounterpartyGroup) | **POST** /counterparty_groups | Create a counterparty group |
| [**deactivateArsConfig**](ComplianceApi.md#deactivateArsConfig) | **POST** /screening/ars/config/deactivate | Deactivate ARS (Address Registry Screening) |
| [**deactivateByorkConfig**](ComplianceApi.md#deactivateByorkConfig) | **POST** /screening/byork/config/deactivate | Deactivate BYORK Light |
@@ -44,6 +45,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| [**updateLegalEntity**](ComplianceApi.md#updateLegalEntity) | **PUT** /legal_entities/{legalEntityId} | Update legal entity |
| [**updateScreeningConfiguration**](ComplianceApi.md#updateScreeningConfiguration) | **PUT** /screening/configurations | Tenant - Screening Configuration |
| [**updateTravelRuleConfig**](ComplianceApi.md#updateTravelRuleConfig) | **PUT** /screening/travel_rule/policy_configuration | Update Travel Rule Configuration |
+| [**verifyAddressRegistryProofOfOwnership**](ComplianceApi.md#verifyAddressRegistryProofOfOwnership) | **POST** /address_registry/proof_of_ownership_exports/verify | Verify a Proof of Ownership export |
@@ -365,6 +367,91 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## createAddressRegistryProofOfOwnership
+
+> CompletableFuture> createAddressRegistryProofOfOwnership createAddressRegistryProofOfOwnership(addressRegistryCreateProofOfOwnershipRequest, idempotencyKey)
+
+Create a Proof of Ownership PDF for an address
+
+Creates a Proof of Ownership PDF for a blockchain address owned by the authenticated workspace — for example, to share with a counterparty or bank as compliance evidence. Recipients can confirm it with `POST /v1/address_registry/proof_of_ownership_exports/verify`. Check `proofOfOwnershipAvailable` on `GET /v1/address_registry/legal_entities/{address}` first if you want to know whether create is likely to succeed.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.ComplianceApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ AddressRegistryCreateProofOfOwnershipRequest addressRegistryCreateProofOfOwnershipRequest = new AddressRegistryCreateProofOfOwnershipRequest(); // AddressRegistryCreateProofOfOwnershipRequest |
+ String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
+ try {
+ CompletableFuture> response = fireblocks.compliance().createAddressRegistryProofOfOwnership(addressRegistryCreateProofOfOwnershipRequest, idempotencyKey);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling ComplianceApi#createAddressRegistryProofOfOwnership");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **addressRegistryCreateProofOfOwnershipRequest** | [**AddressRegistryCreateProofOfOwnershipRequest**](AddressRegistryCreateProofOfOwnershipRequest.md)| | |
+| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | PDF export created | * X-Request-ID -
|
+| **400** | - Missing, empty, or whitespace-only `address`. Error code 4100. - Workspace not opted in to the address registry. Error code 2140. | * X-Request-ID -
|
+| **403** | This workspace is blocked from creating Proof of Ownership exports. Error code 2146. | * X-Request-ID -
|
+| **404** | Address not found, not owned by this workspace, or not usable for export. Error code 2142. | * X-Request-ID -
|
+| **429** | Rate limited. Error code 2145. Retry-safe after backing off. | * X-Request-ID -
|
+| **500** | Internal error. No PDF is returned. Not retry-safe. Error code 2143. | * X-Request-ID -
|
+| **503** | Rate-limit infrastructure temporarily unavailable. Safe to retry with backoff. Error code 2143 — same as the 500 case; use the HTTP status to tell them apart. | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## createCounterpartyGroup
> CompletableFuture> createCounterpartyGroup createCounterpartyGroup(createCounterpartyGroupRequest, idempotencyKey)
@@ -1434,8 +1521,10 @@ No authorization required
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | Legal entity found | * X-Request-ID -
|
-| **400** | Bad request — either request validation (path `{address}` empty or whitespace-only after trim, e.g. encoded spaces only; numeric code 4100), or the authenticated workspace is not opted in to the address registry (numeric code 2140). The `message` field describes the failure; use `code` to distinguish. | * X-Request-ID -
|
-| **404** | Not found (error code 2142) — unresolved address, no legal entity for a resolved address, or the same not-found outcome in other cases. | * X-Request-ID -
|
+| **400** | - `{address}` empty or whitespace-only after trim. Error code 4100. - Workspace not opted in to the address registry. Error code 2140. | * X-Request-ID -
|
+| **403** | This workspace is blocked from Address Registry public lookup. Error code 2146. | * X-Request-ID -
|
+| **404** | Address not found, owner not opted in, or legal entity not usable for lookup. Error code 2142. | * X-Request-ID -
|
+| **429** | Rate limited. Error code 2145. Retry-safe after backing off. | * X-Request-ID -
|
| **0** | Error Response | * X-Request-ID -
|
@@ -3167,3 +3256,83 @@ No authorization required
|-------------|-------------|------------------|
| **200** | Configuration updated successfully. | - |
+
+## verifyAddressRegistryProofOfOwnership
+
+> CompletableFuture> verifyAddressRegistryProofOfOwnership verifyAddressRegistryProofOfOwnership(addressRegistryVerifyProofOfOwnershipRequest, idempotencyKey)
+
+Verify a Proof of Ownership export
+
+Verifies a Proof of Ownership export against the record Fireblocks stored at creation. Returns `valid: false` (not 404) for an unknown, expired, or mismatched export. Available to any authenticated Fireblocks workspace, not just the export's original owner.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.ComplianceApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ AddressRegistryVerifyProofOfOwnershipRequest addressRegistryVerifyProofOfOwnershipRequest = new AddressRegistryVerifyProofOfOwnershipRequest(); // AddressRegistryVerifyProofOfOwnershipRequest |
+ String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
+ try {
+ CompletableFuture> response = fireblocks.compliance().verifyAddressRegistryProofOfOwnership(addressRegistryVerifyProofOfOwnershipRequest, idempotencyKey);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling ComplianceApi#verifyAddressRegistryProofOfOwnership");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **addressRegistryVerifyProofOfOwnershipRequest** | [**AddressRegistryVerifyProofOfOwnershipRequest**](AddressRegistryVerifyProofOfOwnershipRequest.md)| | |
+| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Verification result | * X-Request-ID -
|
+| **400** | Missing, empty, or whitespace-only `exportId`, `verificationHash`, or `address`, or `expiresAt` not empty and not a valid `YYYY-MM-DD` date. Error code 4100. | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
diff --git a/docs/ConnectedAccountsBetaApi.md b/docs/ConnectedAccountsApi.md
similarity index 86%
rename from docs/ConnectedAccountsBetaApi.md
rename to docs/ConnectedAccountsApi.md
index b95d66df..6aa09458 100644
--- a/docs/ConnectedAccountsBetaApi.md
+++ b/docs/ConnectedAccountsApi.md
@@ -1,22 +1,22 @@
-# ConnectedAccountsBetaApi
+# ConnectedAccountsApi
All URIs are relative to https://developers.fireblocks.com/reference/
| Method | HTTP request | Description |
|------------- | ------------- | -------------|
-| [**addConnectedAccount**](ConnectedAccountsBetaApi.md#addConnectedAccount) | **POST** /connected_accounts | Add a connected account |
-| [**disconnectConnectedAccount**](ConnectedAccountsBetaApi.md#disconnectConnectedAccount) | **DELETE** /connected_accounts/{accountId} | Disconnect connected account |
-| [**getConnectedAccount**](ConnectedAccountsBetaApi.md#getConnectedAccount) | **GET** /connected_accounts/{accountId} | Get connected account |
-| [**getConnectedAccountAllowlist**](ConnectedAccountsBetaApi.md#getConnectedAccountAllowlist) | **GET** /connected_accounts/{accountId}/allowlist | Get allowlist for connected account |
-| [**getConnectedAccountAllowlistEntry**](ConnectedAccountsBetaApi.md#getConnectedAccountAllowlistEntry) | **GET** /connected_accounts/{accountId}/allowlist/{allowlistId} | Get a single allowlist entry for a connected account |
-| [**getConnectedAccountBalances**](ConnectedAccountsBetaApi.md#getConnectedAccountBalances) | **GET** /connected_accounts/{accountId}/balances | Get balances for an account |
-| [**getConnectedAccountRates**](ConnectedAccountsBetaApi.md#getConnectedAccountRates) | **GET** /connected_accounts/{accountId}/rates | Get exchange rates for an account |
-| [**getConnectedAccountTradingPairs**](ConnectedAccountsBetaApi.md#getConnectedAccountTradingPairs) | **GET** /connected_accounts/{accountId}/manifest/capabilities/trading/pairs | Get supported trading pairs for an account |
-| [**getConnectedAccounts**](ConnectedAccountsBetaApi.md#getConnectedAccounts) | **GET** /connected_accounts | Get connected accounts |
-| [**getConnectedAccountsCredentialsPublicKey**](ConnectedAccountsBetaApi.md#getConnectedAccountsCredentialsPublicKey) | **GET** /connected_accounts/credentials/public_key | Get public key to encrypt connected account credentials |
-| [**renameConnectedAccount**](ConnectedAccountsBetaApi.md#renameConnectedAccount) | **POST** /connected_accounts/{accountId}/rename | Rename Connected Account |
-| [**syncConnectedAccountAllowlist**](ConnectedAccountsBetaApi.md#syncConnectedAccountAllowlist) | **POST** /connected_accounts/{accountId}/allowlist/sync | Sync allowlist for connected account |
-| [**updateConnectedAccountCredentials**](ConnectedAccountsBetaApi.md#updateConnectedAccountCredentials) | **POST** /connected_accounts/{accountId}/credentials | Update connected account credentials |
+| [**addConnectedAccount**](ConnectedAccountsApi.md#addConnectedAccount) | **POST** /connected_accounts | Add a connected account |
+| [**disconnectConnectedAccount**](ConnectedAccountsApi.md#disconnectConnectedAccount) | **DELETE** /connected_accounts/{accountId} | Disconnect connected account |
+| [**getConnectedAccount**](ConnectedAccountsApi.md#getConnectedAccount) | **GET** /connected_accounts/{accountId} | Get connected account |
+| [**getConnectedAccountAllowlist**](ConnectedAccountsApi.md#getConnectedAccountAllowlist) | **GET** /connected_accounts/{accountId}/allowlist | Get allowlist for connected account |
+| [**getConnectedAccountAllowlistEntry**](ConnectedAccountsApi.md#getConnectedAccountAllowlistEntry) | **GET** /connected_accounts/{accountId}/allowlist/{allowlistId} | Get a single allowlist entry for a connected account |
+| [**getConnectedAccountBalances**](ConnectedAccountsApi.md#getConnectedAccountBalances) | **GET** /connected_accounts/{accountId}/balances | Get balances for an account |
+| [**getConnectedAccountRates**](ConnectedAccountsApi.md#getConnectedAccountRates) | **GET** /connected_accounts/{accountId}/rates | Get exchange rates for an account |
+| [**getConnectedAccountTradingPairs**](ConnectedAccountsApi.md#getConnectedAccountTradingPairs) | **GET** /connected_accounts/{accountId}/manifest/capabilities/trading/pairs | Get supported trading pairs for an account |
+| [**getConnectedAccounts**](ConnectedAccountsApi.md#getConnectedAccounts) | **GET** /connected_accounts | Get connected accounts |
+| [**getConnectedAccountsCredentialsPublicKey**](ConnectedAccountsApi.md#getConnectedAccountsCredentialsPublicKey) | **GET** /connected_accounts/credentials/public_key | Get public key to encrypt connected account credentials |
+| [**renameConnectedAccount**](ConnectedAccountsApi.md#renameConnectedAccount) | **POST** /connected_accounts/{accountId}/rename | Rename Connected Account |
+| [**syncConnectedAccountAllowlist**](ConnectedAccountsApi.md#syncConnectedAccountAllowlist) | **POST** /connected_accounts/{accountId}/allowlist/sync | Sync allowlist for connected account |
+| [**updateConnectedAccountCredentials**](ConnectedAccountsApi.md#updateConnectedAccountCredentials) | **POST** /connected_accounts/{accountId}/credentials | Update connected account credentials |
@@ -26,7 +26,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/
Add a connected account
-Creates a new connected account for the authenticated tenant. The `creds` field must be a Base64-encoded RSA-encrypted credential blob. Use `GET /connected_accounts/credentials/public_key` to retrieve the public key for encryption. The `providerType` is derived server-side from the `providerId` — callers do not supply it. Endpoint Permission: Editor, Admin, Non-Signing Admin. **Note:** This endpoint is currently in beta and might be subject to changes.
+Creates a new connected account for the authenticated tenant. The `creds` field must be a Base64-encoded RSA-encrypted credential blob. Use `GET /connected_accounts/credentials/public_key` to retrieve the public key for encryption. The `providerType` is derived server-side from the `providerId` — callers do not supply it. Endpoint Permission: Editor, Admin, Non-Signing Admin.
### Example
@@ -39,7 +39,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -54,13 +54,13 @@ public class Example {
AddConnectedAccountRequest addConnectedAccountRequest = new AddConnectedAccountRequest(); // AddConnectedAccountRequest |
String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().addConnectedAccount(addConnectedAccountRequest, idempotencyKey);
+ CompletableFuture> response = fireblocks.connectedAccounts().addConnectedAccount(addConnectedAccountRequest, idempotencyKey);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#addConnectedAccount");
+ System.err.println("Exception when calling ConnectedAccountsApi#addConnectedAccount");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -110,7 +110,7 @@ No authorization required
Disconnect connected account
-Disconnect a connected account by ID. **Note**: - This endpoint is currently in beta and might be subject to changes.
+Disconnect a connected account by ID.
### Example
@@ -123,7 +123,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -137,12 +137,12 @@ public class Example {
String accountId = "accountId_example"; // String | The ID of the account to disconnect.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().disconnectConnectedAccount(accountId);
+ CompletableFuture> response = fireblocks.connectedAccounts().disconnectConnectedAccount(accountId);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#disconnectConnectedAccount");
+ System.err.println("Exception when calling ConnectedAccountsApi#disconnectConnectedAccount");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -186,7 +186,7 @@ No authorization required
Get connected account
-Retrieve detailed information about a specific connected account by ID. **Note:** This endpoint is currently in beta and might be subject to changes.
+Retrieve detailed information about a specific connected account by ID.
### Example
@@ -199,7 +199,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -213,13 +213,13 @@ public class Example {
String accountId = "accountId_example"; // String | The ID of the account to fetch.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccount(accountId);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccount(accountId);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccount");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccount");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -263,7 +263,7 @@ No authorization required
Get allowlist for connected account
-Retrieves the address allowlist for a specified connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
+Retrieves the address allowlist for a specified connected account. **Note:** Currently supports CoinbaseExchange/Binance accounts only.
### Example
@@ -276,7 +276,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -297,13 +297,13 @@ public class Example {
Integer pageSize = 56; // Integer | Maximum number of entries to return
String order = "ASC"; // String | Sort order (ASC or DESC).
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId, status, assetId, networkId, address, pageCursor, pageSize, order);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountAllowlist(accountId, status, assetId, networkId, address, pageCursor, pageSize, order);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountAllowlist");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccountAllowlist");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -355,7 +355,7 @@ No authorization required
Get a single allowlist entry for a connected account
-Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
+Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account. **Note:** Currently supports CoinbaseExchange/Binance accounts only.
### Example
@@ -368,7 +368,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -383,13 +383,13 @@ public class Example {
String accountId = "accountId_example"; // String | The connected account identifier
String allowlistId = "allowlistId_example"; // String | The Fireblocks allowlist entry identifier
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId, allowlistId);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountAllowlistEntry(accountId, allowlistId);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountAllowlistEntry");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccountAllowlistEntry");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -435,7 +435,7 @@ No authorization required
Get balances for an account
-Retrieve current asset balances for a specific connected account as a flat list (one row per `assetId`, `balanceType`). **Note:** This endpoint is currently in beta and might be subject to changes.
+Retrieve current asset balances for a specific connected account as a flat list (one row per `assetId`, `balanceType`).
### Example
@@ -448,7 +448,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -464,13 +464,13 @@ public class Example {
Integer pageSize = 56; // Integer | Page size for pagination.
String pageCursor = "pageCursor_example"; // String | Page cursor for pagination.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountBalances(accountId, pageSize, pageCursor);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountBalances(accountId, pageSize, pageCursor);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountBalances");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccountBalances");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -516,7 +516,7 @@ No authorization required
Get exchange rates for an account
-Retrieve current exchange rates for converting between specific assets in a connected account. **Note:** This endpoint is currently in beta and might be subject to changes.
+Retrieve current exchange rates for converting between specific assets in a connected account.
### Example
@@ -529,7 +529,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -545,13 +545,13 @@ public class Example {
String baseAssetId = "baseAssetId_example"; // String | The ID of the asset to fetch rates for.
String quoteAssetId = "quoteAssetId_example"; // String | The ID of the asset to get the rates nominally.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountRates(accountId, baseAssetId, quoteAssetId);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountRates(accountId, baseAssetId, quoteAssetId);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountRates");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccountRates");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -597,7 +597,7 @@ No authorization required
Get supported trading pairs for an account
-Retrieve all asset trading pairs supported by a specific connected account, including the pair type (`quote`, `market`, `onOffRamp`). **Note:** This endpoint is currently in beta and might be subject to changes.
+Retrieve all asset trading pairs supported by a specific connected account, including the pair type (`quote`, `market`, `onOffRamp`).
### Example
@@ -610,7 +610,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -626,13 +626,13 @@ public class Example {
Integer pageSize = 100; // Integer | Page size for pagination.
String pageCursor = "pageCursor_example"; // String | Page cursor for pagination.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountTradingPairs(accountId, pageSize, pageCursor);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountTradingPairs(accountId, pageSize, pageCursor);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountTradingPairs");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccountTradingPairs");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -678,7 +678,7 @@ No authorization required
Get connected accounts
-Returns all connected accounts. **Note:** This endpoint is currently in beta and might be subject to changes.
+Returns all connected accounts.
### Example
@@ -691,7 +691,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -707,13 +707,13 @@ public class Example {
Integer pageSize = 56; // Integer | Page size for pagination.
String pageCursor = "pageCursor_example"; // String | Page cursor for pagination.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccounts(mainAccounts, pageSize, pageCursor);
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccounts(mainAccounts, pageSize, pageCursor);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccounts");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccounts");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -759,7 +759,7 @@ No authorization required
Get public key to encrypt connected account credentials
-Returns the RSA public key used to encrypt the `creds` field before calling `POST /connected_accounts`. The key is a singleton resource scoped to the connected-accounts credentials domain — there is one per tenant context. **Note:** This endpoint is currently in beta and might be subject to changes.
+Returns the RSA public key used to encrypt the `creds` field before calling `POST /connected_accounts`. The key is a singleton resource scoped to the connected-accounts credentials domain — there is one per tenant context.
### Example
@@ -772,7 +772,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -785,13 +785,13 @@ public class Example {
Fireblocks fireblocks = new Fireblocks(configurationOptions);
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountsCredentialsPublicKey();
+ CompletableFuture> response = fireblocks.connectedAccounts().getConnectedAccountsCredentialsPublicKey();
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountsCredentialsPublicKey");
+ System.err.println("Exception when calling ConnectedAccountsApi#getConnectedAccountsCredentialsPublicKey");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -832,7 +832,7 @@ No authorization required
Rename Connected Account
-Rename a connected account by account ID. **Note:** This endpoint is currently in beta and might be subject to changes.
+Rename a connected account by account ID.
### Example
@@ -845,7 +845,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -861,13 +861,13 @@ public class Example {
String accountId = "accountId_example"; // String | The unique identifier of the connected account
String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().renameConnectedAccount(renameConnectedAccountRequest, accountId, idempotencyKey);
+ CompletableFuture> response = fireblocks.connectedAccounts().renameConnectedAccount(renameConnectedAccountRequest, accountId, idempotencyKey);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#renameConnectedAccount");
+ System.err.println("Exception when calling ConnectedAccountsApi#renameConnectedAccount");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -918,7 +918,7 @@ No authorization required
Sync allowlist for connected account
-Triggers an on-demand sync from the exchange, bypassing the cache and fetching live data immediately. **Rate limit:** 1 request per minute per connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
+Triggers an on-demand sync from the exchange, bypassing the cache and fetching live data immediately. **Rate limit:** 1 request per minute per connected account. **Note:** Currently supports CoinbaseExchange/Binance accounts only.
### Example
@@ -931,7 +931,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -946,12 +946,12 @@ public class Example {
String accountId = "accountId_example"; // String | The connected account identifier
String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId, idempotencyKey);
+ CompletableFuture> response = fireblocks.connectedAccounts().syncConnectedAccountAllowlist(accountId, idempotencyKey);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#syncConnectedAccountAllowlist");
+ System.err.println("Exception when calling ConnectedAccountsApi#syncConnectedAccountAllowlist");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
@@ -996,7 +996,7 @@ No authorization required
Update connected account credentials
-Replace the API credentials (secret + API key) of a connected account. Credentials belong to an API key, which can back a single account or an entire hierarchy. Updating them affects all accounts sharing that key, so the endpoint returns an array of modified accounts. The `creds` field must be a Base64-encoded RSA-encrypted credential blob; use `GET /connected_accounts/credentials/public_key` to retrieve the public key for encryption. Both `creds` and `apiKey` are mandatory. Validation against the exchange is synchronous, but the update itself is **pending mobile approval** — the existing credentials stay live until the change is approved, so none of the affected accounts are disconnected in the meantime. Endpoint Permission: Admin, Non-Signing Admin. **Note:** This endpoint is currently in beta and might be subject to changes.
+Replace the API credentials (secret + API key) of a connected account. Credentials belong to an API key, which can back a single account or an entire hierarchy. Updating them affects all accounts sharing that key, so the endpoint returns an array of modified accounts. The `creds` field must be a Base64-encoded RSA-encrypted credential blob; use `GET /connected_accounts/credentials/public_key` to retrieve the public key for encryption. Both `creds` and `apiKey` are mandatory. Validation against the exchange is synchronous, but the update itself is **pending mobile approval** — the existing credentials stay live until the change is approved, so none of the affected accounts are disconnected in the meantime. Endpoint Permission: Admin, Non-Signing Admin.
### Example
@@ -1009,7 +1009,7 @@ import com.fireblocks.sdk.BasePath;
import com.fireblocks.sdk.Fireblocks;
import com.fireblocks.sdk.ConfigurationOptions;
import com.fireblocks.sdk.model.*;
-import com.fireblocks.sdk.api.ConnectedAccountsBetaApi;
+import com.fireblocks.sdk.api.ConnectedAccountsApi;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -1025,13 +1025,13 @@ public class Example {
String accountId = "2c96e3aa-07ca-4524-a026-75579d25e24a"; // String | The unique identifier of the connected account whose API key credentials are being replaced.
String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
try {
- CompletableFuture> response = fireblocks.connectedAccountsBeta().updateConnectedAccountCredentials(updateConnectedAccountCredentialsRequest, accountId, idempotencyKey);
+ CompletableFuture> response = fireblocks.connectedAccounts().updateConnectedAccountCredentials(updateConnectedAccountCredentialsRequest, accountId, idempotencyKey);
System.out.println("Status code: " + response.get().getStatusCode());
System.out.println("Response headers: " + response.get().getHeaders());
System.out.println("Response body: " + response.get().getData());
} catch (InterruptedException | ExecutionException e) {
ApiException apiException = (ApiException)e.getCause();
- System.err.println("Exception when calling ConnectedAccountsBetaApi#updateConnectedAccountCredentials");
+ System.err.println("Exception when calling ConnectedAccountsApi#updateConnectedAccountCredentials");
System.err.println("Status code: " + apiException.getCode());
System.err.println("Response headers: " + apiException.getResponseHeaders());
System.err.println("Reason: " + apiException.getResponseBody());
diff --git a/docs/ConsoleUserApi.md b/docs/ConsoleUserApi.md
index ca9b0087..cdeaf3d7 100644
--- a/docs/ConsoleUserApi.md
+++ b/docs/ConsoleUserApi.md
@@ -5,6 +5,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**createConsoleUser**](ConsoleUserApi.md#createConsoleUser) | **POST** /management/users | Create console user |
+| [**deleteConsoleUser**](ConsoleUserApi.md#deleteConsoleUser) | **DELETE** /management/users/{id} | Request deletion of a console user |
| [**getConsoleUsers**](ConsoleUserApi.md#getConsoleUsers) | **GET** /management/users | Get console users |
@@ -91,6 +92,91 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## deleteConsoleUser
+
+> CompletableFuture> deleteConsoleUser deleteConsoleUser(id, force)
+
+Request deletion of a console user
+
+Requests deletion of a console user. The request is asynchronous: it goes through the workspace's configured \"Delete users\" approval policy (Settings > Quorums), exactly as deleting a user from the console does, and the user is removed only once that approval completes. - Track progress by polling GET /management/users; deletion is complete when the user is disabled. - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. Endpoint Permission: Admin, Non-Signing Admin. **Note:** This endpoint is currently in beta and might be subject to changes.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.ConsoleUserApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ String id = "id_example"; // String | The ID of the console user to delete
+ Boolean force = false; // Boolean | Acknowledges the impact of removing this user and proceeds anyway. Overrides both USER_REFERENCED_IN_TAP and QUORUM_INTEGRITY, the same way the acknowledgement checkbox does in the console.
+ try {
+ CompletableFuture> response = fireblocks.consoleUser().deleteConsoleUser(id, force);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling ConsoleUserApi#deleteConsoleUser");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **id** | **String**| The ID of the console user to delete | |
+| **force** | **Boolean**| Acknowledges the impact of removing this user and proceeds anyway. Overrides both USER_REFERENCED_IN_TAP and QUORUM_INTEGRITY, the same way the acknowledgement checkbox does in the console. | [optional] [default to false] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **202** | Deletion request accepted. Returns the console user that will be removed once the workspace's configured approval completes. | * X-Request-ID -
|
+| **401** | Unauthorized. Missing / invalid JWT token in Authorization header. | * X-Request-ID -
|
+| **403** | Lacking permissions, or the target cannot be deleted: the user is the workspace Owner, or the caller is the target. | * X-Request-ID -
|
+| **404** | Console user not found. Also returned for users in other workspaces and for API users, so the endpoint does not reveal whether an ID exists. | * X-Request-ID -
|
+| **409** | PENDING_REQUEST_EXISTS - a deletion request for this user is already awaiting approval; USER_REFERENCED_IN_TAP - the user is referenced by the workspace transaction authorization policy (can be overridden with force=true); or USER_PENDING_ONBOARDING - the user has not completed onboarding, so there is nothing to delete yet. Revoke the invitation from the console instead. | * X-Request-ID -
|
+| **422** | QUORUM_INTEGRITY - the user is required to complete the workspace's admin approval quorum. Can be overridden with force=true, matching the console's acknowledgement checkbox. | * X-Request-ID -
|
+| **5XX** | Internal error. | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## getConsoleUsers
> CompletableFuture> getConsoleUsers getConsoleUsers()
diff --git a/docs/CreateWebhookMtlsConfigRequest.md b/docs/CreateWebhookMtlsConfigRequest.md
new file mode 100644
index 00000000..4d31669e
--- /dev/null
+++ b/docs/CreateWebhookMtlsConfigRequest.md
@@ -0,0 +1,14 @@
+
+
+# CreateWebhookMtlsConfigRequest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | A label for this mTLS configuration, to tell several certificates apart. Letters, digits and spaces only. | [optional] |
+|**signedCert** | **String** | Signed client certificate PEM, issued for the CSR from `GET /v1/webhooks_settings/mtls_csr`. The private key it belongs to is derived from the certificate itself. | |
+
+
+
diff --git a/docs/CreateWebhookOauthRequest.md b/docs/CreateWebhookOauthRequest.md
index 2378e7e0..137e2270 100644
--- a/docs/CreateWebhookOauthRequest.md
+++ b/docs/CreateWebhookOauthRequest.md
@@ -16,7 +16,7 @@ A new reusable OAuth 2.0 client credential set. Attach it to a webhook by passin
|**customJwtClaims** | **Map<String, Object>** | Extra claims for the JWT assertion. Used only when `authMethod` is `client_secret_jwt`. The usual one to set is `aud`, which defaults to the token endpoint URL; some authorization servers expect their own identifier instead. A value may be any JSON type except `null` — `null` is reserved for deleting a claim on update. `iss`, `sub`, `jti`, `iat` and `exp` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the claim names. On update this merges claim by claim rather than replacing — see `WebhookOauthCustomJwtClaimsUpdate`. | [optional] |
|**customBodyParams** | **Map<String, String>** | Extra parameters for the token request body — `scope` most commonly, sometimes `audience` or `resource`. Applies to every authentication method. Values must be strings, because the token request body is form-encoded rather than JSON. An empty string is allowed. `grant_type`, `client_id`, `client_secret`, `client_assertion` and `client_assertion_type` are set by Fireblocks and cannot be overridden. Names are case-sensitive. The whole object must be under 16 KB. Values are write-only; responses return only the parameter names. On update this merges key by key rather than replacing — see `WebhookOauthCustomBodyParamsUpdate`. | [optional] |
|**customHeaders** | **Map<String, String>** | Extra HTTP headers for **the token request to your authorization server** — not for the webhook delivery, which has its own separate `customHeaders`. A gateway API key is the usual case. Values must be strings; an empty string is allowed. Names are matched case-insensitively, so two names differing only in case are a duplicate. Names are stored and returned lowercased, so `X-Api-Key` comes back as `x-api-key`. `Content-Type`, `Content-Length` and `Host` are set by Fireblocks and cannot be overridden. `Authorization` can be set with `client_secret_post` or `client_secret_jwt`, which send the credentials in the body — useful when your token endpoint sits behind a gateway. It is rejected with `client_secret_basic`, which sends the credentials in that header. Values have no length limit of their own; the whole object must be under 16 KB when serialized as UTF-8. Values are write-only; responses return only the header names. On update this merges name by name rather than replacing — see `WebhookOauthCustomHeadersUpdate`. | [optional] |
-|**mtlsClientSignedCert** | **String** | PEM-encoded client certificate for mTLS when fetching tokens. Must be a valid X.509 certificate inside its validity window. | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration presented to the token endpoint, from `/v1/webhooks_settings/mtls`. It can be the same configuration a webhook uses, so one certificate, signed from `GET /v1/webhooks_settings/mtls_csr`, serves both the token endpoint and the receiver. Omit, or send `null`, for a token request without mTLS. Requires the mTLS feature to be enabled for the workspace (`403` otherwise), a configuration of this workspace (`404` otherwise), and one linked to a private key (`400` otherwise). | [optional] |
diff --git a/docs/CreateWebhookRequest.md b/docs/CreateWebhookRequest.md
index 259b13f8..e5f874fe 100644
--- a/docs/CreateWebhookRequest.md
+++ b/docs/CreateWebhookRequest.md
@@ -11,7 +11,7 @@
|**description** | **String** | description of the webhook. should not contain special characters. | [optional] |
|**events** | **List<WebhookEvent>** | event types the webhook will subscribe to | |
|**enabled** | **Boolean** | The status of the webhook. If false, the webhook will not receive notifications. | [optional] |
-|**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration this webhook presents when delivering, from `/v1/webhooks_settings/mtls`. Several webhooks may share one configuration, so replacing its certificate covers all of them at once. Send `null` to stop using mTLS for this webhook. | [optional] |
|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected. | [optional] |
|**customHeaders** | **Map<String, Object>** | Custom HTTP headers attached to every notification delivered by this webhook. A value is a string, sent as one header line, or an array of strings, sent as one header line per element under the same name. `Cookie` and `Authorization` accept only a string. An empty array is rejected — leave the name out instead. At most 10 headers, counted by name — an array value counts once, however many lines it sends. Names must be valid HTTP header tokens, are case-insensitive, and are at most 128 characters. A value may be empty and has no length limit of its own; the whole object must be under 16 KB when serialized as UTF-8. A value that large may still be refused by your own endpoint, since web servers commonly cap the whole request header block at around 8 KB. Reserved names: `Host`, `Content-Type`, `Content-Length`, `Transfer-Encoding`, `Connection`, `User-Agent`, `Accept`, `Accept-Encoding`, `Fireblocks-Signature`, `Fireblocks-Webhook-Signature`. `Authorization` may be set, but not together with `webhookOauthId`; a request that would leave both set is rejected. Values are write-only; responses return only the header names. | [optional] |
diff --git a/docs/DeleteWebhookMtlsConfigResponse.md b/docs/DeleteWebhookMtlsConfigResponse.md
new file mode 100644
index 00000000..ef90dce9
--- /dev/null
+++ b/docs/DeleteWebhookMtlsConfigResponse.md
@@ -0,0 +1,21 @@
+
+
+# DeleteWebhookMtlsConfigResponse
+
+The deleted mTLS configuration, plus the ids of any webhooks and OAuth credentials the delete detached from it. They are only detached by `forceDelete=true`; without it a delete is refused with `409` while anything still references the configuration.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **UUID** | The unique identifier of the mTLS configuration, to be set as `webhookMtlsId` on a webhook or on OAuth credentials. | |
+|**name** | **String** | The label given to this mTLS configuration. | [optional] |
+|**signedCert** | **String** | The signed client certificate PEM. | |
+|**expiresAt** | **Long** | When the certificate itself expires, in milliseconds since the epoch. | |
+|**createdAt** | **Long** | When the certificate was uploaded, in milliseconds since the epoch. | |
+|**updatedAt** | **Long** | When this configuration was last changed, in milliseconds since the epoch. Differs from createdAt once the certificate has been replaced or the configuration renamed. | |
+|**detachedWebhookIds** | **List<UUID>** | Webhooks whose `webhookMtlsId` was cleared. The webhooks themselves are not deleted and keep delivering, just without a client certificate. Empty unless `forceDelete=true` detached something. | |
+|**detachedWebhookOauthIds** | **List<UUID>** | OAuth credentials whose `webhookMtlsId` was cleared. Their token requests continue without a client certificate. Empty unless `forceDelete=true` detached something. | |
+
+
+
diff --git a/docs/DeleteWebhookOauthResponse.md b/docs/DeleteWebhookOauthResponse.md
index e544e32d..73152e55 100644
--- a/docs/DeleteWebhookOauthResponse.md
+++ b/docs/DeleteWebhookOauthResponse.md
@@ -16,7 +16,7 @@ The deleted OAuth credential set, plus the ids of any webhooks the delete detach
|**customJwtClaims** | **List<String>** | Names of the additional claims placed in the JWT assertion. Claim values are write-only and are never returned. Absent when no custom claims are configured. | [optional] |
|**customBodyParams** | **List<String>** | Names of the additional parameters added to the token request body. Parameter values are write-only and are never returned. Absent when no custom parameters are configured. | [optional] |
|**customHeaders** | **List<String>** | Names of the additional HTTP headers added to **the token request sent to the authorization server** — not to the webhook delivery, which has its own separate `customHeaders`. Header values are write-only and are never returned. Absent when no custom headers are configured. | [optional] |
-|**mtlsClientSignedCert** | **String** | PEM-encoded client certificate used for mTLS when fetching OAuth tokens. | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration presented to the token endpoint. Absent when the token request does not use mTLS. Read the certificate from `/v1/webhooks_settings/mtls/{id}`. | [optional] |
|**createdAt** | **Long** | The date and time the OAuth credentials were created, in milliseconds. | |
|**updatedAt** | **Long** | The date and time the OAuth credentials were last updated, in milliseconds. | |
|**detachedWebhookIds** | **List<UUID>** | Webhooks whose `webhookOauthId` was cleared. The webhooks themselves are not deleted and keep delivering, just without an `Authorization` header. Empty unless `forceDelete=true` detached something. | |
diff --git a/docs/EffectiveUtxoSelectionConfig.md b/docs/EffectiveUtxoSelectionConfig.md
new file mode 100644
index 00000000..ee456c00
--- /dev/null
+++ b/docs/EffectiveUtxoSelectionConfig.md
@@ -0,0 +1,14 @@
+
+
+# EffectiveUtxoSelectionConfig
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**strategy** | **UtxoSelectionStrategyEnum** | | |
+|**source** | **UtxoSelectionConfigSourceEnum** | | |
+
+
+
diff --git a/docs/ExecutionRequestDetails.md b/docs/ExecutionRequestDetails.md
index 81d9be22..14699bf7 100644
--- a/docs/ExecutionRequestDetails.md
+++ b/docs/ExecutionRequestDetails.md
@@ -5,6 +5,7 @@
Order execution details
## oneOf schemas
+* [LimitExecutionRequestDetails](LimitExecutionRequestDetails.md)
* [MarketExecutionRequestDetails](MarketExecutionRequestDetails.md)
* [QuoteExecutionWithRequoteRequestDetails](QuoteExecutionWithRequoteRequestDetails.md)
@@ -12,6 +13,7 @@ Order execution details
```java
// Import classes:
import com.fireblocks.sdk.model.ExecutionRequestDetails;
+import com.fireblocks.sdk.model.LimitExecutionRequestDetails;
import com.fireblocks.sdk.model.MarketExecutionRequestDetails;
import com.fireblocks.sdk.model.QuoteExecutionWithRequoteRequestDetails;
@@ -19,6 +21,13 @@ public class Example {
public static void main(String[] args) {
ExecutionRequestDetails exampleExecutionRequestDetails = new ExecutionRequestDetails();
+ // create a new LimitExecutionRequestDetails
+ LimitExecutionRequestDetails exampleLimitExecutionRequestDetails = new LimitExecutionRequestDetails();
+ // set ExecutionRequestDetails to LimitExecutionRequestDetails
+ exampleExecutionRequestDetails.setActualInstance(exampleLimitExecutionRequestDetails);
+ // to get back the LimitExecutionRequestDetails set earlier
+ LimitExecutionRequestDetails testLimitExecutionRequestDetails = (LimitExecutionRequestDetails) exampleExecutionRequestDetails.getActualInstance();
+
// create a new MarketExecutionRequestDetails
MarketExecutionRequestDetails exampleMarketExecutionRequestDetails = new MarketExecutionRequestDetails();
// set ExecutionRequestDetails to MarketExecutionRequestDetails
diff --git a/docs/ExecutionRequestDetailsType.md b/docs/ExecutionRequestDetailsType.md
index e69dc4d3..aee0c2af 100644
--- a/docs/ExecutionRequestDetailsType.md
+++ b/docs/ExecutionRequestDetailsType.md
@@ -9,5 +9,7 @@
* `MARKET` (value: `"MARKET"`)
+* `LIMIT` (value: `"LIMIT"`)
+
diff --git a/docs/ExecutionResponseDetails.md b/docs/ExecutionResponseDetails.md
index c0399a57..04307d28 100644
--- a/docs/ExecutionResponseDetails.md
+++ b/docs/ExecutionResponseDetails.md
@@ -3,6 +3,7 @@
# ExecutionResponseDetails
## oneOf schemas
+* [LimitExecutionResponseDetails](LimitExecutionResponseDetails.md)
* [MarketExecutionResponseDetails](MarketExecutionResponseDetails.md)
* [QuoteExecutionWithRequoteResponseDetails](QuoteExecutionWithRequoteResponseDetails.md)
@@ -10,6 +11,7 @@
```java
// Import classes:
import com.fireblocks.sdk.model.ExecutionResponseDetails;
+import com.fireblocks.sdk.model.LimitExecutionResponseDetails;
import com.fireblocks.sdk.model.MarketExecutionResponseDetails;
import com.fireblocks.sdk.model.QuoteExecutionWithRequoteResponseDetails;
@@ -17,6 +19,13 @@ public class Example {
public static void main(String[] args) {
ExecutionResponseDetails exampleExecutionResponseDetails = new ExecutionResponseDetails();
+ // create a new LimitExecutionResponseDetails
+ LimitExecutionResponseDetails exampleLimitExecutionResponseDetails = new LimitExecutionResponseDetails();
+ // set ExecutionResponseDetails to LimitExecutionResponseDetails
+ exampleExecutionResponseDetails.setActualInstance(exampleLimitExecutionResponseDetails);
+ // to get back the LimitExecutionResponseDetails set earlier
+ LimitExecutionResponseDetails testLimitExecutionResponseDetails = (LimitExecutionResponseDetails) exampleExecutionResponseDetails.getActualInstance();
+
// create a new MarketExecutionResponseDetails
MarketExecutionResponseDetails exampleMarketExecutionResponseDetails = new MarketExecutionResponseDetails();
// set ExecutionResponseDetails to MarketExecutionResponseDetails
diff --git a/docs/FailureReason.md b/docs/FailureReason.md
index 870d7c3a..298dd88b 100644
--- a/docs/FailureReason.md
+++ b/docs/FailureReason.md
@@ -63,5 +63,15 @@
* `MISSING_WORKSPACE_DETAILS` (value: `"MISSING_WORKSPACE_DETAILS"`)
+* `CREDIT_LIMIT_EXCEEDED` (value: `"CREDIT_LIMIT_EXCEEDED"`)
+
+* `QUOTE_EXPIRED` (value: `"QUOTE_EXPIRED"`)
+
+* `DESK_REJECTED` (value: `"DESK_REJECTED"`)
+
+* `REQUOTE_WORSE_PRICE` (value: `"REQUOTE_WORSE_PRICE"`)
+
+* `FOK_KILLED` (value: `"FOK_KILLED"`)
+
diff --git a/docs/FokTimeInForce.md b/docs/FokTimeInForce.md
new file mode 100644
index 00000000..067b210c
--- /dev/null
+++ b/docs/FokTimeInForce.md
@@ -0,0 +1,22 @@
+
+
+# FokTimeInForce
+
+Fill-or-kill - the order must be filled in full at the limit price immediately, or not at all.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**type** | [**TypeEnum**](#TypeEnum) | Discriminator for the fill-or-kill time-in-force type. | |
+
+
+
+## Enum: TypeEnum
+
+| Name | Value |
+|---- | -----|
+| FOK | "FOK" |
+
+
+
diff --git a/docs/LimitExecutionRequestDetails.md b/docs/LimitExecutionRequestDetails.md
new file mode 100644
index 00000000..08d2fa26
--- /dev/null
+++ b/docs/LimitExecutionRequestDetails.md
@@ -0,0 +1,21 @@
+
+
+# LimitExecutionRequestDetails
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**type** | **LimitTypeEnum** | | |
+|**price** | **String** | Limit price for the order | |
+|**timeInForce** | [**FokTimeInForce**](FokTimeInForce.md) | | |
+|**side** | **Side** | | |
+|**baseAmount** | **String** | Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell. | |
+|**baseAssetId** | **String** | The asset you receive on BUY / give on SELL. | |
+|**baseAssetRail** | **TransferRail** | | [optional] |
+|**quoteAssetId** | **String** | Counter asset used to pay/receive | |
+|**quoteAssetRail** | **TransferRail** | | [optional] |
+
+
+
diff --git a/docs/LimitExecutionResponseDetails.md b/docs/LimitExecutionResponseDetails.md
new file mode 100644
index 00000000..7535edde
--- /dev/null
+++ b/docs/LimitExecutionResponseDetails.md
@@ -0,0 +1,21 @@
+
+
+# LimitExecutionResponseDetails
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**type** | **LimitTypeEnum** | | |
+|**price** | **String** | Limit price for the order | |
+|**timeInForce** | [**FokTimeInForce**](FokTimeInForce.md) | | |
+|**side** | **Side** | | |
+|**baseAmount** | **String** | Amount to convert | |
+|**baseAssetId** | **String** | Source asset identifier | |
+|**baseAssetRail** | **TransferRail** | | [optional] |
+|**quoteAssetId** | **String** | Target asset identifier | |
+|**quoteAssetRail** | **TransferRail** | | [optional] |
+
+
+
diff --git a/docs/LimitTypeDetails.md b/docs/LimitTypeDetails.md
new file mode 100644
index 00000000..e1486d4a
--- /dev/null
+++ b/docs/LimitTypeDetails.md
@@ -0,0 +1,15 @@
+
+
+# LimitTypeDetails
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**type** | **LimitTypeEnum** | | |
+|**price** | **String** | Limit price for the order | |
+|**timeInForce** | [**FokTimeInForce**](FokTimeInForce.md) | | |
+
+
+
diff --git a/docs/LimitTypeEnum.md b/docs/LimitTypeEnum.md
new file mode 100644
index 00000000..a13e2e95
--- /dev/null
+++ b/docs/LimitTypeEnum.md
@@ -0,0 +1,11 @@
+
+
+# LimitTypeEnum
+
+## Enum
+
+
+* `LIMIT` (value: `"LIMIT"`)
+
+
+
diff --git a/docs/OfferResponseAllocation.md b/docs/OfferResponseAllocation.md
index e206877f..7f5a2baf 100644
--- a/docs/OfferResponseAllocation.md
+++ b/docs/OfferResponseAllocation.md
@@ -16,7 +16,7 @@
| Name | Value |
|---- | -----|
-| ALLOCATIONS | "ALLOCATIONS" |
+| ALLOCATION | "ALLOCATION" |
diff --git a/docs/OfferResponseTransfer.md b/docs/OfferResponseTransfer.md
index e65f3398..e916531f 100644
--- a/docs/OfferResponseTransfer.md
+++ b/docs/OfferResponseTransfer.md
@@ -16,7 +16,7 @@
| Name | Value |
|---- | -----|
-| TRANSFERS | "TRANSFERS" |
+| TRANSFER | "TRANSFER" |
diff --git a/docs/OnboardingResponseDtccAccept.md b/docs/OnboardingResponseDtccAccept.md
index 66ad203f..e025042f 100644
--- a/docs/OnboardingResponseDtccAccept.md
+++ b/docs/OnboardingResponseDtccAccept.md
@@ -8,7 +8,7 @@ Accept a DTCC end-investor onboarding offer. Carries no arguments.
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
-|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`. | |
+|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`. `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved. | |
diff --git a/docs/OnboardingResponseDtccReject.md b/docs/OnboardingResponseDtccReject.md
index 6f095713..a1b3299b 100644
--- a/docs/OnboardingResponseDtccReject.md
+++ b/docs/OnboardingResponseDtccReject.md
@@ -8,7 +8,7 @@ Reject a DTCC end-investor onboarding offer.
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
-|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`. | |
+|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`. `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved. | |
|**reason** | **String** | Why the offer is being rejected. Recorded on-chain, where the counterparty can read it. | |
diff --git a/docs/OnboardingResponseTradewebAccept.md b/docs/OnboardingResponseTradewebAccept.md
index e9ad851c..7aaa0ea4 100644
--- a/docs/OnboardingResponseTradewebAccept.md
+++ b/docs/OnboardingResponseTradewebAccept.md
@@ -8,7 +8,7 @@ Accept a Tradeweb co-signing delegation offer. Carries no arguments.
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
-|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`. | |
+|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`. `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved. | |
diff --git a/docs/OnboardingResponseTradewebReject.md b/docs/OnboardingResponseTradewebReject.md
index 4fca5e42..a54785ac 100644
--- a/docs/OnboardingResponseTradewebReject.md
+++ b/docs/OnboardingResponseTradewebReject.md
@@ -8,7 +8,7 @@ Reject a Tradeweb co-signing delegation offer. Carries no arguments — the DAR
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
-|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values currently listed in the transaction's `additionalInfo.cantonDetails.offerResponse.availableResponses`. | |
+|**responseType** | [**ResponseTypeEnum**](#ResponseTypeEnum) | How you are answering the offer. Must be one of the values listed in the transaction's `cantonDetails.offerResponse.availableResponses` — TOP-LEVEL on the transaction, not nested under an `additionalInfo` envelope, which does not exist on `TransactionResponse`. `availableResponses` states what this offer TYPE accepts. It is set when the offer arrives and does not change, so it does NOT tell you whether the offer is still answerable — check `expiresAt` and the transaction's status for that, and expect this endpoint to be the authority: it re-checks state and expiry on every call and answers 409 when either has moved. | |
diff --git a/docs/ParticipantOnboardingPayload.md b/docs/ParticipantOnboardingPayload.md
index fc737fcd..ce2fc966 100644
--- a/docs/ParticipantOnboardingPayload.md
+++ b/docs/ParticipantOnboardingPayload.md
@@ -11,10 +11,10 @@
|**asset** | [**AssetEnum**](#AssetEnum) | Chain asset — CANTON or CANTON_TEST. | |
|**expiresAt** | **OffsetDateTime** | When the onboarding request expires if it has not been answered. RFC 3339. | [optional] |
|**operator** | **String** | DTCC infra operator party id. | |
-|**provider** | **String** | DTCC provider party id. | |
|**compliance** | **String** | DTCC compliance party id. | |
|**registrar** | **String** | DTCC registrar party id — co-signs the accept. | |
|**clientOnboarder** | **String** | DTCC client onboarder party id — co-signs the accept. | |
+|**upgrader** | **String** | DTCC upgrader party id — the Model Upgrade Tool authority. Supplied by DTCC during the off-chain registration, alongside the other party ids. | |
diff --git a/docs/PostTradeSettlement.md b/docs/PostTradeSettlement.md
new file mode 100644
index 00000000..16ed1f28
--- /dev/null
+++ b/docs/PostTradeSettlement.md
@@ -0,0 +1,14 @@
+
+
+# PostTradeSettlement
+
+Nothing moves on-platform; settlement happens bilaterally, provider-side, after execution.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**type** | **PostTradeSettlementType** | | |
+
+
+
diff --git a/docs/PostTradeSettlementType.md b/docs/PostTradeSettlementType.md
new file mode 100644
index 00000000..396f2d77
--- /dev/null
+++ b/docs/PostTradeSettlementType.md
@@ -0,0 +1,11 @@
+
+
+# PostTradeSettlementType
+
+## Enum
+
+
+* `POST_TRADE` (value: `"POST_TRADE"`)
+
+
+
diff --git a/docs/Quote.md b/docs/Quote.md
index aaba439d..d5537cc6 100644
--- a/docs/Quote.md
+++ b/docs/Quote.md
@@ -22,7 +22,7 @@ A committed executable quote for a trading pair.
|**executionSteps** | [**List<QuoteExecutionStep>**](QuoteExecutionStep.md) | Ordered list of execution steps for the quote. | [optional] |
|**generalFees** | [**List<Fee>**](Fee.md) | General fees associated with the quote. | [optional] |
|**side** | **Side** | | |
-|**expiresAt** | **String** | The expiration time of the quote in ISO 8601 format. | |
+|**expiresAt** | **String** | The expiration time of the quote in ISO 8601 format, taken verbatim from the provider. This is not safety-margined by the server — integrators must apply their own margin if one is needed. | |
|**requiredParticipantsIdentificationOnOrder** | **String** | A JSON Schema Draft-7 document in string format describing the fields required when creating an order so clients can validate their order payload before sending. | [optional] |
|**type** | [**TypeEnum**](#TypeEnum) | The type of the quote. | |
diff --git a/docs/QuoteOffer.md b/docs/QuoteOffer.md
index 810586e6..ec7aafa1 100644
--- a/docs/QuoteOffer.md
+++ b/docs/QuoteOffer.md
@@ -21,7 +21,7 @@
|**executionSteps** | [**List<QuoteExecutionStep>**](QuoteExecutionStep.md) | Ordered list of execution steps for the quote. | [optional] |
|**generalFees** | [**List<Fee>**](Fee.md) | General fees associated with the quote. | [optional] |
|**side** | **Side** | | |
-|**expiresAt** | **String** | The expiration time of the quote in ISO 8601 format. | |
+|**expiresAt** | **String** | The expiration time of the quote in ISO 8601 format, taken verbatim from the provider. This is not safety-margined by the server — integrators must apply their own margin if one is needed. | |
|**requiredParticipantsIdentificationOnOrder** | **String** | A JSON Schema Draft-7 document in string format describing the fields required when creating an order so clients can validate their order payload before sending. | [optional] |
|**type** | [**TypeEnum**](#TypeEnum) | The type of the quote. | |
|**offerType** | [**OfferTypeEnum**](#OfferTypeEnum) | The type of offer — QUOTE for executable committed quotes. | |
diff --git a/docs/RatesRequest.md b/docs/RatesRequest.md
index 1441cfae..d9539e65 100644
--- a/docs/RatesRequest.md
+++ b/docs/RatesRequest.md
@@ -10,6 +10,7 @@
|**scope** | [**List<ScopeItem>**](ScopeItem.md) | One or more providers/accounts to request rates from. At least one scope item is required. | |
|**baseAssetId** | **String** | The source asset identifier. | |
|**quoteAssetId** | **String** | The target asset identifier. | |
+|**baseAmount** | **String** | The amount to convert from | [optional] |
diff --git a/docs/Settlement.md b/docs/Settlement.md
index 52e94570..bccecfd1 100644
--- a/docs/Settlement.md
+++ b/docs/Settlement.md
@@ -6,6 +6,7 @@ Settlement configuration for the order
## oneOf schemas
* [DVPSettlement](DVPSettlement.md)
+* [PostTradeSettlement](PostTradeSettlement.md)
* [PrefundedSettlement](PrefundedSettlement.md)
## Example
@@ -13,6 +14,7 @@ Settlement configuration for the order
// Import classes:
import com.fireblocks.sdk.model.Settlement;
import com.fireblocks.sdk.model.DVPSettlement;
+import com.fireblocks.sdk.model.PostTradeSettlement;
import com.fireblocks.sdk.model.PrefundedSettlement;
public class Example {
@@ -26,6 +28,13 @@ public class Example {
// to get back the DVPSettlement set earlier
DVPSettlement testDVPSettlement = (DVPSettlement) exampleSettlement.getActualInstance();
+ // create a new PostTradeSettlement
+ PostTradeSettlement examplePostTradeSettlement = new PostTradeSettlement();
+ // set Settlement to PostTradeSettlement
+ exampleSettlement.setActualInstance(examplePostTradeSettlement);
+ // to get back the PostTradeSettlement set earlier
+ PostTradeSettlement testPostTradeSettlement = (PostTradeSettlement) exampleSettlement.getActualInstance();
+
// create a new PrefundedSettlement
PrefundedSettlement examplePrefundedSettlement = new PrefundedSettlement();
// set Settlement to PrefundedSettlement
diff --git a/docs/SettlementTypeEnum.md b/docs/SettlementTypeEnum.md
index 43c9a1f6..34d59b3a 100644
--- a/docs/SettlementTypeEnum.md
+++ b/docs/SettlementTypeEnum.md
@@ -9,5 +9,7 @@
* `PREFUNDED` (value: `"PREFUNDED"`)
+* `POST_TRADE` (value: `"POST_TRADE"`)
+
diff --git a/docs/TransactionOperation.md b/docs/TransactionOperation.md
index 3f6bcfa7..eb2c5204 100644
--- a/docs/TransactionOperation.md
+++ b/docs/TransactionOperation.md
@@ -23,5 +23,7 @@
* `ENABLE_ASSET` (value: `"ENABLE_ASSET"`)
+* `CANTON_CALL` (value: `"CANTON_CALL"`)
+
diff --git a/docs/TransactionResponse.md b/docs/TransactionResponse.md
index 9e2e6d10..db3dd7b9 100644
--- a/docs/TransactionResponse.md
+++ b/docs/TransactionResponse.md
@@ -31,6 +31,7 @@
|**feeInfo** | [**FeeInfo**](FeeInfo.md) | | [optional] |
|**feeCurrency** | **String** | The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni. | [optional] |
|**requestedFeeCurrency** | **String** | The fee-paying asset requested at transaction creation via the `feeCurrency` field, if any. | [optional] |
+|**cantonDetails** | [**CantonDetails**](CantonDetails.md) | | [optional] |
|**networkRecords** | [**List<NetworkRecord>**](NetworkRecord.md) | In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty. | [optional] |
|**createdAt** | **BigDecimal** | The transaction’s creation date and time, in unix timestamp. | [optional] |
|**lastUpdated** | **BigDecimal** | The transaction’s last update date and time, in unix timestamp. | [optional] |
diff --git a/docs/TravelRuleIssuers.md b/docs/TravelRuleIssuers.md
index 436953db..5525bdb9 100644
--- a/docs/TravelRuleIssuers.md
+++ b/docs/TravelRuleIssuers.md
@@ -9,9 +9,9 @@
|------------ | ------------- | ------------- | -------------|
|**yearFounded** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
|**isRegulated** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
-|**regulatoryAuthorities** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
+|**regulatoryAuthorities** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | [optional] |
|**name** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
-|**logo** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
+|**logo** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | [optional] |
|**website** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
|**legalName** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
|**legalStructure** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
@@ -20,7 +20,7 @@
|**addressLine1** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
|**city** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
|**country** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
-|**description** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | |
+|**description** | [**TravelRuleIssuer**](TravelRuleIssuer.md) | | [optional] |
diff --git a/docs/UpdateWebhookMtlsConfigRequest.md b/docs/UpdateWebhookMtlsConfigRequest.md
new file mode 100644
index 00000000..49a7353d
--- /dev/null
+++ b/docs/UpdateWebhookMtlsConfigRequest.md
@@ -0,0 +1,15 @@
+
+
+# UpdateWebhookMtlsConfigRequest
+
+At least one property must be provided.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | A new label for this mTLS configuration, or `null` to remove it. Letters, digits and spaces only. | [optional] |
+|**signedCert** | **String** | A replacement signed certificate PEM. Every webhook and OAuth credentials set using this configuration switches to it, and the private key it was issued for is re-derived from the certificate. | [optional] |
+
+
+
diff --git a/docs/UpdateWebhookOauthRequest.md b/docs/UpdateWebhookOauthRequest.md
index ebb4858b..b7a93bce 100644
--- a/docs/UpdateWebhookOauthRequest.md
+++ b/docs/UpdateWebhookOauthRequest.md
@@ -2,7 +2,7 @@
# UpdateWebhookOauthRequest
-A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `mtlsClientSignedCert` is a scalar, so `null` there removes it.
+A partial update. Every field is optional and an omitted field is left as it is, so `{ \"clientSecret\": \"new-secret\" }` rotates the secret and changes nothing else. A rotation applies to every webhook referencing these credentials. The three custom maps merge. A key with a value is upserted, a key with `null` is deleted, a key you leave out is untouched, and the whole field set to `null` clears the map. There is no ambiguity between the two uses of `null` — one names an entry, the other names the field. `webhookMtlsId` is a scalar, so `null` there removes it.
## Properties
@@ -16,7 +16,7 @@ A partial update. Every field is optional and an omitted field is left as it is,
|**customJwtClaims** | **Map<String, Object>** | A delta applied to the JWT assertion claims. A claim with a value is added or replaced, a claim with `null` is deleted, and a claim you leave out is untouched. So `{ \"aud\": \"https://auth.example.com\", \"resource\": null }` sets `aud`, drops `resource`, and changes nothing else. Send `customJwtClaims: null` to clear every claim in one call. That does not collide with a `null` value on a name: one names the claim to delete, the other names the whole field. Same rules as on create: any JSON type except `null`, `iss`/`sub`/`jti`/`iat`/`exp` reserved, names case-sensitive, resulting set under 16 KB, values write-only. | [optional] |
|**customBodyParams** | **Map<String, String>** | A delta applied to the token request body parameters. A parameter with a value is added or replaced, a parameter with `null` is deleted, and one you leave out is untouched. So `{ \"scope\": \"payments.read\", \"audience\": null }` sets `scope`, drops `audience`, and changes nothing else. Send `customBodyParams: null` to clear every parameter in one call. That does not collide with a `null` value on a name: one names the parameter to delete, the other names the whole field. Same rules as on create: string values only, `grant_type`/`client_id`/`client_secret`/ `client_assertion`/`client_assertion_type` reserved, names case-sensitive, resulting set under 16 KB, values write-only. | [optional] |
|**customHeaders** | **Map<String, String>** | A delta applied to the token request headers — not the webhook delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. So `{ \"X-Api-Key\": \"new-key\", \"X-Tenant\": null }` rotates `X-Api-Key`, drops `X-Tenant`, and changes nothing else. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another, and names are stored and returned lowercased. Same rules as on create: string values only, `Content-Type`, `Content-Length` and `Host` reserved, `Authorization` only with `client_secret_post` or `client_secret_jwt`, resulting set under 16 KB, values write-only. | [optional] |
-|**mtlsClientSignedCert** | **String** | PEM-encoded client certificate for mTLS. Must be a valid X.509 certificate inside its validity window. Omit to leave it unchanged, or send `null` to remove it. | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration presented to the token endpoint, from `/v1/webhooks_settings/mtls`. Omit to leave it unchanged, or send `null` to stop using mTLS for the token request. Requires the mTLS feature to be enabled for the workspace (`403` otherwise), a configuration of this workspace (`404` otherwise), and one linked to a private key (`400` otherwise). | [optional] |
diff --git a/docs/UpdateWebhookRequest.md b/docs/UpdateWebhookRequest.md
index 9aef5482..5ba7b9f8 100644
--- a/docs/UpdateWebhookRequest.md
+++ b/docs/UpdateWebhookRequest.md
@@ -11,7 +11,7 @@
|**description** | **String** | description of the webhook of what it is used for.should not contain special characters. | [optional] |
|**events** | **List<WebhookEvent>** | The events that the webhook will be subscribed to | [optional] |
|**enabled** | **Boolean** | The status of the webhook | [optional] |
-|**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration this webhook presents when delivering, from `/v1/webhooks_settings/mtls`. Several webhooks may share one configuration, so replacing its certificate covers all of them at once. Send `null` to stop using mTLS for this webhook. | [optional] |
|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with, from `/v1/webhooks_settings/oauth`. Several webhooks may share one credential set, so rotating its client secret covers all of them at once. Send `null` to stop using OAuth for this webhook. Cannot be combined with an `authorization` custom header on the same webhook; a request that would leave both set is rejected. | [optional] |
|**customHeaders** | **Map<String, Object>** | A delta applied to the delivery headers. A header with a value is added or replaced, a header with `null` is deleted, and one you leave out is untouched. A value replaces what is stored under that name rather than adding to it, so an array is the complete new set of lines for that header. Send `customHeaders: null` to clear every header in one call. That does not collide with a `null` value on a name: one names the header to delete, the other names the whole field. Names are case-insensitive, so a `null` under one casing deletes a header stored under another. Same rules as on create: string or non-empty array, `Cookie` and `Authorization` string-only, 10 headers and under 16 KB in the resulting set, the same reserved names, and values write-only. Entries set to `null` do not count towards the limit. `Authorization` cannot be combined with `webhookOauthId`, though one request may add it and detach the credentials together. | [optional] |
diff --git a/docs/UpsertUtxoSelectionConfigRequest.md b/docs/UpsertUtxoSelectionConfigRequest.md
new file mode 100644
index 00000000..cfe01633
--- /dev/null
+++ b/docs/UpsertUtxoSelectionConfigRequest.md
@@ -0,0 +1,13 @@
+
+
+# UpsertUtxoSelectionConfigRequest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**strategy** | **UtxoSelectionStrategyEnum** | | |
+
+
+
diff --git a/docs/UtxoIdentifier.md b/docs/UtxoIdentifier.md
index a96f55de..c4b8eda2 100644
--- a/docs/UtxoIdentifier.md
+++ b/docs/UtxoIdentifier.md
@@ -9,7 +9,7 @@ Identifies a UTXO by either a Fireblocks transaction ID (targets all outputs of
| Name | Type | Description | Notes |
|------------ | ------------- | ------------- | -------------|
|**txId** | **String** | Fireblocks transaction ID | [optional] |
-|**txHash** | **String** | On-chain transaction hash | [optional] |
+|**txHash** | **String** | On-chain transaction hash, in lowercase hex as the chain reports it. Matched case-sensitively, so an uppercase hash is never found. | [optional] |
|**index** | **Integer** | Output index (vout) | [optional] |
diff --git a/docs/UtxoLabelFailure.md b/docs/UtxoLabelFailure.md
new file mode 100644
index 00000000..217837b8
--- /dev/null
+++ b/docs/UtxoLabelFailure.md
@@ -0,0 +1,35 @@
+
+
+# UtxoLabelFailure
+
+A requested identifier that blocked the label request, with the reason it could not be labelled.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**identifier** | [**UtxoIdentifier**](UtxoIdentifier.md) | The identifier exactly as it was sent in the request. | |
+|**reason** | [**ReasonEnum**](#ReasonEnum) | Why the identifier could not be labelled: - `NOT_FOUND` — no UTXO for it in this vault and asset. Retrying can work once it is indexed. - `NOT_LABELLABLE` — the UTXO exists but can no longer be labelled (spent, or removed; for a transaction ID, every output). Retrying will not help. | |
+|**utxoStatus** | [**UtxoStatusEnum**](#UtxoStatusEnum) | The UTXO status behind the reason, when one explains it. With `NOT_FOUND`, `REMOVED` means the UTXO was removed within the last hour and may still reappear; if it does not, the same request returns `NOT_LABELLABLE` after about an hour. | [optional] |
+
+
+
+## Enum: ReasonEnum
+
+| Name | Value |
+|---- | -----|
+| NOT_FOUND | "NOT_FOUND" |
+| NOT_LABELLABLE | "NOT_LABELLABLE" |
+| UNUSABLE_IDENTIFIER | "UNUSABLE_IDENTIFIER" |
+
+
+
+## Enum: UtxoStatusEnum
+
+| Name | Value |
+|---- | -----|
+| SPENT | "SPENT" |
+| REMOVED | "REMOVED" |
+
+
+
diff --git a/docs/UtxoLabelsErrorResponse.md b/docs/UtxoLabelsErrorResponse.md
new file mode 100644
index 00000000..c3d2f596
--- /dev/null
+++ b/docs/UtxoLabelsErrorResponse.md
@@ -0,0 +1,15 @@
+
+
+# UtxoLabelsErrorResponse
+
+Returned when a label request is rejected. The request is all-or-nothing, so no UTXO was labelled.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**message** | **String** | Summary of the rejection. When `failures` is present, it names the identifiers that blocked the request. | |
+|**failures** | [**List<UtxoLabelFailure>**](UtxoLabelFailure.md) | Every identifier that blocked the request, each with its own reason. Identifiers not listed were valid; resend them without the failed ones. Absent when the request itself was invalid (e.g. a malformed label). | [optional] |
+
+
+
diff --git a/docs/UtxoManagementBetaApi.md b/docs/UtxoManagementBetaApi.md
index 90b48b55..3558e89f 100644
--- a/docs/UtxoManagementBetaApi.md
+++ b/docs/UtxoManagementBetaApi.md
@@ -4,11 +4,88 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| Method | HTTP request | Description |
|------------- | ------------- | -------------|
+| [**getUtxoSelectionConfig**](UtxoManagementBetaApi.md#getUtxoSelectionConfig) | **GET** /utxo_management/selection_config | Get UTXO selection config |
| [**getUtxos**](UtxoManagementBetaApi.md#getUtxos) | **GET** /utxo_management/{vaultAccountId}/{assetId}/unspent_outputs | List unspent outputs (UTXOs) |
+| [**getVaultAssetUtxoSelectionConfig**](UtxoManagementBetaApi.md#getVaultAssetUtxoSelectionConfig) | **GET** /utxo_management/{vaultAccountId}/{assetId}/selection_config | Get vault and asset UTXO selection config |
| [**updateUtxoLabels**](UtxoManagementBetaApi.md#updateUtxoLabels) | **PATCH** /utxo_management/{vaultAccountId}/{assetId}/labels | Attach or detach labels to/from UTXOs |
+| [**upsertUtxoSelectionConfig**](UtxoManagementBetaApi.md#upsertUtxoSelectionConfig) | **PUT** /utxo_management/selection_config | Upsert UTXO selection config |
+| [**upsertVaultAssetUtxoSelectionConfig**](UtxoManagementBetaApi.md#upsertVaultAssetUtxoSelectionConfig) | **PUT** /utxo_management/{vaultAccountId}/{assetId}/selection_config | Upsert vault and asset UTXO selection config |
+## getUtxoSelectionConfig
+
+> CompletableFuture> getUtxoSelectionConfig getUtxoSelectionConfig()
+
+Get UTXO selection config
+
+Returns the workspace-level configured selection strategy and the effective strategy after runtime resolution. `ADAPTIVE` is the recommended strategy. When no row is stored (source `DEFAULT`), `effective` is `ADAPTIVE` if adaptive selection is serving for this workspace, otherwise `ASC`. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.UtxoManagementBetaApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ try {
+ CompletableFuture> response = fireblocks.utxoManagementBeta().getUtxoSelectionConfig();
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling UtxoManagementBetaApi#getUtxoSelectionConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Current UTXO selection config | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## getUtxos
> CompletableFuture> getUtxos getUtxos(vaultAccountId, assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels, excludeAnyLabels, includeStatuses, address, txHash, txId, minAmount, maxAmount)
@@ -114,13 +191,92 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## getVaultAssetUtxoSelectionConfig
+
+> CompletableFuture> getVaultAssetUtxoSelectionConfig getVaultAssetUtxoSelectionConfig(vaultAccountId, assetId)
+
+Get vault and asset UTXO selection config
+
+Returns the config stored at this vault-and-asset scope, if any, and the effective strategy after workspace fallback and runtime resolution. `ADAPTIVE` is the recommended strategy. When no row is stored at this scope and none is inherited from the workspace (source `DEFAULT`), `effective` is `ADAPTIVE` if adaptive selection is serving for this scope, otherwise `ASC`. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.UtxoManagementBetaApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ String vaultAccountId = "vaultAccountId_example"; // String | The ID of the vault account.
+ String assetId = "assetId_example"; // String | The ID of the asset
+ try {
+ CompletableFuture> response = fireblocks.utxoManagementBeta().getVaultAssetUtxoSelectionConfig(vaultAccountId, assetId);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling UtxoManagementBetaApi#getVaultAssetUtxoSelectionConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **vaultAccountId** | **String**| The ID of the vault account. | |
+| **assetId** | **String**| The ID of the asset | |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Current UTXO selection config | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## updateUtxoLabels
> CompletableFuture> updateUtxoLabels updateUtxoLabels(attachDetachUtxoLabelsRequest, vaultAccountId, assetId, idempotencyKey)
Attach or detach labels to/from UTXOs
-Attach or detach labels to/from UTXOs in a vault account. Labels can be used for organizing and filtering UTXOs. Labels are applied additively — `labelsToAttach` adds to the existing label set and `labelsToDetach` removes from it. Neither operation replaces the full set. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
+Attach or detach labels to/from UTXOs in a vault account. Labels can be used for organizing and filtering UTXOs. Labels are applied additively — `labelsToAttach` adds to the existing label set and `labelsToDetach` removes from it. Neither operation replaces the full set. The request is all-or-nothing: if any identifier cannot be labelled, no UTXO is labelled and the request fails with `400`. The response lists every failed identifier in `failures`, each with its own `reason` — use it, not the status, to decide what to do: - `NOT_FOUND` — not found in this vault and asset. - `NOT_LABELLABLE` — spent, or removed, and can no longer be labelled. A UTXO removed within the last hour is reported as `NOT_FOUND` with `utxoStatus: REMOVED`; if it does not reappear, it becomes `NOT_LABELLABLE` after about an hour. A `400` without `failures` means the request itself is malformed. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
### Example
@@ -194,5 +350,168 @@ No authorization required
| Status code | Description | Response headers |
|-------------|-------------|------------------|
| **200** | UTXOs with updated labels | * X-Request-ID -
|
+| **400** | Some identifiers could not be labelled (listed in `failures`), or the request is malformed. No UTXO was labelled. | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
+## upsertUtxoSelectionConfig
+
+> CompletableFuture> upsertUtxoSelectionConfig upsertUtxoSelectionConfig(upsertUtxoSelectionConfigRequest, idempotencyKey)
+
+Upsert UTXO selection config
+
+Creates or updates the workspace-level UTXO selection strategy. `ADAPTIVE` is recommended. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.UtxoManagementBetaApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ UpsertUtxoSelectionConfigRequest upsertUtxoSelectionConfigRequest = new UpsertUtxoSelectionConfigRequest(); // UpsertUtxoSelectionConfigRequest |
+ String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
+ try {
+ CompletableFuture> response = fireblocks.utxoManagementBeta().upsertUtxoSelectionConfig(upsertUtxoSelectionConfigRequest, idempotencyKey);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling UtxoManagementBetaApi#upsertUtxoSelectionConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **upsertUtxoSelectionConfigRequest** | [**UpsertUtxoSelectionConfigRequest**](UpsertUtxoSelectionConfigRequest.md)| | |
+| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Updated UTXO selection config | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
+## upsertVaultAssetUtxoSelectionConfig
+
+> CompletableFuture> upsertVaultAssetUtxoSelectionConfig upsertVaultAssetUtxoSelectionConfig(upsertUtxoSelectionConfigRequest, vaultAccountId, assetId, idempotencyKey)
+
+Upsert vault and asset UTXO selection config
+
+Creates or updates the UTXO selection strategy for this vault account and asset. `ADAPTIVE` is recommended. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.UtxoManagementBetaApi;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ UpsertUtxoSelectionConfigRequest upsertUtxoSelectionConfigRequest = new UpsertUtxoSelectionConfigRequest(); // UpsertUtxoSelectionConfigRequest |
+ String vaultAccountId = "vaultAccountId_example"; // String | The ID of the vault account.
+ String assetId = "assetId_example"; // String | The ID of the asset
+ String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
+ try {
+ CompletableFuture> response = fireblocks.utxoManagementBeta().upsertVaultAssetUtxoSelectionConfig(upsertUtxoSelectionConfigRequest, vaultAccountId, assetId, idempotencyKey);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling UtxoManagementBetaApi#upsertVaultAssetUtxoSelectionConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **upsertUtxoSelectionConfigRequest** | [**UpsertUtxoSelectionConfigRequest**](UpsertUtxoSelectionConfigRequest.md)| | |
+| **vaultAccountId** | **String**| The ID of the vault account. | |
+| **assetId** | **String**| The ID of the asset | |
+| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Updated UTXO selection config | * X-Request-ID -
|
| **0** | Error Response | * X-Request-ID -
|
diff --git a/docs/UtxoSelectionConfigEntry.md b/docs/UtxoSelectionConfigEntry.md
new file mode 100644
index 00000000..93988541
--- /dev/null
+++ b/docs/UtxoSelectionConfigEntry.md
@@ -0,0 +1,15 @@
+
+
+# UtxoSelectionConfigEntry
+
+Config row stored at exactly the requested scope. Omitted from the parent object when none exists; the server does not emit JSON `null`.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**strategy** | **UtxoSelectionStrategyEnum** | | |
+|**updatedAt** | **OffsetDateTime** | Time at which this configured row was last updated. | |
+
+
+
diff --git a/docs/UtxoSelectionConfigResponse.md b/docs/UtxoSelectionConfigResponse.md
new file mode 100644
index 00000000..cdd5f96b
--- /dev/null
+++ b/docs/UtxoSelectionConfigResponse.md
@@ -0,0 +1,15 @@
+
+
+# UtxoSelectionConfigResponse
+
+`effective` is always present. `configured` is omitted when no row is stored at the requested scope (the server does not emit `\"configured\": null`). PUT responses always include `configured`.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**configured** | [**UtxoSelectionConfigEntry**](UtxoSelectionConfigEntry.md) | | [optional] |
+|**effective** | [**EffectiveUtxoSelectionConfig**](EffectiveUtxoSelectionConfig.md) | | |
+
+
+
diff --git a/docs/UtxoSelectionConfigSourceEnum.md b/docs/UtxoSelectionConfigSourceEnum.md
new file mode 100644
index 00000000..a7d2c92d
--- /dev/null
+++ b/docs/UtxoSelectionConfigSourceEnum.md
@@ -0,0 +1,15 @@
+
+
+# UtxoSelectionConfigSourceEnum
+
+## Enum
+
+
+* `DEFAULT` (value: `"DEFAULT"`)
+
+* `WORKSPACE` (value: `"WORKSPACE"`)
+
+* `VAULT_ASSET` (value: `"VAULT_ASSET"`)
+
+
+
diff --git a/docs/UtxoSelectionStrategyEnum.md b/docs/UtxoSelectionStrategyEnum.md
new file mode 100644
index 00000000..9dc821e4
--- /dev/null
+++ b/docs/UtxoSelectionStrategyEnum.md
@@ -0,0 +1,15 @@
+
+
+# UtxoSelectionStrategyEnum
+
+## Enum
+
+
+* `ASC` (value: `"ASC"`)
+
+* `DESC` (value: `"DESC"`)
+
+* `ADAPTIVE` (value: `"ADAPTIVE"`)
+
+
+
diff --git a/docs/Webhook.md b/docs/Webhook.md
index 15ec34a5..df4bf1e4 100644
--- a/docs/Webhook.md
+++ b/docs/Webhook.md
@@ -14,7 +14,7 @@
|**status** | [**StatusEnum**](#StatusEnum) | The status of the webhook | |
|**createdAt** | **Long** | The date and time the webhook was created in milliseconds | |
|**updatedAt** | **Long** | The date and time the webhook was last updated in milliseconds | |
-|**mtls** | [**WebhookMtls**](WebhookMtls.md) | | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration this webhook presents when delivering, from `/v1/webhooks_settings/mtls`. Absent when the webhook does not use mTLS. | [optional] |
|**webhookOauthId** | **UUID** | The id of the OAuth credentials this webhook authenticates with. Absent when the webhook does not use OAuth. Read the credentials themselves from `/v1/webhooks_settings/oauth/{webhookOauthId}`. | [optional] |
|**customHeaders** | **List<String>** | Names of the custom headers configured for this webhook. Header values are never returned. | [optional] |
diff --git a/docs/WebhookMtls.md b/docs/WebhookMtls.md
deleted file mode 100644
index 05d35423..00000000
--- a/docs/WebhookMtls.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-# WebhookMtls
-
-mTLS configuration for the webhook. On responses, present only when a signed client certificate is set. On requests, provide a signed client certificate to enable mTLS, or null to remove it.
-
-## Properties
-
-| Name | Type | Description | Notes |
-|------------ | ------------- | ------------- | -------------|
-|**clientSignedCert** | **String** | Signed client certificate PEM used for mTLS when delivering notifications. | |
-
-
-
diff --git a/docs/WebhookMtlsConfig.md b/docs/WebhookMtlsConfig.md
new file mode 100644
index 00000000..7c3ebeca
--- /dev/null
+++ b/docs/WebhookMtlsConfig.md
@@ -0,0 +1,19 @@
+
+
+# WebhookMtlsConfig
+
+A signed client certificate stored for the workspace, and the id a webhook or OAuth credentials set references to use it. Several of them may share one configuration, so replacing the certificate here switches all of them at once.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **UUID** | The unique identifier of the mTLS configuration, to be set as `webhookMtlsId` on a webhook or on OAuth credentials. | |
+|**name** | **String** | The label given to this mTLS configuration. | [optional] |
+|**signedCert** | **String** | The signed client certificate PEM. | |
+|**expiresAt** | **Long** | When the certificate itself expires, in milliseconds since the epoch. | |
+|**createdAt** | **Long** | When the certificate was uploaded, in milliseconds since the epoch. | |
+|**updatedAt** | **Long** | When this configuration was last changed, in milliseconds since the epoch. Differs from createdAt once the certificate has been replaced or the configuration renamed. | |
+
+
+
diff --git a/docs/WebhookOauthCredentials.md b/docs/WebhookOauthCredentials.md
index 84cadb35..3031e4e9 100644
--- a/docs/WebhookOauthCredentials.md
+++ b/docs/WebhookOauthCredentials.md
@@ -16,7 +16,7 @@ A stored OAuth 2.0 client credential set, referenced by webhooks through their `
|**customJwtClaims** | **List<String>** | Names of the additional claims placed in the JWT assertion. Claim values are write-only and are never returned. Absent when no custom claims are configured. | [optional] |
|**customBodyParams** | **List<String>** | Names of the additional parameters added to the token request body. Parameter values are write-only and are never returned. Absent when no custom parameters are configured. | [optional] |
|**customHeaders** | **List<String>** | Names of the additional HTTP headers added to **the token request sent to the authorization server** — not to the webhook delivery, which has its own separate `customHeaders`. Header values are write-only and are never returned. Absent when no custom headers are configured. | [optional] |
-|**mtlsClientSignedCert** | **String** | PEM-encoded client certificate used for mTLS when fetching OAuth tokens. | [optional] |
+|**webhookMtlsId** | **UUID** | The id of the mTLS configuration presented to the token endpoint. Absent when the token request does not use mTLS. Read the certificate from `/v1/webhooks_settings/mtls/{id}`. | [optional] |
|**createdAt** | **Long** | The date and time the OAuth credentials were created, in milliseconds. | |
|**updatedAt** | **Long** | The date and time the OAuth credentials were last updated, in milliseconds. | |
diff --git a/docs/WebhooksV2Api.md b/docs/WebhooksV2Api.md
index 70f74c67..8b665420 100644
--- a/docs/WebhooksV2Api.md
+++ b/docs/WebhooksV2Api.md
@@ -5,8 +5,10 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| Method | HTTP request | Description |
|------------- | ------------- | -------------|
| [**createWebhook**](WebhooksV2Api.md#createWebhook) | **POST** /webhooks | Create a new webhook |
+| [**createWebhookMtlsConfig**](WebhooksV2Api.md#createWebhookMtlsConfig) | **POST** /webhooks_settings/mtls | Create an mTLS configuration |
| [**createWebhookOauth**](WebhooksV2Api.md#createWebhookOauth) | **POST** /webhooks_settings/oauth | Create OAuth credentials |
| [**deleteWebhook**](WebhooksV2Api.md#deleteWebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook |
+| [**deleteWebhookMtlsConfig**](WebhooksV2Api.md#deleteWebhookMtlsConfig) | **DELETE** /webhooks_settings/mtls/{webhookMtlsId} | Delete an mTLS configuration |
| [**deleteWebhookOauth**](WebhooksV2Api.md#deleteWebhookOauth) | **DELETE** /webhooks_settings/oauth/{webhookOauthId} | Delete OAuth credentials |
| [**getMetrics**](WebhooksV2Api.md#getMetrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics |
| [**getMtlsCsr**](WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks_settings/mtls_csr | Get mTLS CSR |
@@ -16,6 +18,8 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| [**getResendByQueryJobStatus**](WebhooksV2Api.md#getResendByQueryJobStatus) | **GET** /webhooks/{webhookId}/notifications/resend_by_query/jobs/{jobId} | Get resend by query job status |
| [**getResendJobStatus**](WebhooksV2Api.md#getResendJobStatus) | **GET** /webhooks/{webhookId}/notifications/resend_failed/jobs/{jobId} | Get resend job status |
| [**getWebhook**](WebhooksV2Api.md#getWebhook) | **GET** /webhooks/{webhookId} | Get webhook by id |
+| [**getWebhookMtlsConfig**](WebhooksV2Api.md#getWebhookMtlsConfig) | **GET** /webhooks_settings/mtls/{webhookMtlsId} | Get an mTLS configuration by id |
+| [**getWebhookMtlsConfigs**](WebhooksV2Api.md#getWebhookMtlsConfigs) | **GET** /webhooks_settings/mtls | List the uploaded mTLS configurations |
| [**getWebhookOauth**](WebhooksV2Api.md#getWebhookOauth) | **GET** /webhooks_settings/oauth/{webhookOauthId} | Get OAuth credentials by id |
| [**getWebhookOauths**](WebhooksV2Api.md#getWebhookOauths) | **GET** /webhooks_settings/oauth | Get all OAuth credentials |
| [**getWebhooks**](WebhooksV2Api.md#getWebhooks) | **GET** /webhooks | Get all webhooks |
@@ -24,6 +28,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/
| [**resendNotificationsByQuery**](WebhooksV2Api.md#resendNotificationsByQuery) | **POST** /webhooks/{webhookId}/notifications/resend_by_query | Resend notifications by query |
| [**resendNotificationsByResourceId**](WebhooksV2Api.md#resendNotificationsByResourceId) | **POST** /webhooks/{webhookId}/notifications/resend_by_resource | Resend notifications by resource Id |
| [**updateWebhook**](WebhooksV2Api.md#updateWebhook) | **PATCH** /webhooks/{webhookId} | Update webhook |
+| [**updateWebhookMtlsConfig**](WebhooksV2Api.md#updateWebhookMtlsConfig) | **PATCH** /webhooks_settings/mtls/{webhookMtlsId} | Update an mTLS configuration |
| [**updateWebhookOauth**](WebhooksV2Api.md#updateWebhookOauth) | **PATCH** /webhooks_settings/oauth/{webhookOauthId} | Update OAuth credentials |
@@ -107,6 +112,85 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## createWebhookMtlsConfig
+
+> CompletableFuture> createWebhookMtlsConfig createWebhookMtlsConfig(createWebhookMtlsConfigRequest, idempotencyKey)
+
+Create an mTLS configuration
+
+Stores a certificate signed against the CSR from `GET /v1/webhooks_settings/mtls_csr` and returns its id, which is then set as `webhookMtlsId` on a webhook or on OAuth credentials. The private key the certificate was issued for is derived from the certificate, so it is never named by the caller. Re-uploading a certificate already stored returns the existing id rather than creating a second configuration, so several webhooks and OAuth credentials can share one certificate. A certificate that was not issued for a private key this workspace holds is rejected with a `400`. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.WebhooksV2Api;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ CreateWebhookMtlsConfigRequest createWebhookMtlsConfigRequest = new CreateWebhookMtlsConfigRequest(); // CreateWebhookMtlsConfigRequest |
+ String idempotencyKey = "idempotencyKey_example"; // String | A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
+ try {
+ CompletableFuture> response = fireblocks.webhooksV2().createWebhookMtlsConfig(createWebhookMtlsConfigRequest, idempotencyKey);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling WebhooksV2Api#createWebhookMtlsConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **createWebhookMtlsConfigRequest** | [**CreateWebhookMtlsConfigRequest**](CreateWebhookMtlsConfigRequest.md)| | |
+| **idempotencyKey** | **String**| A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours. | [optional] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **201** | The stored mTLS configuration | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## createWebhookOauth
> CompletableFuture> createWebhookOauth createWebhookOauth(createWebhookOauthRequest, idempotencyKey)
@@ -263,6 +347,86 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## deleteWebhookMtlsConfig
+
+> CompletableFuture> deleteWebhookMtlsConfig deleteWebhookMtlsConfig(webhookMtlsId, forceDelete)
+
+Delete an mTLS configuration
+
+Deletes an mTLS configuration. By default the delete is refused while the configuration is still in use: if any webhook or OAuth credentials reference it, nothing is deleted and the request fails with `409 Conflict`, naming the reason and listing the ids of what references it. This protects a shared configuration from being removed out from under the webhooks and token requests that depend on it. Pass `forceDelete=true` to delete anyway. That detaches everything referencing it — it clears `webhookMtlsId` on each webhook and OAuth credentials, it does **not** delete them — then deletes the configuration and returns the deleted resource together with `detachedWebhookIds` and `detachedWebhookOauthIds`. Detached webhooks keep delivering notifications, and detached OAuth credentials keep requesting tokens, but without a client certificate, so an endpoint that requires mTLS will reject them from that point on. When nothing references the configuration the delete succeeds either way, and both lists come back empty. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.WebhooksV2Api;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ UUID webhookMtlsId = UUID.fromString("44fcead0-7053-4831-a53a-df7fb90d440f"); // UUID | The unique identifier of the mTLS configuration
+ Boolean forceDelete = false; // Boolean | Delete the configuration even while webhooks or OAuth credentials still reference it, detaching them instead of refusing; their ids are returned in `detachedWebhookIds` and `detachedWebhookOauthIds`. Leave it unset, or `false`, to get a `409 Conflict` whenever anything still references the configuration.
+ try {
+ CompletableFuture> response = fireblocks.webhooksV2().deleteWebhookMtlsConfig(webhookMtlsId, forceDelete);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling WebhooksV2Api#deleteWebhookMtlsConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **webhookMtlsId** | **UUID**| The unique identifier of the mTLS configuration | |
+| **forceDelete** | **Boolean**| Delete the configuration even while webhooks or OAuth credentials still reference it, detaching them instead of refusing; their ids are returned in `detachedWebhookIds` and `detachedWebhookOauthIds`. Leave it unset, or `false`, to get a `409 Conflict` whenever anything still references the configuration. | [optional] [default to false] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | The deleted mTLS configuration, plus the ids of any webhooks and OAuth credentials that were detached from it | * X-Request-ID -
|
+| **409** | Webhooks or OAuth credentials still reference this configuration and `forceDelete` was not set. Nothing was deleted. The error message names the reason and the ids of what references it — detach those webhooks and OAuth credentials, or retry with `forceDelete=true`. | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## deleteWebhookOauth
> CompletableFuture> deleteWebhookOauth deleteWebhookOauth(webhookOauthId, forceDelete)
@@ -993,6 +1157,160 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## getWebhookMtlsConfig
+
+> CompletableFuture> getWebhookMtlsConfig getWebhookMtlsConfig(webhookMtlsId)
+
+Get an mTLS configuration by id
+
+Retrieve one stored mTLS configuration by its id.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.WebhooksV2Api;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ UUID webhookMtlsId = UUID.fromString("44fcead0-7053-4831-a53a-df7fb90d440f"); // UUID | The unique identifier of the mTLS configuration
+ try {
+ CompletableFuture> response = fireblocks.webhooksV2().getWebhookMtlsConfig(webhookMtlsId);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling WebhooksV2Api#getWebhookMtlsConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **webhookMtlsId** | **UUID**| The unique identifier of the mTLS configuration | |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | An mTLS configuration | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
+## getWebhookMtlsConfigs
+
+> CompletableFuture>> getWebhookMtlsConfigs getWebhookMtlsConfigs(ids)
+
+List the uploaded mTLS configurations
+
+Lists the workspace's mTLS configurations, newest first. Pass `ids` to ask about particular ones instead — useful for resolving the `webhookMtlsId` values on a set of webhooks in one call.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.WebhooksV2Api;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ List ids = Arrays.asList(); // List | Return only the configurations with these ids, instead of all of them. Repeat the parameter for each id. An id belonging to another workspace, or to nothing, is left out of the response rather than failing the request.
+ try {
+ CompletableFuture>> response = fireblocks.webhooksV2().getWebhookMtlsConfigs(ids);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling WebhooksV2Api#getWebhookMtlsConfigs");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **ids** | [**List<UUID>**](UUID.md)| Return only the configurations with these ids, instead of all of them. Repeat the parameter for each id. An id belonging to another workspace, or to nothing, is left out of the response rather than failing the request. | [optional] |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | The workspace's mTLS configurations | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## getWebhookOauth
> CompletableFuture> getWebhookOauth getWebhookOauth(webhookOauthId)
@@ -1627,13 +1945,93 @@ No authorization required
| **0** | Error Response | * X-Request-ID -
|
+## updateWebhookMtlsConfig
+
+> CompletableFuture> updateWebhookMtlsConfig updateWebhookMtlsConfig(updateWebhookMtlsConfigRequest, webhookMtlsId)
+
+Update an mTLS configuration
+
+Renames a configuration, replaces its certificate, or both. Only the fields present in the request are changed; anything omitted is left as it is, and a request with neither field is rejected with a `400`. Replacing `signedCert` switches every webhook and OAuth credentials set using this configuration over to the new certificate in one write, and the private key it was issued for is re-derived from the certificate. A replacement that was not issued for a private key this workspace holds is rejected with a `400`. Sending `name: null` removes the label. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+
+### Example
+
+```java
+// Import classes:
+import com.fireblocks.sdk.ApiClient;
+import com.fireblocks.sdk.ApiException;
+import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.BasePath;
+import com.fireblocks.sdk.Fireblocks;
+import com.fireblocks.sdk.ConfigurationOptions;
+import com.fireblocks.sdk.model.*;
+import com.fireblocks.sdk.api.WebhooksV2Api;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+
+public class Example {
+ public static void main(String[] args) {
+ ConfigurationOptions configurationOptions = new ConfigurationOptions()
+ .basePath(BasePath.Sandbox)
+ .apiKey("my-api-key")
+ .secretKey("my-secret-key");
+ Fireblocks fireblocks = new Fireblocks(configurationOptions);
+
+ UpdateWebhookMtlsConfigRequest updateWebhookMtlsConfigRequest = new UpdateWebhookMtlsConfigRequest(); // UpdateWebhookMtlsConfigRequest |
+ UUID webhookMtlsId = UUID.fromString("44fcead0-7053-4831-a53a-df7fb90d440f"); // UUID | The unique identifier of the mTLS configuration
+ try {
+ CompletableFuture> response = fireblocks.webhooksV2().updateWebhookMtlsConfig(updateWebhookMtlsConfigRequest, webhookMtlsId);
+ System.out.println("Status code: " + response.get().getStatusCode());
+ System.out.println("Response headers: " + response.get().getHeaders());
+ System.out.println("Response body: " + response.get().getData());
+ } catch (InterruptedException | ExecutionException e) {
+ ApiException apiException = (ApiException)e.getCause();
+ System.err.println("Exception when calling WebhooksV2Api#updateWebhookMtlsConfig");
+ System.err.println("Status code: " + apiException.getCode());
+ System.err.println("Response headers: " + apiException.getResponseHeaders());
+ System.err.println("Reason: " + apiException.getResponseBody());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **updateWebhookMtlsConfigRequest** | [**UpdateWebhookMtlsConfigRequest**](UpdateWebhookMtlsConfigRequest.md)| | |
+| **webhookMtlsId** | **UUID**| The unique identifier of the mTLS configuration | |
+
+### Return type
+
+CompletableFuture>
+
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | The updated mTLS configuration | * X-Request-ID -
|
+| **400** | Neither `name` nor `signedCert` was provided, so there is nothing to change, or the replacement certificate was rejected — it is not valid X.509, or it was not issued for a private key this workspace holds. | * X-Request-ID -
|
+| **0** | Error Response | * X-Request-ID -
|
+
+
## updateWebhookOauth
> CompletableFuture> updateWebhookOauth updateWebhookOauth(updateWebhookOauthRequest, webhookOauthId)
Update OAuth credentials
-Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+Updates only the fields present in the request; anything omitted is left as it is. Sending `clientSecret` on its own rotates the secret for every webhook using these credentials. `customJwtClaims`, `customBodyParams` and `customHeaders` are all merged key by key rather than replaced, the same way a webhook's own `customHeaders` behaves: a key sent with a value is added or overwritten, a key sent with a `null` value is deleted, and a key you omit is left alone. Setting one of the three to `null` as a whole clears that map, which is the quick way to empty it without naming every key. There is no ambiguity between the two uses of `null` — one names an entry to delete, the other names the field. A claim cannot be set to JSON `null`, though, on this endpoint or on create, because `null` is spent on deletion. `webhookMtlsId` is a scalar rather than a map, so `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
### Example
diff --git a/pom.xml b/pom.xml
index c0bbd514..5c58d835 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
fireblocks-sdk
jar
fireblocks-sdk
- 32.0.0
+ 0.0.0
https://github.com/fireblocks/java-sdk
The Fireblocks Official SDK is a comprehensive software development kit that enables seamless integration and interaction with the Fireblocks platform. Fireblocks is a cutting-edge blockchain infrastructure platform that provides secure and scalable solutions for managing digital assets and transactions.
This SDK empowers developers to build robust applications that can interact with the Fireblocks platform's features, including creating and managing vault accounts, initiating secure transactions, managing assets, and more. It abstracts complex interactions with the Fireblocks API, making it easier for developers to leverage the platform's capabilities while adhering to best practices in security and efficiency.
diff --git a/src/main/java/com/fireblocks/sdk/Configuration.java b/src/main/java/com/fireblocks/sdk/Configuration.java
index c0dd0226..aa53bae8 100644
--- a/src/main/java/com/fireblocks/sdk/Configuration.java
+++ b/src/main/java/com/fireblocks/sdk/Configuration.java
@@ -21,7 +21,7 @@
value = "org.openapitools.codegen.languages.JavaClientCodegen",
comments = "Generator version: 7.14.0")
public class Configuration {
- public static final String VERSION = "32.0.0";
+ public static final String VERSION = "0.0.0";
private static final AtomicReference defaultApiClient = new AtomicReference<>();
private static volatile Supplier apiClientFactory = ApiClient::new;
diff --git a/src/main/java/com/fireblocks/sdk/Fireblocks.java b/src/main/java/com/fireblocks/sdk/Fireblocks.java
index f1c0703f..22d98563 100644
--- a/src/main/java/com/fireblocks/sdk/Fireblocks.java
+++ b/src/main/java/com/fireblocks/sdk/Fireblocks.java
@@ -44,7 +44,7 @@ public class Fireblocks {
private ComplianceApi compliance;
private ComplianceOrchestratorBetaApi complianceOrchestratorBeta;
private ComplianceScreeningConfigurationApi complianceScreeningConfiguration;
- private ConnectedAccountsBetaApi connectedAccountsBeta;
+ private ConnectedAccountsApi connectedAccounts;
private ConsoleUserApi consoleUser;
private ContactsApi contacts;
private ContractInteractionsApi contractInteractions;
@@ -287,11 +287,11 @@ public ComplianceScreeningConfigurationApi complianceScreeningConfiguration() {
return complianceScreeningConfiguration;
}
- public ConnectedAccountsBetaApi connectedAccountsBeta() {
- if (connectedAccountsBeta == null) {
- connectedAccountsBeta = new ConnectedAccountsBetaApi(apiClient);
+ public ConnectedAccountsApi connectedAccounts() {
+ if (connectedAccounts == null) {
+ connectedAccounts = new ConnectedAccountsApi(apiClient);
}
- return connectedAccountsBeta;
+ return connectedAccounts;
}
public ConsoleUserApi consoleUser() {
diff --git a/src/main/java/com/fireblocks/sdk/api/ComplianceApi.java b/src/main/java/com/fireblocks/sdk/api/ComplianceApi.java
index 79d9efe9..c4e2b430 100644
--- a/src/main/java/com/fireblocks/sdk/api/ComplianceApi.java
+++ b/src/main/java/com/fireblocks/sdk/api/ComplianceApi.java
@@ -22,6 +22,8 @@
import com.fireblocks.sdk.ValidationUtils;
import com.fireblocks.sdk.model.AddressRegistryAddVaultOptOutsRequest;
import com.fireblocks.sdk.model.AddressRegistryAddVaultOptOutsResponse;
+import com.fireblocks.sdk.model.AddressRegistryCreateProofOfOwnershipRequest;
+import com.fireblocks.sdk.model.AddressRegistryCreateProofOfOwnershipResponse;
import com.fireblocks.sdk.model.AddressRegistryGetVaultOptOutResponse;
import com.fireblocks.sdk.model.AddressRegistryLegalEntity;
import com.fireblocks.sdk.model.AddressRegistryListVaultOptOutsResponse;
@@ -29,6 +31,8 @@
import com.fireblocks.sdk.model.AddressRegistryRemoveVaultOptOutResponse;
import com.fireblocks.sdk.model.AddressRegistryTenantRegistryResponse;
import com.fireblocks.sdk.model.AddressRegistryVaultListOrder;
+import com.fireblocks.sdk.model.AddressRegistryVerifyProofOfOwnershipRequest;
+import com.fireblocks.sdk.model.AddressRegistryVerifyProofOfOwnershipResponse;
import com.fireblocks.sdk.model.AmlVerdictManualRequest;
import com.fireblocks.sdk.model.AmlVerdictManualResponse;
import com.fireblocks.sdk.model.ArsConfigResponse;
@@ -503,6 +507,117 @@ private HttpRequest.Builder assignVaultsToLegalEntityRequestBuilder(
}
return localVarRequestBuilder;
}
+ /**
+ * Create a Proof of Ownership PDF for an address Creates a Proof of Ownership PDF for a
+ * blockchain address owned by the authenticated workspace — for example, to share with a
+ * counterparty or bank as compliance evidence. Recipients can confirm it with `POST
+ * /v1/address_registry/proof_of_ownership_exports/verify`. Check
+ * `proofOfOwnershipAvailable` on `GET
+ * /v1/address_registry/legal_entities/{address}` first if you want to know whether create
+ * is likely to succeed.
+ *
+ * @param addressRegistryCreateProofOfOwnershipRequest (required)
+ * @param idempotencyKey A unique identifier for the request. If the request is sent multiple
+ * times with the same idempotency key, the server will return the same response as the
+ * first request. The idempotency key is valid for 24 hours. (optional)
+ * @return
+ * CompletableFuture<ApiResponse<AddressRegistryCreateProofOfOwnershipResponse>>,
+ * which completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture>
+ createAddressRegistryProofOfOwnership(
+ AddressRegistryCreateProofOfOwnershipRequest
+ addressRegistryCreateProofOfOwnershipRequest,
+ String idempotencyKey) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ createAddressRegistryProofOfOwnershipRequestBuilder(
+ addressRegistryCreateProofOfOwnershipRequest, idempotencyKey);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "createAddressRegistryProofOfOwnership",
+ localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse<
+ AddressRegistryCreateProofOfOwnershipResponse>(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ AddressRegistryCreateProofOfOwnershipResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder createAddressRegistryProofOfOwnershipRequestBuilder(
+ AddressRegistryCreateProofOfOwnershipRequest
+ addressRegistryCreateProofOfOwnershipRequest,
+ String idempotencyKey)
+ throws ApiException {
+ ValidationUtils.assertParamExists(
+ "createAddressRegistryProofOfOwnership",
+ "addressRegistryCreateProofOfOwnershipRequest",
+ addressRegistryCreateProofOfOwnershipRequest);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath = "/address_registry/proof_of_ownership_exports";
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ if (idempotencyKey != null) {
+ localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString());
+ }
+ localVarRequestBuilder.header("Content-Type", "application/json");
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ try {
+ byte[] localVarPostBody =
+ memberVarObjectMapper.writeValueAsBytes(
+ addressRegistryCreateProofOfOwnershipRequest);
+ localVarRequestBuilder.method(
+ "POST", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody));
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Create a counterparty group Creates a new counterparty group. **Endpoint Permissions:**
* Admin, Non-Signing Admin.
@@ -3590,4 +3705,112 @@ private HttpRequest.Builder updateTravelRuleConfigRequestBuilder(String idempote
}
return localVarRequestBuilder;
}
+ /**
+ * Verify a Proof of Ownership export Verifies a Proof of Ownership export against the record
+ * Fireblocks stored at creation. Returns `valid: false` (not 404) for an unknown,
+ * expired, or mismatched export. Available to any authenticated Fireblocks workspace, not just
+ * the export's original owner.
+ *
+ * @param addressRegistryVerifyProofOfOwnershipRequest (required)
+ * @param idempotencyKey A unique identifier for the request. If the request is sent multiple
+ * times with the same idempotency key, the server will return the same response as the
+ * first request. The idempotency key is valid for 24 hours. (optional)
+ * @return
+ * CompletableFuture<ApiResponse<AddressRegistryVerifyProofOfOwnershipResponse>>,
+ * which completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture>
+ verifyAddressRegistryProofOfOwnership(
+ AddressRegistryVerifyProofOfOwnershipRequest
+ addressRegistryVerifyProofOfOwnershipRequest,
+ String idempotencyKey) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ verifyAddressRegistryProofOfOwnershipRequestBuilder(
+ addressRegistryVerifyProofOfOwnershipRequest, idempotencyKey);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "verifyAddressRegistryProofOfOwnership",
+ localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse<
+ AddressRegistryVerifyProofOfOwnershipResponse>(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ AddressRegistryVerifyProofOfOwnershipResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder verifyAddressRegistryProofOfOwnershipRequestBuilder(
+ AddressRegistryVerifyProofOfOwnershipRequest
+ addressRegistryVerifyProofOfOwnershipRequest,
+ String idempotencyKey)
+ throws ApiException {
+ ValidationUtils.assertParamExists(
+ "verifyAddressRegistryProofOfOwnership",
+ "addressRegistryVerifyProofOfOwnershipRequest",
+ addressRegistryVerifyProofOfOwnershipRequest);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath = "/address_registry/proof_of_ownership_exports/verify";
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ if (idempotencyKey != null) {
+ localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString());
+ }
+ localVarRequestBuilder.header("Content-Type", "application/json");
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ try {
+ byte[] localVarPostBody =
+ memberVarObjectMapper.writeValueAsBytes(
+ addressRegistryVerifyProofOfOwnershipRequest);
+ localVarRequestBuilder.method(
+ "POST", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody));
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
}
diff --git a/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java b/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsApi.java
similarity index 97%
rename from src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java
rename to src/main/java/com/fireblocks/sdk/api/ConnectedAccountsApi.java
index e40fd89e..3c708f11 100644
--- a/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java
+++ b/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsApi.java
@@ -54,7 +54,7 @@
@jakarta.annotation.Generated(
value = "org.openapitools.codegen.languages.JavaClientCodegen",
comments = "Generator version: 7.14.0")
-public class ConnectedAccountsBetaApi {
+public class ConnectedAccountsApi {
private final HttpClient memberVarHttpClient;
private final ObjectMapper memberVarObjectMapper;
private final String memberVarBaseUri;
@@ -63,11 +63,11 @@ public class ConnectedAccountsBetaApi {
private final Consumer> memberVarResponseInterceptor;
private final Consumer> memberVarAsyncResponseInterceptor;
- public ConnectedAccountsBetaApi() {
+ public ConnectedAccountsApi() {
this(new ApiClient());
}
- public ConnectedAccountsBetaApi(ApiClient apiClient) {
+ public ConnectedAccountsApi(ApiClient apiClient) {
memberVarHttpClient = apiClient.getHttpClient();
memberVarObjectMapper = apiClient.getObjectMapper();
memberVarBaseUri = apiClient.getBaseUri();
@@ -118,8 +118,7 @@ private String formatExceptionMessage(String operationId, int statusCode, String
* `creds` field must be a Base64-encoded RSA-encrypted credential blob. Use `GET
* /connected_accounts/credentials/public_key` to retrieve the public key for encryption.
* The `providerType` is derived server-side from the `providerId` — callers
- * do not supply it. Endpoint Permission: Editor, Admin, Non-Signing Admin. **Note:** This
- * endpoint is currently in beta and might be subject to changes.
+ * do not supply it. Endpoint Permission: Editor, Admin, Non-Signing Admin.
*
* @param addConnectedAccountRequest (required)
* @param idempotencyKey A unique identifier for the request. If the request is sent multiple
@@ -211,8 +210,7 @@ private HttpRequest.Builder addConnectedAccountRequestBuilder(
return localVarRequestBuilder;
}
/**
- * Disconnect connected account Disconnect a connected account by ID. **Note**: - This endpoint
- * is currently in beta and might be subject to changes.
+ * Disconnect connected account Disconnect a connected account by ID.
*
* @param accountId The ID of the account to disconnect. (required)
* @return CompletableFuture<ApiResponse<Void>>, which completes exceptionally with
@@ -279,7 +277,6 @@ private HttpRequest.Builder disconnectConnectedAccountRequestBuilder(String acco
}
/**
* Get connected account Retrieve detailed information about a specific connected account by ID.
- * **Note:** This endpoint is currently in beta and might be subject to changes.
*
* @param accountId The ID of the account to fetch. (required)
* @return CompletableFuture<ApiResponse<ConnectedSingleAccountResponse>>, which
@@ -358,8 +355,7 @@ private HttpRequest.Builder getConnectedAccountRequestBuilder(String accountId)
}
/**
* Get allowlist for connected account Retrieves the address allowlist for a specified connected
- * account. **Note:** This endpoint is currently in beta and might be subject to changes.
- * Currently supports CoinbaseExchange/Binance accounts only.
+ * account. **Note:** Currently supports CoinbaseExchange/Binance accounts only.
*
* @param accountId The connected account identifier (required)
* @param status Filter by allowlist entry status (optional)
@@ -500,8 +496,7 @@ private HttpRequest.Builder getConnectedAccountAllowlistRequestBuilder(
}
/**
* Get a single allowlist entry for a connected account Retrieves a single allowlist entry by
- * its Fireblocks identifier for a specified connected account. **Note:** This endpoint is
- * currently in beta and might be subject to changes. Currently supports
+ * its Fireblocks identifier for a specified connected account. **Note:** Currently supports
* CoinbaseExchange/Binance accounts only.
*
* @param accountId The connected account identifier (required)
@@ -587,8 +582,7 @@ private HttpRequest.Builder getConnectedAccountAllowlistEntryRequestBuilder(
}
/**
* Get balances for an account Retrieve current asset balances for a specific connected account
- * as a flat list (one row per `assetId`, `balanceType`). **Note:** This
- * endpoint is currently in beta and might be subject to changes.
+ * as a flat list (one row per `assetId`, `balanceType`).
*
* @param accountId The ID of the account to fetch balances for. (required)
* @param pageSize Page size for pagination. (optional)
@@ -689,8 +683,7 @@ private HttpRequest.Builder getConnectedAccountBalancesRequestBuilder(
}
/**
* Get exchange rates for an account Retrieve current exchange rates for converting between
- * specific assets in a connected account. **Note:** This endpoint is currently in beta and
- * might be subject to changes.
+ * specific assets in a connected account.
*
* @param accountId The ID of the account to fetch rates for. (required)
* @param baseAssetId The ID of the asset to fetch rates for. (required)
@@ -795,8 +788,7 @@ private HttpRequest.Builder getConnectedAccountRatesRequestBuilder(
/**
* Get supported trading pairs for an account Retrieve all asset trading pairs supported by a
* specific connected account, including the pair type (`quote`, `market`,
- * `onOffRamp`). **Note:** This endpoint is currently in beta and might be subject to
- * changes.
+ * `onOffRamp`).
*
* @param accountId The ID of the account to fetch supported pairs for. (required)
* @param pageSize Page size for pagination. (optional, default to 100)
@@ -897,8 +889,7 @@ private HttpRequest.Builder getConnectedAccountTradingPairsRequestBuilder(
return localVarRequestBuilder;
}
/**
- * Get connected accounts Returns all connected accounts. **Note:** This endpoint is currently
- * in beta and might be subject to changes.
+ * Get connected accounts Returns all connected accounts.
*
* @param mainAccounts Whether to include only main accounts in the response. (optional, default
* to false)
@@ -999,8 +990,7 @@ private HttpRequest.Builder getConnectedAccountsRequestBuilder(
* Get public key to encrypt connected account credentials Returns the RSA public key used to
* encrypt the `creds` field before calling `POST /connected_accounts`. The
* key is a singleton resource scoped to the connected-accounts credentials domain — there is
- * one per tenant context. **Note:** This endpoint is currently in beta and might be subject to
- * changes.
+ * one per tenant context.
*
* @return
* CompletableFuture<ApiResponse<GetConnectedAccountsCredentialsPublicKeyResponse>>,
@@ -1078,8 +1068,7 @@ private HttpRequest.Builder getConnectedAccountsCredentialsPublicKeyRequestBuild
return localVarRequestBuilder;
}
/**
- * Rename Connected Account Rename a connected account by account ID. **Note:** This endpoint is
- * currently in beta and might be subject to changes.
+ * Rename Connected Account Rename a connected account by account ID.
*
* @param renameConnectedAccountRequest (required)
* @param accountId The unique identifier of the connected account (required)
@@ -1185,8 +1174,7 @@ private HttpRequest.Builder renameConnectedAccountRequestBuilder(
/**
* Sync allowlist for connected account Triggers an on-demand sync from the exchange, bypassing
* the cache and fetching live data immediately. **Rate limit:** 1 request per minute per
- * connected account. **Note:** This endpoint is currently in beta and might be subject to
- * changes. Currently supports CoinbaseExchange/Binance accounts only.
+ * connected account. **Note:** Currently supports CoinbaseExchange/Binance accounts only.
*
* @param accountId The connected account identifier (required)
* @param idempotencyKey A unique identifier for the request. If the request is sent multiple
@@ -1268,8 +1256,7 @@ private HttpRequest.Builder syncConnectedAccountAllowlistRequestBuilder(
* mandatory. Validation against the exchange is synchronous, but the update itself is **pending
* mobile approval** — the existing credentials stay live until the change is approved, so none
* of the affected accounts are disconnected in the meantime. Endpoint Permission: Admin,
- * Non-Signing Admin. **Note:** This endpoint is currently in beta and might be subject to
- * changes.
+ * Non-Signing Admin.
*
* @param updateConnectedAccountCredentialsRequest (required)
* @param accountId The unique identifier of the connected account whose API key credentials are
diff --git a/src/main/java/com/fireblocks/sdk/api/ConsoleUserApi.java b/src/main/java/com/fireblocks/sdk/api/ConsoleUserApi.java
index 45e0918d..9f96237e 100644
--- a/src/main/java/com/fireblocks/sdk/api/ConsoleUserApi.java
+++ b/src/main/java/com/fireblocks/sdk/api/ConsoleUserApi.java
@@ -18,6 +18,9 @@
import com.fireblocks.sdk.ApiClient;
import com.fireblocks.sdk.ApiException;
import com.fireblocks.sdk.ApiResponse;
+import com.fireblocks.sdk.Pair;
+import com.fireblocks.sdk.ValidationUtils;
+import com.fireblocks.sdk.model.ConsoleUser;
import com.fireblocks.sdk.model.CreateConsoleUser;
import com.fireblocks.sdk.model.GetConsoleUsersResponse;
import java.io.IOException;
@@ -27,6 +30,9 @@
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringJoiner;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
@@ -173,6 +179,104 @@ private HttpRequest.Builder createConsoleUserRequestBuilder(
}
return localVarRequestBuilder;
}
+ /**
+ * Request deletion of a console user Requests deletion of a console user. The request is
+ * asynchronous: it goes through the workspace's configured \"Delete users\"
+ * approval policy (Settings > Quorums), exactly as deleting a user from the console does,
+ * and the user is removed only once that approval completes. - Track progress by polling GET
+ * /management/users; deletion is complete when the user is disabled. - Please note that this
+ * endpoint is available only for API keys with Admin/Non Signing Admin permissions. Endpoint
+ * Permission: Admin, Non-Signing Admin. **Note:** This endpoint is currently in beta and might
+ * be subject to changes.
+ *
+ * @param id The ID of the console user to delete (required)
+ * @param force Acknowledges the impact of removing this user and proceeds anyway. Overrides
+ * both USER_REFERENCED_IN_TAP and QUORUM_INTEGRITY, the same way the acknowledgement
+ * checkbox does in the console. (optional, default to false)
+ * @return CompletableFuture<ApiResponse<ConsoleUser>>, which completes
+ * exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> deleteConsoleUser(String id, Boolean force) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder = deleteConsoleUserRequestBuilder(id, force);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException("deleteConsoleUser", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ ConsoleUser>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>failedFuture(
+ toApiFailure(localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder deleteConsoleUserRequestBuilder(String id, Boolean force)
+ throws ApiException {
+ ValidationUtils.assertParamExistsAndNotEmpty("deleteConsoleUser", "id", id);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath =
+ "/management/users/{id}".replace("{id}", ApiClient.urlEncode(id.toString()));
+
+ List localVarQueryParams = new ArrayList<>();
+ StringJoiner localVarQueryStringJoiner = new StringJoiner("&");
+ String localVarQueryParameterBaseName;
+ localVarQueryParameterBaseName = "force";
+ localVarQueryParams.addAll(ApiClient.parameterToPairs("force", force));
+
+ if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) {
+ StringJoiner queryJoiner = new StringJoiner("&");
+ localVarQueryParams.forEach(p -> queryJoiner.add(p.getName() + '=' + p.getValue()));
+ if (localVarQueryStringJoiner.length() != 0) {
+ queryJoiner.add(localVarQueryStringJoiner.toString());
+ }
+ localVarRequestBuilder.uri(
+ URI.create(memberVarBaseUri + localVarPath + '?' + queryJoiner.toString()));
+ } else {
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+ }
+
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ localVarRequestBuilder.method("DELETE", HttpRequest.BodyPublishers.noBody());
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Get console users Get console users for your workspace. - Please note that this endpoint is
* available only for API keys with Admin/Non Signing Admin permissions. Endpoint Permission:
diff --git a/src/main/java/com/fireblocks/sdk/api/UtxoManagementBetaApi.java b/src/main/java/com/fireblocks/sdk/api/UtxoManagementBetaApi.java
index a9d11531..5eb6e27b 100644
--- a/src/main/java/com/fireblocks/sdk/api/UtxoManagementBetaApi.java
+++ b/src/main/java/com/fireblocks/sdk/api/UtxoManagementBetaApi.java
@@ -23,6 +23,8 @@
import com.fireblocks.sdk.model.AttachDetachUtxoLabelsRequest;
import com.fireblocks.sdk.model.AttachDetachUtxoLabelsResponse;
import com.fireblocks.sdk.model.ListUtxosResponse;
+import com.fireblocks.sdk.model.UpsertUtxoSelectionConfigRequest;
+import com.fireblocks.sdk.model.UtxoSelectionConfigResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
@@ -102,6 +104,82 @@ private String formatExceptionMessage(String operationId, int statusCode, String
return operationId + " call failed with: " + statusCode + " - " + body;
}
+ /**
+ * Get UTXO selection config Returns the workspace-level configured selection strategy and the
+ * effective strategy after runtime resolution. `ADAPTIVE` is the recommended
+ * strategy. When no row is stored (source `DEFAULT`), `effective` is
+ * `ADAPTIVE` if adaptive selection is serving for this workspace, otherwise
+ * `ASC`. **Note:** These endpoints are currently in beta and might be subject to
+ * changes. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
+ *
+ * @return CompletableFuture<ApiResponse<UtxoSelectionConfigResponse>>, which
+ * completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> getUtxoSelectionConfig() {
+ try {
+ HttpRequest.Builder localVarRequestBuilder = getUtxoSelectionConfigRequestBuilder();
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "getUtxoSelectionConfig", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ UtxoSelectionConfigResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder getUtxoSelectionConfigRequestBuilder() throws ApiException {
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath = "/utxo_management/selection_config";
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody());
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* List unspent outputs (UTXOs) Returns a paginated list of unspent transaction outputs (UTXOs)
* for a UTXO-based asset in a vault account, with optional filters for labels, statuses,
@@ -286,13 +364,111 @@ private HttpRequest.Builder getUtxosRequestBuilder(
}
return localVarRequestBuilder;
}
+ /**
+ * Get vault and asset UTXO selection config Returns the config stored at this vault-and-asset
+ * scope, if any, and the effective strategy after workspace fallback and runtime resolution.
+ * `ADAPTIVE` is the recommended strategy. When no row is stored at this scope and
+ * none is inherited from the workspace (source `DEFAULT`), `effective` is
+ * `ADAPTIVE` if adaptive selection is serving for this scope, otherwise
+ * `ASC`. **Note:** These endpoints are currently in beta and might be subject to
+ * changes. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
+ *
+ * @param vaultAccountId The ID of the vault account. (required)
+ * @param assetId The ID of the asset (required)
+ * @return CompletableFuture<ApiResponse<UtxoSelectionConfigResponse>>, which
+ * completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture>
+ getVaultAssetUtxoSelectionConfig(String vaultAccountId, String assetId) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ getVaultAssetUtxoSelectionConfigRequestBuilder(vaultAccountId, assetId);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "getVaultAssetUtxoSelectionConfig",
+ localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ UtxoSelectionConfigResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder getVaultAssetUtxoSelectionConfigRequestBuilder(
+ String vaultAccountId, String assetId) throws ApiException {
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "getVaultAssetUtxoSelectionConfig", "vaultAccountId", vaultAccountId);
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "getVaultAssetUtxoSelectionConfig", "assetId", assetId);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath =
+ "/utxo_management/{vaultAccountId}/{assetId}/selection_config"
+ .replace("{vaultAccountId}", ApiClient.urlEncode(vaultAccountId.toString()))
+ .replace("{assetId}", ApiClient.urlEncode(assetId.toString()));
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody());
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Attach or detach labels to/from UTXOs Attach or detach labels to/from UTXOs in a vault
* account. Labels can be used for organizing and filtering UTXOs. Labels are applied additively
* — `labelsToAttach` adds to the existing label set and `labelsToDetach`
- * removes from it. Neither operation replaces the full set. **Note:** These endpoints are
- * currently in beta and might be subject to changes. Endpoint Permission: Admin, Non-Signing
- * Admin, Signer, Approver, Editor.
+ * removes from it. Neither operation replaces the full set. The request is all-or-nothing: if
+ * any identifier cannot be labelled, no UTXO is labelled and the request fails with
+ * `400`. The response lists every failed identifier in `failures`, each
+ * with its own `reason` — use it, not the status, to decide what to do: -
+ * `NOT_FOUND` — not found in this vault and asset. - `NOT_LABELLABLE` —
+ * spent, or removed, and can no longer be labelled. A UTXO removed within the last hour is
+ * reported as `NOT_FOUND` with `utxoStatus: REMOVED`; if it does not
+ * reappear, it becomes `NOT_LABELLABLE` after about an hour. A `400`
+ * without `failures` means the request itself is malformed. **Note:** These endpoints
+ * are currently in beta and might be subject to changes. Endpoint Permission: Admin,
+ * Non-Signing Admin, Signer, Approver, Editor.
*
* @param attachDetachUtxoLabelsRequest (required)
* @param vaultAccountId The ID of the vault account (required)
@@ -397,4 +573,221 @@ private HttpRequest.Builder updateUtxoLabelsRequestBuilder(
}
return localVarRequestBuilder;
}
+ /**
+ * Upsert UTXO selection config Creates or updates the workspace-level UTXO selection strategy.
+ * `ADAPTIVE` is recommended. **Note:** These endpoints are currently in beta and
+ * might be subject to changes. Endpoint Permission: Admin, Non-Signing Admin.
+ *
+ * @param upsertUtxoSelectionConfigRequest (required)
+ * @param idempotencyKey A unique identifier for the request. If the request is sent multiple
+ * times with the same idempotency key, the server will return the same response as the
+ * first request. The idempotency key is valid for 24 hours. (optional)
+ * @return CompletableFuture<ApiResponse<UtxoSelectionConfigResponse>>, which
+ * completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> upsertUtxoSelectionConfig(
+ UpsertUtxoSelectionConfigRequest upsertUtxoSelectionConfigRequest,
+ String idempotencyKey) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ upsertUtxoSelectionConfigRequestBuilder(
+ upsertUtxoSelectionConfigRequest, idempotencyKey);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "upsertUtxoSelectionConfig", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ UtxoSelectionConfigResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder upsertUtxoSelectionConfigRequestBuilder(
+ UpsertUtxoSelectionConfigRequest upsertUtxoSelectionConfigRequest,
+ String idempotencyKey)
+ throws ApiException {
+ ValidationUtils.assertParamExists(
+ "upsertUtxoSelectionConfig",
+ "upsertUtxoSelectionConfigRequest",
+ upsertUtxoSelectionConfigRequest);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath = "/utxo_management/selection_config";
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ if (idempotencyKey != null) {
+ localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString());
+ }
+ localVarRequestBuilder.header("Content-Type", "application/json");
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ try {
+ byte[] localVarPostBody =
+ memberVarObjectMapper.writeValueAsBytes(upsertUtxoSelectionConfigRequest);
+ localVarRequestBuilder.method(
+ "PUT", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody));
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
+ /**
+ * Upsert vault and asset UTXO selection config Creates or updates the UTXO selection strategy
+ * for this vault account and asset. `ADAPTIVE` is recommended. **Note:** These
+ * endpoints are currently in beta and might be subject to changes. Endpoint Permission: Admin,
+ * Non-Signing Admin.
+ *
+ * @param upsertUtxoSelectionConfigRequest (required)
+ * @param vaultAccountId The ID of the vault account. (required)
+ * @param assetId The ID of the asset (required)
+ * @param idempotencyKey A unique identifier for the request. If the request is sent multiple
+ * times with the same idempotency key, the server will return the same response as the
+ * first request. The idempotency key is valid for 24 hours. (optional)
+ * @return CompletableFuture<ApiResponse<UtxoSelectionConfigResponse>>, which
+ * completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture>
+ upsertVaultAssetUtxoSelectionConfig(
+ UpsertUtxoSelectionConfigRequest upsertUtxoSelectionConfigRequest,
+ String vaultAccountId,
+ String assetId,
+ String idempotencyKey) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ upsertVaultAssetUtxoSelectionConfigRequestBuilder(
+ upsertUtxoSelectionConfigRequest,
+ vaultAccountId,
+ assetId,
+ idempotencyKey);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "upsertVaultAssetUtxoSelectionConfig",
+ localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ UtxoSelectionConfigResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder upsertVaultAssetUtxoSelectionConfigRequestBuilder(
+ UpsertUtxoSelectionConfigRequest upsertUtxoSelectionConfigRequest,
+ String vaultAccountId,
+ String assetId,
+ String idempotencyKey)
+ throws ApiException {
+ ValidationUtils.assertParamExists(
+ "upsertVaultAssetUtxoSelectionConfig",
+ "upsertUtxoSelectionConfigRequest",
+ upsertUtxoSelectionConfigRequest);
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "upsertVaultAssetUtxoSelectionConfig", "vaultAccountId", vaultAccountId);
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "upsertVaultAssetUtxoSelectionConfig", "assetId", assetId);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath =
+ "/utxo_management/{vaultAccountId}/{assetId}/selection_config"
+ .replace("{vaultAccountId}", ApiClient.urlEncode(vaultAccountId.toString()))
+ .replace("{assetId}", ApiClient.urlEncode(assetId.toString()));
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ if (idempotencyKey != null) {
+ localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString());
+ }
+ localVarRequestBuilder.header("Content-Type", "application/json");
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ try {
+ byte[] localVarPostBody =
+ memberVarObjectMapper.writeValueAsBytes(upsertUtxoSelectionConfigRequest);
+ localVarRequestBuilder.method(
+ "PUT", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody));
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
}
diff --git a/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java b/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java
index dadbdfc6..b824ed16 100644
--- a/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java
+++ b/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java
@@ -20,8 +20,10 @@
import com.fireblocks.sdk.ApiResponse;
import com.fireblocks.sdk.Pair;
import com.fireblocks.sdk.ValidationUtils;
+import com.fireblocks.sdk.model.CreateWebhookMtlsConfigRequest;
import com.fireblocks.sdk.model.CreateWebhookOauthRequest;
import com.fireblocks.sdk.model.CreateWebhookRequest;
+import com.fireblocks.sdk.model.DeleteWebhookMtlsConfigResponse;
import com.fireblocks.sdk.model.DeleteWebhookOauthResponse;
import com.fireblocks.sdk.model.NotificationAttemptsPaginatedResponse;
import com.fireblocks.sdk.model.NotificationPaginatedResponse;
@@ -33,11 +35,13 @@
import com.fireblocks.sdk.model.ResendFailedNotificationsRequest;
import com.fireblocks.sdk.model.ResendFailedNotificationsResponse;
import com.fireblocks.sdk.model.ResendNotificationsByResourceIdRequest;
+import com.fireblocks.sdk.model.UpdateWebhookMtlsConfigRequest;
import com.fireblocks.sdk.model.UpdateWebhookOauthRequest;
import com.fireblocks.sdk.model.UpdateWebhookRequest;
import com.fireblocks.sdk.model.Webhook;
import com.fireblocks.sdk.model.WebhookEvent;
import com.fireblocks.sdk.model.WebhookMetric;
+import com.fireblocks.sdk.model.WebhookMtlsConfig;
import com.fireblocks.sdk.model.WebhookMtlsCsrResponse;
import com.fireblocks.sdk.model.WebhookOauthCredentials;
import com.fireblocks.sdk.model.WebhookPaginatedResponse;
@@ -208,6 +212,106 @@ private HttpRequest.Builder createWebhookRequestBuilder(
}
return localVarRequestBuilder;
}
+ /**
+ * Create an mTLS configuration Stores a certificate signed against the CSR from `GET
+ * /v1/webhooks_settings/mtls_csr` and returns its id, which is then set as
+ * `webhookMtlsId` on a webhook or on OAuth credentials. The private key the
+ * certificate was issued for is derived from the certificate, so it is never named by the
+ * caller. Re-uploading a certificate already stored returns the existing id rather than
+ * creating a second configuration, so several webhooks and OAuth credentials can share one
+ * certificate. A certificate that was not issued for a private key this workspace holds is
+ * rejected with a `400`. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ *
+ * @param createWebhookMtlsConfigRequest (required)
+ * @param idempotencyKey A unique identifier for the request. If the request is sent multiple
+ * times with the same idempotency key, the server will return the same response as the
+ * first request. The idempotency key is valid for 24 hours. (optional)
+ * @return CompletableFuture<ApiResponse<WebhookMtlsConfig>>, which completes
+ * exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> createWebhookMtlsConfig(
+ CreateWebhookMtlsConfigRequest createWebhookMtlsConfigRequest, String idempotencyKey) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ createWebhookMtlsConfigRequestBuilder(
+ createWebhookMtlsConfigRequest, idempotencyKey);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "createWebhookMtlsConfig", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ WebhookMtlsConfig>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>failedFuture(
+ toApiFailure(localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder createWebhookMtlsConfigRequestBuilder(
+ CreateWebhookMtlsConfigRequest createWebhookMtlsConfigRequest, String idempotencyKey)
+ throws ApiException {
+ ValidationUtils.assertParamExists(
+ "createWebhookMtlsConfig",
+ "createWebhookMtlsConfigRequest",
+ createWebhookMtlsConfigRequest);
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath = "/webhooks_settings/mtls";
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ if (idempotencyKey != null) {
+ localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString());
+ }
+ localVarRequestBuilder.header("Content-Type", "application/json");
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ try {
+ byte[] localVarPostBody =
+ memberVarObjectMapper.writeValueAsBytes(createWebhookMtlsConfigRequest);
+ localVarRequestBuilder.method(
+ "POST", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody));
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Create OAuth credentials Creates a reusable OAuth client credential set. Attach it to a
* webhook by passing the returned id as that webhook's `webhookOauthId`. Several
@@ -377,6 +481,118 @@ private HttpRequest.Builder deleteWebhookRequestBuilder(UUID webhookId) throws A
}
return localVarRequestBuilder;
}
+ /**
+ * Delete an mTLS configuration Deletes an mTLS configuration. By default the delete is refused
+ * while the configuration is still in use: if any webhook or OAuth credentials reference it,
+ * nothing is deleted and the request fails with `409 Conflict`, naming the reason and
+ * listing the ids of what references it. This protects a shared configuration from being
+ * removed out from under the webhooks and token requests that depend on it. Pass
+ * `forceDelete=true` to delete anyway. That detaches everything referencing it —
+ * it clears `webhookMtlsId` on each webhook and OAuth credentials, it does **not**
+ * delete them — then deletes the configuration and returns the deleted resource together with
+ * `detachedWebhookIds` and `detachedWebhookOauthIds`. Detached webhooks
+ * keep delivering notifications, and detached OAuth credentials keep requesting tokens, but
+ * without a client certificate, so an endpoint that requires mTLS will reject them from that
+ * point on. When nothing references the configuration the delete succeeds either way, and both
+ * lists come back empty. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ *
+ * @param webhookMtlsId The unique identifier of the mTLS configuration (required)
+ * @param forceDelete Delete the configuration even while webhooks or OAuth credentials still
+ * reference it, detaching them instead of refusing; their ids are returned in
+ * `detachedWebhookIds` and `detachedWebhookOauthIds`. Leave it unset,
+ * or `false`, to get a `409 Conflict` whenever anything still
+ * references the configuration. (optional, default to false)
+ * @return CompletableFuture<ApiResponse<DeleteWebhookMtlsConfigResponse>>, which
+ * completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> deleteWebhookMtlsConfig(
+ UUID webhookMtlsId, Boolean forceDelete) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ deleteWebhookMtlsConfigRequestBuilder(webhookMtlsId, forceDelete);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "deleteWebhookMtlsConfig", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ DeleteWebhookMtlsConfigResponse>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder deleteWebhookMtlsConfigRequestBuilder(
+ UUID webhookMtlsId, Boolean forceDelete) throws ApiException {
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "deleteWebhookMtlsConfig", "webhookMtlsId", webhookMtlsId.toString());
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath =
+ "/webhooks_settings/mtls/{webhookMtlsId}"
+ .replace("{webhookMtlsId}", ApiClient.urlEncode(webhookMtlsId.toString()));
+
+ List localVarQueryParams = new ArrayList<>();
+ StringJoiner localVarQueryStringJoiner = new StringJoiner("&");
+ String localVarQueryParameterBaseName;
+ localVarQueryParameterBaseName = "forceDelete";
+ localVarQueryParams.addAll(ApiClient.parameterToPairs("forceDelete", forceDelete));
+
+ if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) {
+ StringJoiner queryJoiner = new StringJoiner("&");
+ localVarQueryParams.forEach(p -> queryJoiner.add(p.getName() + '=' + p.getValue()));
+ if (localVarQueryStringJoiner.length() != 0) {
+ queryJoiner.add(localVarQueryStringJoiner.toString());
+ }
+ localVarRequestBuilder.uri(
+ URI.create(memberVarBaseUri + localVarPath + '?' + queryJoiner.toString()));
+ } else {
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+ }
+
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ localVarRequestBuilder.method("DELETE", HttpRequest.BodyPublishers.noBody());
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Delete OAuth credentials Deletes an OAuth credential set. By default the delete is refused
* while the credentials are still in use: if any webhook references them, nothing is deleted
@@ -1264,6 +1480,178 @@ private HttpRequest.Builder getWebhookRequestBuilder(UUID webhookId) throws ApiE
}
return localVarRequestBuilder;
}
+ /**
+ * Get an mTLS configuration by id Retrieve one stored mTLS configuration by its id.
+ *
+ * @param webhookMtlsId The unique identifier of the mTLS configuration (required)
+ * @return CompletableFuture<ApiResponse<WebhookMtlsConfig>>, which completes
+ * exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> getWebhookMtlsConfig(
+ UUID webhookMtlsId) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ getWebhookMtlsConfigRequestBuilder(webhookMtlsId);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "getWebhookMtlsConfig", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ WebhookMtlsConfig>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>failedFuture(
+ toApiFailure(localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder getWebhookMtlsConfigRequestBuilder(UUID webhookMtlsId)
+ throws ApiException {
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "getWebhookMtlsConfig", "webhookMtlsId", webhookMtlsId.toString());
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath =
+ "/webhooks_settings/mtls/{webhookMtlsId}"
+ .replace("{webhookMtlsId}", ApiClient.urlEncode(webhookMtlsId.toString()));
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody());
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
+ /**
+ * List the uploaded mTLS configurations Lists the workspace's mTLS configurations, newest
+ * first. Pass `ids` to ask about particular ones instead — useful for resolving the
+ * `webhookMtlsId` values on a set of webhooks in one call.
+ *
+ * @param ids Return only the configurations with these ids, instead of all of them. Repeat the
+ * parameter for each id. An id belonging to another workspace, or to nothing, is left out
+ * of the response rather than failing the request. (optional
+ * @return CompletableFuture<ApiResponse<List<WebhookMtlsConfig>>>, which
+ * completes exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture>> getWebhookMtlsConfigs(
+ List ids) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder = getWebhookMtlsConfigsRequestBuilder(ids);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "getWebhookMtlsConfigs", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse>(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ List<
+ WebhookMtlsConfig>>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>>
+ failedFuture(
+ toApiFailure(
+ localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder getWebhookMtlsConfigsRequestBuilder(List ids)
+ throws ApiException {
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath = "/webhooks_settings/mtls";
+
+ List localVarQueryParams = new ArrayList<>();
+ StringJoiner localVarQueryStringJoiner = new StringJoiner("&");
+ String localVarQueryParameterBaseName;
+ localVarQueryParameterBaseName = "ids";
+ localVarQueryParams.addAll(ApiClient.parameterToPairs("multi", "ids", ids));
+
+ if (!localVarQueryParams.isEmpty() || localVarQueryStringJoiner.length() != 0) {
+ StringJoiner queryJoiner = new StringJoiner("&");
+ localVarQueryParams.forEach(p -> queryJoiner.add(p.getName() + '=' + p.getValue()));
+ if (localVarQueryStringJoiner.length() != 0) {
+ queryJoiner.add(localVarQueryStringJoiner.toString());
+ }
+ localVarRequestBuilder.uri(
+ URI.create(memberVarBaseUri + localVarPath + '?' + queryJoiner.toString()));
+ } else {
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+ }
+
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ localVarRequestBuilder.method("GET", HttpRequest.BodyPublishers.noBody());
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Get OAuth credentials by id Retrieve an OAuth credential set by its id. The client secret is
* never returned.
@@ -1976,6 +2364,105 @@ private HttpRequest.Builder updateWebhookRequestBuilder(
}
return localVarRequestBuilder;
}
+ /**
+ * Update an mTLS configuration Renames a configuration, replaces its certificate, or both. Only
+ * the fields present in the request are changed; anything omitted is left as it is, and a
+ * request with neither field is rejected with a `400`. Replacing
+ * `signedCert` switches every webhook and OAuth credentials set using this
+ * configuration over to the new certificate in one write, and the private key it was issued for
+ * is re-derived from the certificate. A replacement that was not issued for a private key this
+ * workspace holds is rejected with a `400`. Sending `name: null` removes
+ * the label. **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
+ *
+ * @param updateWebhookMtlsConfigRequest (required)
+ * @param webhookMtlsId The unique identifier of the mTLS configuration (required)
+ * @return CompletableFuture<ApiResponse<WebhookMtlsConfig>>, which completes
+ * exceptionally with an {@link ApiException} if the API call fails
+ */
+ public CompletableFuture> updateWebhookMtlsConfig(
+ UpdateWebhookMtlsConfigRequest updateWebhookMtlsConfigRequest, UUID webhookMtlsId) {
+ try {
+ HttpRequest.Builder localVarRequestBuilder =
+ updateWebhookMtlsConfigRequestBuilder(
+ updateWebhookMtlsConfigRequest, webhookMtlsId);
+ return memberVarHttpClient
+ .sendAsync(localVarRequestBuilder.build(), HttpResponse.BodyHandlers.ofString())
+ .thenComposeAsync(
+ localVarResponse -> {
+ if (memberVarAsyncResponseInterceptor != null) {
+ memberVarAsyncResponseInterceptor.accept(localVarResponse);
+ }
+ if (localVarResponse.statusCode() / 100 != 2) {
+ return CompletableFuture.failedFuture(
+ getApiException(
+ "updateWebhookMtlsConfig", localVarResponse));
+ }
+ try {
+ String responseBody = localVarResponse.body();
+ return CompletableFuture.completedFuture(
+ new ApiResponse(
+ localVarResponse.statusCode(),
+ localVarResponse.headers().map(),
+ responseBody == null || responseBody.isBlank()
+ ? null
+ : memberVarObjectMapper.readValue(
+ responseBody,
+ new TypeReference<
+ WebhookMtlsConfig>() {})));
+ } catch (IOException e) {
+ return CompletableFuture.failedFuture(new ApiException(e));
+ }
+ })
+ .handle(
+ (localVarApiResponse, localVarThrowable) ->
+ localVarThrowable == null
+ ? CompletableFuture.completedFuture(localVarApiResponse)
+ : CompletableFuture
+ .>failedFuture(
+ toApiFailure(localVarThrowable)))
+ .thenCompose(localVarNormalized -> localVarNormalized);
+ } catch (ApiException e) {
+ return CompletableFuture.failedFuture(e);
+ }
+ }
+
+ private HttpRequest.Builder updateWebhookMtlsConfigRequestBuilder(
+ UpdateWebhookMtlsConfigRequest updateWebhookMtlsConfigRequest, UUID webhookMtlsId)
+ throws ApiException {
+ ValidationUtils.assertParamExists(
+ "updateWebhookMtlsConfig",
+ "updateWebhookMtlsConfigRequest",
+ updateWebhookMtlsConfigRequest);
+ ValidationUtils.assertParamExistsAndNotEmpty(
+ "updateWebhookMtlsConfig", "webhookMtlsId", webhookMtlsId.toString());
+
+ HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder();
+
+ String localVarPath =
+ "/webhooks_settings/mtls/{webhookMtlsId}"
+ .replace("{webhookMtlsId}", ApiClient.urlEncode(webhookMtlsId.toString()));
+
+ localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath));
+
+ localVarRequestBuilder.header("Content-Type", "application/json");
+ localVarRequestBuilder.header("Accept", "application/json");
+
+ try {
+ byte[] localVarPostBody =
+ memberVarObjectMapper.writeValueAsBytes(updateWebhookMtlsConfigRequest);
+ localVarRequestBuilder.method(
+ "PATCH", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody));
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ if (memberVarReadTimeout != null) {
+ localVarRequestBuilder.timeout(memberVarReadTimeout);
+ }
+ if (memberVarInterceptor != null) {
+ memberVarInterceptor.accept(localVarRequestBuilder);
+ }
+ return localVarRequestBuilder;
+ }
/**
* Update OAuth credentials Updates only the fields present in the request; anything omitted is
* left as it is. Sending `clientSecret` on its own rotates the secret for every
@@ -1987,7 +2474,7 @@ private HttpRequest.Builder updateWebhookRequestBuilder(
* quick way to empty it without naming every key. There is no ambiguity between the two uses of
* `null` — one names an entry to delete, the other names the field. A claim cannot be
* set to JSON `null`, though, on this endpoint or on create, because `null`
- * is spent on deletion. `mtlsClientSignedCert` is a scalar rather than a map, so
+ * is spent on deletion. `webhookMtlsId` is a scalar rather than a map, so
* `null` there does remove it. **Endpoint Permissions:** Owner, Admin, Non-Signing
* Admin.
*
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipRequest.java b/src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipRequest.java
new file mode 100644
index 00000000..3cf88c00
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipRequest.java
@@ -0,0 +1,150 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/** Request body for creating an Address Registry Proof of Ownership PDF export. */
+@JsonPropertyOrder({AddressRegistryCreateProofOfOwnershipRequest.JSON_PROPERTY_ADDRESS})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class AddressRegistryCreateProofOfOwnershipRequest {
+ public static final String JSON_PROPERTY_ADDRESS = "address";
+ @jakarta.annotation.Nonnull private String address;
+
+ public AddressRegistryCreateProofOfOwnershipRequest() {}
+
+ @JsonCreator
+ public AddressRegistryCreateProofOfOwnershipRequest(
+ @JsonProperty(value = JSON_PROPERTY_ADDRESS, required = true) String address) {
+ this.address = address;
+ }
+
+ public AddressRegistryCreateProofOfOwnershipRequest address(
+ @jakarta.annotation.Nonnull String address) {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Blockchain address to prove ownership for (must resolve to the caller's workspace). Same
+ * format expectations as the `address` path parameter on `GET
+ * /v1/address_registry/legal_entities/{address}`.
+ *
+ * @return address
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_ADDRESS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getAddress() {
+ return address;
+ }
+
+ @JsonProperty(JSON_PROPERTY_ADDRESS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setAddress(@jakarta.annotation.Nonnull String address) {
+ this.address = address;
+ }
+
+ /** Return true if this AddressRegistryCreateProofOfOwnershipRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AddressRegistryCreateProofOfOwnershipRequest addressRegistryCreateProofOfOwnershipRequest =
+ (AddressRegistryCreateProofOfOwnershipRequest) o;
+ return Objects.equals(this.address, addressRegistryCreateProofOfOwnershipRequest.address);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(address);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddressRegistryCreateProofOfOwnershipRequest {\n");
+ sb.append(" address: ").append(toIndentedString(address)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `address` to the URL query string
+ if (getAddress() != null) {
+ joiner.add(
+ String.format(
+ "%saddress%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getAddress()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipResponse.java b/src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipResponse.java
new file mode 100644
index 00000000..1d31bba5
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/AddressRegistryCreateProofOfOwnershipResponse.java
@@ -0,0 +1,285 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.StringJoiner;
+import java.util.UUID;
+
+/** Address Registry Proof of Ownership PDF export, created successfully. */
+@JsonPropertyOrder({
+ AddressRegistryCreateProofOfOwnershipResponse.JSON_PROPERTY_PDF,
+ AddressRegistryCreateProofOfOwnershipResponse.JSON_PROPERTY_EXPORT_ID,
+ AddressRegistryCreateProofOfOwnershipResponse.JSON_PROPERTY_VERIFICATION_HASH,
+ AddressRegistryCreateProofOfOwnershipResponse.JSON_PROPERTY_EXPIRES_AT
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class AddressRegistryCreateProofOfOwnershipResponse {
+ public static final String JSON_PROPERTY_PDF = "pdf";
+ @jakarta.annotation.Nonnull private byte[] pdf;
+
+ public static final String JSON_PROPERTY_EXPORT_ID = "exportId";
+ @jakarta.annotation.Nonnull private UUID exportId;
+
+ public static final String JSON_PROPERTY_VERIFICATION_HASH = "verificationHash";
+ @jakarta.annotation.Nonnull private String verificationHash;
+
+ public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt";
+ @jakarta.annotation.Nonnull private String expiresAt;
+
+ public AddressRegistryCreateProofOfOwnershipResponse() {}
+
+ @JsonCreator
+ public AddressRegistryCreateProofOfOwnershipResponse(
+ @JsonProperty(value = JSON_PROPERTY_PDF, required = true) byte[] pdf,
+ @JsonProperty(value = JSON_PROPERTY_EXPORT_ID, required = true) UUID exportId,
+ @JsonProperty(value = JSON_PROPERTY_VERIFICATION_HASH, required = true)
+ String verificationHash,
+ @JsonProperty(value = JSON_PROPERTY_EXPIRES_AT, required = true) String expiresAt) {
+ this.pdf = pdf;
+ this.exportId = exportId;
+ this.verificationHash = verificationHash;
+ this.expiresAt = expiresAt;
+ }
+
+ public AddressRegistryCreateProofOfOwnershipResponse pdf(
+ @jakarta.annotation.Nonnull byte[] pdf) {
+ this.pdf = pdf;
+ return this;
+ }
+
+ /**
+ * Base64-encoded Proof of Ownership PDF bytes. Fireblocks does not store the PDF: save it
+ * immediately, there is no re-download route.
+ *
+ * @return pdf
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_PDF)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public byte[] getPdf() {
+ return pdf;
+ }
+
+ @JsonProperty(JSON_PROPERTY_PDF)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setPdf(@jakarta.annotation.Nonnull byte[] pdf) {
+ this.pdf = pdf;
+ }
+
+ public AddressRegistryCreateProofOfOwnershipResponse exportId(
+ @jakarta.annotation.Nonnull UUID exportId) {
+ this.exportId = exportId;
+ return this;
+ }
+
+ /**
+ * Stable id of the online-verifiable export record.
+ *
+ * @return exportId
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_EXPORT_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public UUID getExportId() {
+ return exportId;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPORT_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setExportId(@jakarta.annotation.Nonnull UUID exportId) {
+ this.exportId = exportId;
+ }
+
+ public AddressRegistryCreateProofOfOwnershipResponse verificationHash(
+ @jakarta.annotation.Nonnull String verificationHash) {
+ this.verificationHash = verificationHash;
+ return this;
+ }
+
+ /**
+ * Verification hash bound to the export (also printed on the PDF).
+ *
+ * @return verificationHash
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_VERIFICATION_HASH)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getVerificationHash() {
+ return verificationHash;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VERIFICATION_HASH)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setVerificationHash(@jakarta.annotation.Nonnull String verificationHash) {
+ this.verificationHash = verificationHash;
+ }
+
+ public AddressRegistryCreateProofOfOwnershipResponse expiresAt(
+ @jakarta.annotation.Nonnull String expiresAt) {
+ this.expiresAt = expiresAt;
+ return this;
+ }
+
+ /**
+ * Inclusive last UTC calendar day online verification is available (`YYYY-MM-DD`).
+ *
+ * @return expiresAt
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getExpiresAt() {
+ return expiresAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setExpiresAt(@jakarta.annotation.Nonnull String expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ /** Return true if this AddressRegistryCreateProofOfOwnershipResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AddressRegistryCreateProofOfOwnershipResponse
+ addressRegistryCreateProofOfOwnershipResponse =
+ (AddressRegistryCreateProofOfOwnershipResponse) o;
+ return Arrays.equals(this.pdf, addressRegistryCreateProofOfOwnershipResponse.pdf)
+ && Objects.equals(
+ this.exportId, addressRegistryCreateProofOfOwnershipResponse.exportId)
+ && Objects.equals(
+ this.verificationHash,
+ addressRegistryCreateProofOfOwnershipResponse.verificationHash)
+ && Objects.equals(
+ this.expiresAt, addressRegistryCreateProofOfOwnershipResponse.expiresAt);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(Arrays.hashCode(pdf), exportId, verificationHash, expiresAt);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddressRegistryCreateProofOfOwnershipResponse {\n");
+ sb.append(" pdf: ").append(toIndentedString(pdf)).append("\n");
+ sb.append(" exportId: ").append(toIndentedString(exportId)).append("\n");
+ sb.append(" verificationHash: ").append(toIndentedString(verificationHash)).append("\n");
+ sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `pdf` to the URL query string
+ if (getPdf() != null) {
+ joiner.add(
+ String.format(
+ "%spdf%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getPdf()))));
+ }
+
+ // add `exportId` to the URL query string
+ if (getExportId() != null) {
+ joiner.add(
+ String.format(
+ "%sexportId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExportId()))));
+ }
+
+ // add `verificationHash` to the URL query string
+ if (getVerificationHash() != null) {
+ joiner.add(
+ String.format(
+ "%sverificationHash%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVerificationHash()))));
+ }
+
+ // add `expiresAt` to the URL query string
+ if (getExpiresAt() != null) {
+ joiner.add(
+ String.format(
+ "%sexpiresAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryLegalEntity.java b/src/main/java/com/fireblocks/sdk/model/AddressRegistryLegalEntity.java
index 0aa11d71..8b99ac29 100644
--- a/src/main/java/com/fireblocks/sdk/model/AddressRegistryLegalEntity.java
+++ b/src/main/java/com/fireblocks/sdk/model/AddressRegistryLegalEntity.java
@@ -30,7 +30,8 @@
AddressRegistryLegalEntity.JSON_PROPERTY_JURISDICTION,
AddressRegistryLegalEntity.JSON_PROPERTY_LEI,
AddressRegistryLegalEntity.JSON_PROPERTY_TRAVEL_RULE_PROVIDERS,
- AddressRegistryLegalEntity.JSON_PROPERTY_EMAIL
+ AddressRegistryLegalEntity.JSON_PROPERTY_EMAIL,
+ AddressRegistryLegalEntity.JSON_PROPERTY_PROOF_OF_OWNERSHIP_AVAILABLE
})
@jakarta.annotation.Generated(
value = "org.openapitools.codegen.languages.JavaClientCodegen",
@@ -49,11 +50,15 @@ public class AddressRegistryLegalEntity {
@jakarta.annotation.Nonnull private String lei;
public static final String JSON_PROPERTY_TRAVEL_RULE_PROVIDERS = "travelRuleProviders";
- @jakarta.annotation.Nonnull private List travelRuleProviders;
+ @jakarta.annotation.Nonnull private List travelRuleProviders;
public static final String JSON_PROPERTY_EMAIL = "email";
@jakarta.annotation.Nonnull private String email;
+ public static final String JSON_PROPERTY_PROOF_OF_OWNERSHIP_AVAILABLE =
+ "proofOfOwnershipAvailable";
+ @jakarta.annotation.Nonnull private Boolean proofOfOwnershipAvailable;
+
public AddressRegistryLegalEntity() {}
@JsonCreator
@@ -63,14 +68,17 @@ public AddressRegistryLegalEntity(
@JsonProperty(value = JSON_PROPERTY_JURISDICTION, required = true) String jurisdiction,
@JsonProperty(value = JSON_PROPERTY_LEI, required = true) String lei,
@JsonProperty(value = JSON_PROPERTY_TRAVEL_RULE_PROVIDERS, required = true)
- List travelRuleProviders,
- @JsonProperty(value = JSON_PROPERTY_EMAIL, required = true) String email) {
+ List travelRuleProviders,
+ @JsonProperty(value = JSON_PROPERTY_EMAIL, required = true) String email,
+ @JsonProperty(value = JSON_PROPERTY_PROOF_OF_OWNERSHIP_AVAILABLE, required = true)
+ Boolean proofOfOwnershipAvailable) {
this.leiData = leiData;
this.entityName = entityName;
this.jurisdiction = jurisdiction;
this.lei = lei;
this.travelRuleProviders = travelRuleProviders;
this.email = email;
+ this.proofOfOwnershipAvailable = proofOfOwnershipAvailable;
}
public AddressRegistryLegalEntity leiData(@jakarta.annotation.Nonnull Boolean leiData) {
@@ -168,14 +176,12 @@ public void setLei(@jakarta.annotation.Nonnull String lei) {
}
public AddressRegistryLegalEntity travelRuleProviders(
- @jakarta.annotation.Nonnull
- List travelRuleProviders) {
+ @jakarta.annotation.Nonnull List travelRuleProviders) {
this.travelRuleProviders = travelRuleProviders;
return this;
}
- public AddressRegistryLegalEntity addTravelRuleProvidersItem(
- AddressRegistryTravelRuleProvider travelRuleProvidersItem) {
+ public AddressRegistryLegalEntity addTravelRuleProvidersItem(String travelRuleProvidersItem) {
if (this.travelRuleProviders == null) {
this.travelRuleProviders = new ArrayList<>();
}
@@ -191,15 +197,14 @@ public AddressRegistryLegalEntity addTravelRuleProvidersItem(
@jakarta.annotation.Nonnull
@JsonProperty(JSON_PROPERTY_TRAVEL_RULE_PROVIDERS)
@JsonInclude(value = JsonInclude.Include.ALWAYS)
- public List getTravelRuleProviders() {
+ public List getTravelRuleProviders() {
return travelRuleProviders;
}
@JsonProperty(JSON_PROPERTY_TRAVEL_RULE_PROVIDERS)
@JsonInclude(value = JsonInclude.Include.ALWAYS)
public void setTravelRuleProviders(
- @jakarta.annotation.Nonnull
- List travelRuleProviders) {
+ @jakarta.annotation.Nonnull List travelRuleProviders) {
this.travelRuleProviders = travelRuleProviders;
}
@@ -226,6 +231,32 @@ public void setEmail(@jakarta.annotation.Nonnull String email) {
this.email = email;
}
+ public AddressRegistryLegalEntity proofOfOwnershipAvailable(
+ @jakarta.annotation.Nonnull Boolean proofOfOwnershipAvailable) {
+ this.proofOfOwnershipAvailable = proofOfOwnershipAvailable;
+ return this;
+ }
+
+ /**
+ * Whether the caller can currently create a Proof of Ownership PDF for this address (`POST
+ * /v1/address_registry/proof_of_ownership_exports`).
+ *
+ * @return proofOfOwnershipAvailable
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_PROOF_OF_OWNERSHIP_AVAILABLE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Boolean getProofOfOwnershipAvailable() {
+ return proofOfOwnershipAvailable;
+ }
+
+ @JsonProperty(JSON_PROPERTY_PROOF_OF_OWNERSHIP_AVAILABLE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setProofOfOwnershipAvailable(
+ @jakarta.annotation.Nonnull Boolean proofOfOwnershipAvailable) {
+ this.proofOfOwnershipAvailable = proofOfOwnershipAvailable;
+ }
+
/** Return true if this AddressRegistryLegalEntity object is equal to o. */
@Override
public boolean equals(Object o) {
@@ -242,12 +273,22 @@ public boolean equals(Object o) {
&& Objects.equals(this.lei, addressRegistryLegalEntity.lei)
&& Objects.equals(
this.travelRuleProviders, addressRegistryLegalEntity.travelRuleProviders)
- && Objects.equals(this.email, addressRegistryLegalEntity.email);
+ && Objects.equals(this.email, addressRegistryLegalEntity.email)
+ && Objects.equals(
+ this.proofOfOwnershipAvailable,
+ addressRegistryLegalEntity.proofOfOwnershipAvailable);
}
@Override
public int hashCode() {
- return Objects.hash(leiData, entityName, jurisdiction, lei, travelRuleProviders, email);
+ return Objects.hash(
+ leiData,
+ entityName,
+ jurisdiction,
+ lei,
+ travelRuleProviders,
+ email,
+ proofOfOwnershipAvailable);
}
@Override
@@ -262,6 +303,9 @@ public String toString() {
.append(toIndentedString(travelRuleProviders))
.append("\n");
sb.append(" email: ").append(toIndentedString(email)).append("\n");
+ sb.append(" proofOfOwnershipAvailable: ")
+ .append(toIndentedString(proofOfOwnershipAvailable))
+ .append("\n");
sb.append("}");
return sb.toString();
}
@@ -352,20 +396,17 @@ public String toUrlQueryString(String prefix) {
// add `travelRuleProviders` to the URL query string
if (getTravelRuleProviders() != null) {
for (int i = 0; i < getTravelRuleProviders().size(); i++) {
- if (getTravelRuleProviders().get(i) != null) {
- joiner.add(
- String.format(
- "%stravelRuleProviders%s%s=%s",
- prefix,
- suffix,
- "".equals(suffix)
- ? ""
- : String.format(
- "%s%d%s", containerPrefix, i, containerSuffix),
- ApiClient.urlEncode(
- ApiClient.valueToString(
- getTravelRuleProviders().get(i)))));
- }
+ joiner.add(
+ String.format(
+ "%stravelRuleProviders%s%s=%s",
+ prefix,
+ suffix,
+ "".equals(suffix)
+ ? ""
+ : String.format(
+ "%s%d%s", containerPrefix, i, containerSuffix),
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getTravelRuleProviders().get(i)))));
}
}
@@ -379,6 +420,17 @@ public String toUrlQueryString(String prefix) {
ApiClient.urlEncode(ApiClient.valueToString(getEmail()))));
}
+ // add `proofOfOwnershipAvailable` to the URL query string
+ if (getProofOfOwnershipAvailable() != null) {
+ joiner.add(
+ String.format(
+ "%sproofOfOwnershipAvailable%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getProofOfOwnershipAvailable()))));
+ }
+
return joiner.toString();
}
}
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipRequest.java b/src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipRequest.java
new file mode 100644
index 00000000..c5b80cdf
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipRequest.java
@@ -0,0 +1,282 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Objects;
+import java.util.StringJoiner;
+import java.util.UUID;
+
+/** Request body for verifying an Address Registry Proof of Ownership export. */
+@JsonPropertyOrder({
+ AddressRegistryVerifyProofOfOwnershipRequest.JSON_PROPERTY_EXPORT_ID,
+ AddressRegistryVerifyProofOfOwnershipRequest.JSON_PROPERTY_VERIFICATION_HASH,
+ AddressRegistryVerifyProofOfOwnershipRequest.JSON_PROPERTY_ADDRESS,
+ AddressRegistryVerifyProofOfOwnershipRequest.JSON_PROPERTY_EXPIRES_AT
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class AddressRegistryVerifyProofOfOwnershipRequest {
+ public static final String JSON_PROPERTY_EXPORT_ID = "exportId";
+ @jakarta.annotation.Nonnull private UUID exportId;
+
+ public static final String JSON_PROPERTY_VERIFICATION_HASH = "verificationHash";
+ @jakarta.annotation.Nonnull private String verificationHash;
+
+ public static final String JSON_PROPERTY_ADDRESS = "address";
+ @jakarta.annotation.Nonnull private String address;
+
+ public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt";
+ @jakarta.annotation.Nullable private String expiresAt;
+
+ public AddressRegistryVerifyProofOfOwnershipRequest() {}
+
+ @JsonCreator
+ public AddressRegistryVerifyProofOfOwnershipRequest(
+ @JsonProperty(value = JSON_PROPERTY_EXPORT_ID, required = true) UUID exportId,
+ @JsonProperty(value = JSON_PROPERTY_VERIFICATION_HASH, required = true)
+ String verificationHash,
+ @JsonProperty(value = JSON_PROPERTY_ADDRESS, required = true) String address) {
+ this.exportId = exportId;
+ this.verificationHash = verificationHash;
+ this.address = address;
+ }
+
+ public AddressRegistryVerifyProofOfOwnershipRequest exportId(
+ @jakarta.annotation.Nonnull UUID exportId) {
+ this.exportId = exportId;
+ return this;
+ }
+
+ /**
+ * Export id from create / the PDF.
+ *
+ * @return exportId
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_EXPORT_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public UUID getExportId() {
+ return exportId;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPORT_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setExportId(@jakarta.annotation.Nonnull UUID exportId) {
+ this.exportId = exportId;
+ }
+
+ public AddressRegistryVerifyProofOfOwnershipRequest verificationHash(
+ @jakarta.annotation.Nonnull String verificationHash) {
+ this.verificationHash = verificationHash;
+ return this;
+ }
+
+ /**
+ * Verification hash from create / the PDF (exact match required).
+ *
+ * @return verificationHash
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_VERIFICATION_HASH)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getVerificationHash() {
+ return verificationHash;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VERIFICATION_HASH)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setVerificationHash(@jakarta.annotation.Nonnull String verificationHash) {
+ this.verificationHash = verificationHash;
+ }
+
+ public AddressRegistryVerifyProofOfOwnershipRequest address(
+ @jakarta.annotation.Nonnull String address) {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Address from the PDF (exact UTF-8 match to the stored export).
+ *
+ * @return address
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_ADDRESS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getAddress() {
+ return address;
+ }
+
+ @JsonProperty(JSON_PROPERTY_ADDRESS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setAddress(@jakarta.annotation.Nonnull String address) {
+ this.address = address;
+ }
+
+ public AddressRegistryVerifyProofOfOwnershipRequest expiresAt(
+ @jakarta.annotation.Nullable String expiresAt) {
+ this.expiresAt = expiresAt;
+ return this;
+ }
+
+ /**
+ * Optional but recommended: the PDF's \"Online verification available until\"
+ * date (`YYYY-MM-DD`), which speeds up the lookup. A wrong value yields `valid:
+ * false` even if the export exists — copy it exactly from the PDF, or omit it.
+ *
+ * @return expiresAt
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getExpiresAt() {
+ return expiresAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setExpiresAt(@jakarta.annotation.Nullable String expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ /** Return true if this AddressRegistryVerifyProofOfOwnershipRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AddressRegistryVerifyProofOfOwnershipRequest addressRegistryVerifyProofOfOwnershipRequest =
+ (AddressRegistryVerifyProofOfOwnershipRequest) o;
+ return Objects.equals(this.exportId, addressRegistryVerifyProofOfOwnershipRequest.exportId)
+ && Objects.equals(
+ this.verificationHash,
+ addressRegistryVerifyProofOfOwnershipRequest.verificationHash)
+ && Objects.equals(
+ this.address, addressRegistryVerifyProofOfOwnershipRequest.address)
+ && Objects.equals(
+ this.expiresAt, addressRegistryVerifyProofOfOwnershipRequest.expiresAt);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(exportId, verificationHash, address, expiresAt);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddressRegistryVerifyProofOfOwnershipRequest {\n");
+ sb.append(" exportId: ").append(toIndentedString(exportId)).append("\n");
+ sb.append(" verificationHash: ").append(toIndentedString(verificationHash)).append("\n");
+ sb.append(" address: ").append(toIndentedString(address)).append("\n");
+ sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `exportId` to the URL query string
+ if (getExportId() != null) {
+ joiner.add(
+ String.format(
+ "%sexportId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExportId()))));
+ }
+
+ // add `verificationHash` to the URL query string
+ if (getVerificationHash() != null) {
+ joiner.add(
+ String.format(
+ "%sverificationHash%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVerificationHash()))));
+ }
+
+ // add `address` to the URL query string
+ if (getAddress() != null) {
+ joiner.add(
+ String.format(
+ "%saddress%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getAddress()))));
+ }
+
+ // add `expiresAt` to the URL query string
+ if (getExpiresAt() != null) {
+ joiner.add(
+ String.format(
+ "%sexpiresAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipResponse.java b/src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipResponse.java
new file mode 100644
index 00000000..c8af3d0d
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/AddressRegistryVerifyProofOfOwnershipResponse.java
@@ -0,0 +1,199 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/**
+ * Online verification result. Authenticated calls always return HTTP 200 with this body
+ * (`valid: true` or `valid: false`); unknown/expired exports do not use 404.
+ */
+@JsonPropertyOrder({
+ AddressRegistryVerifyProofOfOwnershipResponse.JSON_PROPERTY_VALID,
+ AddressRegistryVerifyProofOfOwnershipResponse.JSON_PROPERTY_EXPIRES_AT
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class AddressRegistryVerifyProofOfOwnershipResponse {
+ public static final String JSON_PROPERTY_VALID = "valid";
+ @jakarta.annotation.Nonnull private Boolean valid;
+
+ public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt";
+ @jakarta.annotation.Nonnull private String expiresAt;
+
+ public AddressRegistryVerifyProofOfOwnershipResponse() {}
+
+ @JsonCreator
+ public AddressRegistryVerifyProofOfOwnershipResponse(
+ @JsonProperty(value = JSON_PROPERTY_VALID, required = true) Boolean valid,
+ @JsonProperty(value = JSON_PROPERTY_EXPIRES_AT, required = true) String expiresAt) {
+ this.valid = valid;
+ this.expiresAt = expiresAt;
+ }
+
+ public AddressRegistryVerifyProofOfOwnershipResponse valid(
+ @jakarta.annotation.Nonnull Boolean valid) {
+ this.valid = valid;
+ return this;
+ }
+
+ /**
+ * Whether the stored export matches the supplied verification hash and address within
+ * retention.
+ *
+ * @return valid
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_VALID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Boolean getValid() {
+ return valid;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VALID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setValid(@jakarta.annotation.Nonnull Boolean valid) {
+ this.valid = valid;
+ }
+
+ public AddressRegistryVerifyProofOfOwnershipResponse expiresAt(
+ @jakarta.annotation.Nonnull String expiresAt) {
+ this.expiresAt = expiresAt;
+ return this;
+ }
+
+ /**
+ * Inclusive last UTC calendar day (`YYYY-MM-DD`) when `valid` is true;
+ * empty string when `valid` is false.
+ *
+ * @return expiresAt
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getExpiresAt() {
+ return expiresAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setExpiresAt(@jakarta.annotation.Nonnull String expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ /** Return true if this AddressRegistryVerifyProofOfOwnershipResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AddressRegistryVerifyProofOfOwnershipResponse
+ addressRegistryVerifyProofOfOwnershipResponse =
+ (AddressRegistryVerifyProofOfOwnershipResponse) o;
+ return Objects.equals(this.valid, addressRegistryVerifyProofOfOwnershipResponse.valid)
+ && Objects.equals(
+ this.expiresAt, addressRegistryVerifyProofOfOwnershipResponse.expiresAt);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(valid, expiresAt);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AddressRegistryVerifyProofOfOwnershipResponse {\n");
+ sb.append(" valid: ").append(toIndentedString(valid)).append("\n");
+ sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `valid` to the URL query string
+ if (getValid() != null) {
+ joiner.add(
+ String.format(
+ "%svalid%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getValid()))));
+ }
+
+ // add `expiresAt` to the URL query string
+ if (getExpiresAt() != null) {
+ joiner.add(
+ String.format(
+ "%sexpiresAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/AllocationWithdrawPayload.java b/src/main/java/com/fireblocks/sdk/model/AllocationWithdrawPayload.java
index 5ff3e1e5..313b1b32 100644
--- a/src/main/java/com/fireblocks/sdk/model/AllocationWithdrawPayload.java
+++ b/src/main/java/com/fireblocks/sdk/model/AllocationWithdrawPayload.java
@@ -17,60 +17,16 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import com.fasterxml.jackson.annotation.JsonValue;
import com.fireblocks.sdk.ApiClient;
import java.util.Objects;
import java.util.StringJoiner;
/** AllocationWithdrawPayload */
-@JsonPropertyOrder({
- AllocationWithdrawPayload.JSON_PROPERTY_VAULT_ACCOUNT_ID,
- AllocationWithdrawPayload.JSON_PROPERTY_ASSET,
- AllocationWithdrawPayload.JSON_PROPERTY_ALLOCATION_TRANSACTION_ID
-})
+@JsonPropertyOrder({AllocationWithdrawPayload.JSON_PROPERTY_ALLOCATION_TRANSACTION_ID})
@jakarta.annotation.Generated(
value = "org.openapitools.codegen.languages.JavaClientCodegen",
comments = "Generator version: 7.14.0")
public class AllocationWithdrawPayload {
- public static final String JSON_PROPERTY_VAULT_ACCOUNT_ID = "vaultAccountId";
- @jakarta.annotation.Nonnull private String vaultAccountId;
-
- /** Chain asset — `CANTON` or `CANTON_TEST`. */
- public enum AssetEnum {
- CANTON(String.valueOf("CANTON")),
-
- CANTON_TEST(String.valueOf("CANTON_TEST"));
-
- private String value;
-
- AssetEnum(String value) {
- this.value = value;
- }
-
- @JsonValue
- public String getValue() {
- return value;
- }
-
- @Override
- public String toString() {
- return String.valueOf(value);
- }
-
- @JsonCreator
- public static AssetEnum fromValue(String value) {
- for (AssetEnum b : AssetEnum.values()) {
- if (b.value.equals(value)) {
- return b;
- }
- }
- throw new IllegalArgumentException("Unexpected value '" + value + "'");
- }
- }
-
- public static final String JSON_PROPERTY_ASSET = "asset";
- @jakarta.annotation.Nonnull private AssetEnum asset;
-
public static final String JSON_PROPERTY_ALLOCATION_TRANSACTION_ID = "allocationTransactionId";
@jakarta.annotation.Nonnull private String allocationTransactionId;
@@ -78,63 +34,11 @@ public AllocationWithdrawPayload() {}
@JsonCreator
public AllocationWithdrawPayload(
- @JsonProperty(value = JSON_PROPERTY_VAULT_ACCOUNT_ID, required = true)
- String vaultAccountId,
- @JsonProperty(value = JSON_PROPERTY_ASSET, required = true) AssetEnum asset,
@JsonProperty(value = JSON_PROPERTY_ALLOCATION_TRANSACTION_ID, required = true)
String allocationTransactionId) {
- this.vaultAccountId = vaultAccountId;
- this.asset = asset;
this.allocationTransactionId = allocationTransactionId;
}
- public AllocationWithdrawPayload vaultAccountId(
- @jakarta.annotation.Nonnull String vaultAccountId) {
- this.vaultAccountId = vaultAccountId;
- return this;
- }
-
- /**
- * The vault account whose Canton wallet acts here.
- *
- * @return vaultAccountId
- */
- @jakarta.annotation.Nonnull
- @JsonProperty(JSON_PROPERTY_VAULT_ACCOUNT_ID)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
- public String getVaultAccountId() {
- return vaultAccountId;
- }
-
- @JsonProperty(JSON_PROPERTY_VAULT_ACCOUNT_ID)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
- public void setVaultAccountId(@jakarta.annotation.Nonnull String vaultAccountId) {
- this.vaultAccountId = vaultAccountId;
- }
-
- public AllocationWithdrawPayload asset(@jakarta.annotation.Nonnull AssetEnum asset) {
- this.asset = asset;
- return this;
- }
-
- /**
- * Chain asset — `CANTON` or `CANTON_TEST`.
- *
- * @return asset
- */
- @jakarta.annotation.Nonnull
- @JsonProperty(JSON_PROPERTY_ASSET)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
- public AssetEnum getAsset() {
- return asset;
- }
-
- @JsonProperty(JSON_PROPERTY_ASSET)
- @JsonInclude(value = JsonInclude.Include.ALWAYS)
- public void setAsset(@jakarta.annotation.Nonnull AssetEnum asset) {
- this.asset = asset;
- }
-
public AllocationWithdrawPayload allocationTransactionId(
@jakarta.annotation.Nonnull String allocationTransactionId) {
this.allocationTransactionId = allocationTransactionId;
@@ -171,24 +75,19 @@ public boolean equals(Object o) {
return false;
}
AllocationWithdrawPayload allocationWithdrawPayload = (AllocationWithdrawPayload) o;
- return Objects.equals(this.vaultAccountId, allocationWithdrawPayload.vaultAccountId)
- && Objects.equals(this.asset, allocationWithdrawPayload.asset)
- && Objects.equals(
- this.allocationTransactionId,
- allocationWithdrawPayload.allocationTransactionId);
+ return Objects.equals(
+ this.allocationTransactionId, allocationWithdrawPayload.allocationTransactionId);
}
@Override
public int hashCode() {
- return Objects.hash(vaultAccountId, asset, allocationTransactionId);
+ return Objects.hash(allocationTransactionId);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class AllocationWithdrawPayload {\n");
- sb.append(" vaultAccountId: ").append(toIndentedString(vaultAccountId)).append("\n");
- sb.append(" asset: ").append(toIndentedString(asset)).append("\n");
sb.append(" allocationTransactionId: ")
.append(toIndentedString(allocationTransactionId))
.append("\n");
@@ -239,26 +138,6 @@ public String toUrlQueryString(String prefix) {
StringJoiner joiner = new StringJoiner("&");
- // add `vaultAccountId` to the URL query string
- if (getVaultAccountId() != null) {
- joiner.add(
- String.format(
- "%svaultAccountId%s=%s",
- prefix,
- suffix,
- ApiClient.urlEncode(ApiClient.valueToString(getVaultAccountId()))));
- }
-
- // add `asset` to the URL query string
- if (getAsset() != null) {
- joiner.add(
- String.format(
- "%sasset%s=%s",
- prefix,
- suffix,
- ApiClient.urlEncode(ApiClient.valueToString(getAsset()))));
- }
-
// add `allocationTransactionId` to the URL query string
if (getAllocationTransactionId() != null) {
joiner.add(
diff --git a/src/main/java/com/fireblocks/sdk/model/CantonCallDetails.java b/src/main/java/com/fireblocks/sdk/model/CantonCallDetails.java
new file mode 100644
index 00000000..f3eb02bb
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/CantonCallDetails.java
@@ -0,0 +1,305 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/** A call made through the Canton calls endpoint. Written once and never changed. */
+@JsonPropertyOrder({
+ CantonCallDetails.JSON_PROPERTY_VERSION,
+ CantonCallDetails.JSON_PROPERTY_DOMAIN,
+ CantonCallDetails.JSON_PROPERTY_TYPE,
+ CantonCallDetails.JSON_PROPERTY_VENDOR,
+ CantonCallDetails.JSON_PROPERTY_ORIGINAL_TRANSACTION_ID
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class CantonCallDetails {
+ public static final String JSON_PROPERTY_VERSION = "version";
+ @jakarta.annotation.Nullable private Integer version;
+
+ public static final String JSON_PROPERTY_DOMAIN = "domain";
+ @jakarta.annotation.Nullable private CantonDomainEnum domain;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ @jakarta.annotation.Nullable private String type;
+
+ public static final String JSON_PROPERTY_VENDOR = "vendor";
+ @jakarta.annotation.Nullable private CantonVendorEnum vendor;
+
+ public static final String JSON_PROPERTY_ORIGINAL_TRANSACTION_ID = "originalTransactionId";
+ @jakarta.annotation.Nullable private String originalTransactionId;
+
+ public CantonCallDetails() {}
+
+ public CantonCallDetails version(@jakarta.annotation.Nullable Integer version) {
+ this.version = version;
+ return this;
+ }
+
+ /**
+ * The shape of this block. Stamped at creation and never changed, so a reader always knows
+ * which version it is holding.
+ *
+ * @return version
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_VERSION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public Integer getVersion() {
+ return version;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VERSION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setVersion(@jakarta.annotation.Nullable Integer version) {
+ this.version = version;
+ }
+
+ public CantonCallDetails domain(@jakarta.annotation.Nullable CantonDomainEnum domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ /**
+ * Get domain
+ *
+ * @return domain
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DOMAIN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonDomainEnum getDomain() {
+ return domain;
+ }
+
+ @JsonProperty(JSON_PROPERTY_DOMAIN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDomain(@jakarta.annotation.Nullable CantonDomainEnum domain) {
+ this.domain = domain;
+ }
+
+ public CantonCallDetails type(@jakarta.annotation.Nullable String type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * The call type, matching the `type` sent when the call was created.
+ *
+ * @return type
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getType() {
+ return type;
+ }
+
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setType(@jakarta.annotation.Nullable String type) {
+ this.type = type;
+ }
+
+ public CantonCallDetails vendor(@jakarta.annotation.Nullable CantonVendorEnum vendor) {
+ this.vendor = vendor;
+ return this;
+ }
+
+ /**
+ * Get vendor
+ *
+ * @return vendor
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_VENDOR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonVendorEnum getVendor() {
+ return vendor;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VENDOR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setVendor(@jakarta.annotation.Nullable CantonVendorEnum vendor) {
+ this.vendor = vendor;
+ }
+
+ public CantonCallDetails originalTransactionId(
+ @jakarta.annotation.Nullable String originalTransactionId) {
+ this.originalTransactionId = originalTransactionId;
+ return this;
+ }
+
+ /**
+ * The transaction this call acts on. On a withdraw it is the allocation that was withdrawn, so
+ * the withdraw transaction read on its own still says what it withdrew.
+ *
+ * @return originalTransactionId
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ORIGINAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getOriginalTransactionId() {
+ return originalTransactionId;
+ }
+
+ @JsonProperty(JSON_PROPERTY_ORIGINAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOriginalTransactionId(
+ @jakarta.annotation.Nullable String originalTransactionId) {
+ this.originalTransactionId = originalTransactionId;
+ }
+
+ /** Return true if this CantonCallDetails object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ CantonCallDetails cantonCallDetails = (CantonCallDetails) o;
+ return Objects.equals(this.version, cantonCallDetails.version)
+ && Objects.equals(this.domain, cantonCallDetails.domain)
+ && Objects.equals(this.type, cantonCallDetails.type)
+ && Objects.equals(this.vendor, cantonCallDetails.vendor)
+ && Objects.equals(
+ this.originalTransactionId, cantonCallDetails.originalTransactionId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(version, domain, type, vendor, originalTransactionId);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CantonCallDetails {\n");
+ sb.append(" version: ").append(toIndentedString(version)).append("\n");
+ sb.append(" domain: ").append(toIndentedString(domain)).append("\n");
+ sb.append(" type: ").append(toIndentedString(type)).append("\n");
+ sb.append(" vendor: ").append(toIndentedString(vendor)).append("\n");
+ sb.append(" originalTransactionId: ")
+ .append(toIndentedString(originalTransactionId))
+ .append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `version` to the URL query string
+ if (getVersion() != null) {
+ joiner.add(
+ String.format(
+ "%sversion%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVersion()))));
+ }
+
+ // add `domain` to the URL query string
+ if (getDomain() != null) {
+ joiner.add(
+ String.format(
+ "%sdomain%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getDomain()))));
+ }
+
+ // add `type` to the URL query string
+ if (getType() != null) {
+ joiner.add(
+ String.format(
+ "%stype%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getType()))));
+ }
+
+ // add `vendor` to the URL query string
+ if (getVendor() != null) {
+ joiner.add(
+ String.format(
+ "%svendor%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVendor()))));
+ }
+
+ // add `originalTransactionId` to the URL query string
+ if (getOriginalTransactionId() != null) {
+ joiner.add(
+ String.format(
+ "%soriginalTransactionId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getOriginalTransactionId()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/CantonDetails.java b/src/main/java/com/fireblocks/sdk/model/CantonDetails.java
new file mode 100644
index 00000000..813a855b
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/CantonDetails.java
@@ -0,0 +1,219 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/**
+ * Canton transaction context. Present on transactions that belong to a Canton flow, and the
+ * authoritative signal that a transaction IS one — do not branch on `operation`, which is
+ * `CANTON_CALL` for customer-initiated calls but `TRANSFER` for an incoming
+ * Canton transfer offer. **No `cantonDetails` at all means the transaction is not a
+ * Canton item.** The service sets exactly one of `offerResponse`, `call` or
+ * `settlement`. That is a guarantee about what is sent, NOT a constraint this schema
+ * enforces: the three are declared as independent optional properties on purpose, so that a
+ * response carrying a block a client does not yet know about — or a row written before a block type
+ * existed — still validates. Response schemas here stay additive. Read the block you recognise; do
+ * not reject a payload for the shape of the others. Every block carries `version`,
+ * stamped when the transaction is created and never changed — a transaction written today keeps its
+ * shape, so `version` is how you know which shape you are reading.
+ */
+@JsonPropertyOrder({
+ CantonDetails.JSON_PROPERTY_OFFER_RESPONSE,
+ CantonDetails.JSON_PROPERTY_CALL,
+ CantonDetails.JSON_PROPERTY_SETTLEMENT
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class CantonDetails {
+ public static final String JSON_PROPERTY_OFFER_RESPONSE = "offerResponse";
+ @jakarta.annotation.Nullable private CantonOfferResponseDetails offerResponse;
+
+ public static final String JSON_PROPERTY_CALL = "call";
+ @jakarta.annotation.Nullable private CantonCallDetails call;
+
+ public static final String JSON_PROPERTY_SETTLEMENT = "settlement";
+ @jakarta.annotation.Nullable private CantonSettlementDetails settlement;
+
+ public CantonDetails() {}
+
+ public CantonDetails offerResponse(
+ @jakarta.annotation.Nullable CantonOfferResponseDetails offerResponse) {
+ this.offerResponse = offerResponse;
+ return this;
+ }
+
+ /**
+ * Get offerResponse
+ *
+ * @return offerResponse
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_OFFER_RESPONSE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonOfferResponseDetails getOfferResponse() {
+ return offerResponse;
+ }
+
+ @JsonProperty(JSON_PROPERTY_OFFER_RESPONSE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOfferResponse(
+ @jakarta.annotation.Nullable CantonOfferResponseDetails offerResponse) {
+ this.offerResponse = offerResponse;
+ }
+
+ public CantonDetails call(@jakarta.annotation.Nullable CantonCallDetails call) {
+ this.call = call;
+ return this;
+ }
+
+ /**
+ * Get call
+ *
+ * @return call
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_CALL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonCallDetails getCall() {
+ return call;
+ }
+
+ @JsonProperty(JSON_PROPERTY_CALL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setCall(@jakarta.annotation.Nullable CantonCallDetails call) {
+ this.call = call;
+ }
+
+ public CantonDetails settlement(
+ @jakarta.annotation.Nullable CantonSettlementDetails settlement) {
+ this.settlement = settlement;
+ return this;
+ }
+
+ /**
+ * Get settlement
+ *
+ * @return settlement
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SETTLEMENT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonSettlementDetails getSettlement() {
+ return settlement;
+ }
+
+ @JsonProperty(JSON_PROPERTY_SETTLEMENT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSettlement(@jakarta.annotation.Nullable CantonSettlementDetails settlement) {
+ this.settlement = settlement;
+ }
+
+ /** Return true if this CantonDetails object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ CantonDetails cantonDetails = (CantonDetails) o;
+ return Objects.equals(this.offerResponse, cantonDetails.offerResponse)
+ && Objects.equals(this.call, cantonDetails.call)
+ && Objects.equals(this.settlement, cantonDetails.settlement);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(offerResponse, call, settlement);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CantonDetails {\n");
+ sb.append(" offerResponse: ").append(toIndentedString(offerResponse)).append("\n");
+ sb.append(" call: ").append(toIndentedString(call)).append("\n");
+ sb.append(" settlement: ").append(toIndentedString(settlement)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `offerResponse` to the URL query string
+ if (getOfferResponse() != null) {
+ joiner.add(getOfferResponse().toUrlQueryString(prefix + "offerResponse" + suffix));
+ }
+
+ // add `call` to the URL query string
+ if (getCall() != null) {
+ joiner.add(getCall().toUrlQueryString(prefix + "call" + suffix));
+ }
+
+ // add `settlement` to the URL query string
+ if (getSettlement() != null) {
+ joiner.add(getSettlement().toUrlQueryString(prefix + "settlement" + suffix));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryTravelRuleProvider.java b/src/main/java/com/fireblocks/sdk/model/CantonDomainEnum.java
similarity index 71%
rename from src/main/java/com/fireblocks/sdk/model/AddressRegistryTravelRuleProvider.java
rename to src/main/java/com/fireblocks/sdk/model/CantonDomainEnum.java
index a270532e..600f84ca 100644
--- a/src/main/java/com/fireblocks/sdk/model/AddressRegistryTravelRuleProvider.java
+++ b/src/main/java/com/fireblocks/sdk/model/CantonDomainEnum.java
@@ -16,19 +16,20 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
-/** Travel Rule provider identifier (string enum value). */
-public enum AddressRegistryTravelRuleProvider {
- TRAVEL_RULE_PROVIDER_NOTABENE("TRAVEL_RULE_PROVIDER_NOTABENE"),
-
- TRAVEL_RULE_PROVIDER_SYGNA("TRAVEL_RULE_PROVIDER_SYGNA"),
+/**
+ * The Canton domain a transaction belongs to. Singular, and it matches the prefix of the
+ * `type` / `responseType` values in the same domain character for character.
+ */
+public enum CantonDomainEnum {
+ ONBOARDING("ONBOARDING"),
- TRAVEL_RULE_PROVIDER_TRISA("TRAVEL_RULE_PROVIDER_TRISA"),
+ ALLOCATION("ALLOCATION"),
- TRAVEL_RULE_PROVIDER_OPENVASP("TRAVEL_RULE_PROVIDER_OPENVASP");
+ TRANSFER("TRANSFER");
private String value;
- AddressRegistryTravelRuleProvider(String value) {
+ CantonDomainEnum(String value) {
this.value = value;
}
@@ -43,8 +44,8 @@ public String toString() {
}
@JsonCreator
- public static AddressRegistryTravelRuleProvider fromValue(String value) {
- for (AddressRegistryTravelRuleProvider b : AddressRegistryTravelRuleProvider.values()) {
+ public static CantonDomainEnum fromValue(String value) {
+ for (CantonDomainEnum b : CantonDomainEnum.values()) {
if (b.value.equals(value)) {
return b;
}
diff --git a/src/main/java/com/fireblocks/sdk/model/CantonOfferResponseDetails.java b/src/main/java/com/fireblocks/sdk/model/CantonOfferResponseDetails.java
new file mode 100644
index 00000000..384143a1
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/CantonOfferResponseDetails.java
@@ -0,0 +1,501 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fireblocks.sdk.ApiClient;
+import java.time.OffsetDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/**
+ * The transaction belongs to an offer conversation: the offer itself, the response to it, or a leg
+ * that carries no answer of its own. The only block that changes over a transaction's lifetime.
+ */
+@JsonPropertyOrder({
+ CantonOfferResponseDetails.JSON_PROPERTY_VERSION,
+ CantonOfferResponseDetails.JSON_PROPERTY_DOMAIN,
+ CantonOfferResponseDetails.JSON_PROPERTY_VENDOR,
+ CantonOfferResponseDetails.JSON_PROPERTY_AVAILABLE_RESPONSES,
+ CantonOfferResponseDetails.JSON_PROPERTY_EXPIRES_AT,
+ CantonOfferResponseDetails.JSON_PROPERTY_APPROVAL_TRANSACTION_ID,
+ CantonOfferResponseDetails.JSON_PROPERTY_ORIGINAL_TRANSACTION_ID,
+ CantonOfferResponseDetails.JSON_PROPERTY_VERDICT
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class CantonOfferResponseDetails {
+ public static final String JSON_PROPERTY_VERSION = "version";
+ @jakarta.annotation.Nullable private Integer version;
+
+ public static final String JSON_PROPERTY_DOMAIN = "domain";
+ @jakarta.annotation.Nullable private CantonDomainEnum domain;
+
+ public static final String JSON_PROPERTY_VENDOR = "vendor";
+ @jakarta.annotation.Nullable private CantonVendorEnum vendor;
+
+ public static final String JSON_PROPERTY_AVAILABLE_RESPONSES = "availableResponses";
+ @jakarta.annotation.Nullable private List availableResponses;
+
+ public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt";
+ @jakarta.annotation.Nullable private OffsetDateTime expiresAt;
+
+ public static final String JSON_PROPERTY_APPROVAL_TRANSACTION_ID = "approvalTransactionId";
+ @jakarta.annotation.Nullable private String approvalTransactionId;
+
+ public static final String JSON_PROPERTY_ORIGINAL_TRANSACTION_ID = "originalTransactionId";
+ @jakarta.annotation.Nullable private String originalTransactionId;
+
+ /** The outcome, set once the transaction reaches a terminal status. */
+ public enum VerdictEnum {
+ ACCEPTED(String.valueOf("ACCEPTED")),
+
+ REJECTED(String.valueOf("REJECTED"));
+
+ private String value;
+
+ VerdictEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static VerdictEnum fromValue(String value) {
+ for (VerdictEnum b : VerdictEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_VERDICT = "verdict";
+ @jakarta.annotation.Nullable private VerdictEnum verdict;
+
+ public CantonOfferResponseDetails() {}
+
+ public CantonOfferResponseDetails version(@jakarta.annotation.Nullable Integer version) {
+ this.version = version;
+ return this;
+ }
+
+ /**
+ * The shape of this block. Stamped at creation and never changed, so a reader always knows
+ * which version it is holding.
+ *
+ * @return version
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_VERSION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public Integer getVersion() {
+ return version;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VERSION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setVersion(@jakarta.annotation.Nullable Integer version) {
+ this.version = version;
+ }
+
+ public CantonOfferResponseDetails domain(@jakarta.annotation.Nullable CantonDomainEnum domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ /**
+ * Get domain
+ *
+ * @return domain
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DOMAIN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonDomainEnum getDomain() {
+ return domain;
+ }
+
+ @JsonProperty(JSON_PROPERTY_DOMAIN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDomain(@jakarta.annotation.Nullable CantonDomainEnum domain) {
+ this.domain = domain;
+ }
+
+ public CantonOfferResponseDetails vendor(@jakarta.annotation.Nullable CantonVendorEnum vendor) {
+ this.vendor = vendor;
+ return this;
+ }
+
+ /**
+ * Get vendor
+ *
+ * @return vendor
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_VENDOR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonVendorEnum getVendor() {
+ return vendor;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VENDOR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setVendor(@jakarta.annotation.Nullable CantonVendorEnum vendor) {
+ this.vendor = vendor;
+ }
+
+ public CantonOfferResponseDetails availableResponses(
+ @jakarta.annotation.Nullable List availableResponses) {
+ this.availableResponses = availableResponses;
+ return this;
+ }
+
+ public CantonOfferResponseDetails addAvailableResponsesItem(String availableResponsesItem) {
+ if (this.availableResponses == null) {
+ this.availableResponses = new ArrayList<>();
+ }
+ this.availableResponses.add(availableResponsesItem);
+ return this;
+ }
+
+ /**
+ * The responses that can be sent for this offer right now. An empty array means nothing is
+ * answerable on this transaction — which is the difference between an actionable offer and a
+ * linked leg that shares its sub-status.
+ *
+ * @return availableResponses
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_AVAILABLE_RESPONSES)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public List getAvailableResponses() {
+ return availableResponses;
+ }
+
+ @JsonProperty(JSON_PROPERTY_AVAILABLE_RESPONSES)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setAvailableResponses(
+ @jakarta.annotation.Nullable List availableResponses) {
+ this.availableResponses = availableResponses;
+ }
+
+ public CantonOfferResponseDetails expiresAt(
+ @jakarta.annotation.Nullable OffsetDateTime expiresAt) {
+ this.expiresAt = expiresAt;
+ return this;
+ }
+
+ /**
+ * When the offer expires, where it has a deadline.
+ *
+ * @return expiresAt
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public OffsetDateTime getExpiresAt() {
+ return expiresAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setExpiresAt(@jakarta.annotation.Nullable OffsetDateTime expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ public CantonOfferResponseDetails approvalTransactionId(
+ @jakarta.annotation.Nullable String approvalTransactionId) {
+ this.approvalTransactionId = approvalTransactionId;
+ return this;
+ }
+
+ /**
+ * The response transaction, once one has been dispatched for this offer.
+ *
+ * @return approvalTransactionId
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_APPROVAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getApprovalTransactionId() {
+ return approvalTransactionId;
+ }
+
+ @JsonProperty(JSON_PROPERTY_APPROVAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setApprovalTransactionId(
+ @jakarta.annotation.Nullable String approvalTransactionId) {
+ this.approvalTransactionId = approvalTransactionId;
+ }
+
+ public CantonOfferResponseDetails originalTransactionId(
+ @jakarta.annotation.Nullable String originalTransactionId) {
+ this.originalTransactionId = originalTransactionId;
+ return this;
+ }
+
+ /**
+ * The transaction this one relates to — the offer a response answered.
+ *
+ * @return originalTransactionId
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ORIGINAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getOriginalTransactionId() {
+ return originalTransactionId;
+ }
+
+ @JsonProperty(JSON_PROPERTY_ORIGINAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOriginalTransactionId(
+ @jakarta.annotation.Nullable String originalTransactionId) {
+ this.originalTransactionId = originalTransactionId;
+ }
+
+ public CantonOfferResponseDetails verdict(@jakarta.annotation.Nullable VerdictEnum verdict) {
+ this.verdict = verdict;
+ return this;
+ }
+
+ /**
+ * The outcome, set once the transaction reaches a terminal status.
+ *
+ * @return verdict
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_VERDICT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public VerdictEnum getVerdict() {
+ return verdict;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VERDICT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setVerdict(@jakarta.annotation.Nullable VerdictEnum verdict) {
+ this.verdict = verdict;
+ }
+
+ /** Return true if this CantonOfferResponseDetails object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ CantonOfferResponseDetails cantonOfferResponseDetails = (CantonOfferResponseDetails) o;
+ return Objects.equals(this.version, cantonOfferResponseDetails.version)
+ && Objects.equals(this.domain, cantonOfferResponseDetails.domain)
+ && Objects.equals(this.vendor, cantonOfferResponseDetails.vendor)
+ && Objects.equals(
+ this.availableResponses, cantonOfferResponseDetails.availableResponses)
+ && Objects.equals(this.expiresAt, cantonOfferResponseDetails.expiresAt)
+ && Objects.equals(
+ this.approvalTransactionId,
+ cantonOfferResponseDetails.approvalTransactionId)
+ && Objects.equals(
+ this.originalTransactionId,
+ cantonOfferResponseDetails.originalTransactionId)
+ && Objects.equals(this.verdict, cantonOfferResponseDetails.verdict);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ version,
+ domain,
+ vendor,
+ availableResponses,
+ expiresAt,
+ approvalTransactionId,
+ originalTransactionId,
+ verdict);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CantonOfferResponseDetails {\n");
+ sb.append(" version: ").append(toIndentedString(version)).append("\n");
+ sb.append(" domain: ").append(toIndentedString(domain)).append("\n");
+ sb.append(" vendor: ").append(toIndentedString(vendor)).append("\n");
+ sb.append(" availableResponses: ")
+ .append(toIndentedString(availableResponses))
+ .append("\n");
+ sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n");
+ sb.append(" approvalTransactionId: ")
+ .append(toIndentedString(approvalTransactionId))
+ .append("\n");
+ sb.append(" originalTransactionId: ")
+ .append(toIndentedString(originalTransactionId))
+ .append("\n");
+ sb.append(" verdict: ").append(toIndentedString(verdict)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `version` to the URL query string
+ if (getVersion() != null) {
+ joiner.add(
+ String.format(
+ "%sversion%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVersion()))));
+ }
+
+ // add `domain` to the URL query string
+ if (getDomain() != null) {
+ joiner.add(
+ String.format(
+ "%sdomain%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getDomain()))));
+ }
+
+ // add `vendor` to the URL query string
+ if (getVendor() != null) {
+ joiner.add(
+ String.format(
+ "%svendor%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVendor()))));
+ }
+
+ // add `availableResponses` to the URL query string
+ if (getAvailableResponses() != null) {
+ for (int i = 0; i < getAvailableResponses().size(); i++) {
+ joiner.add(
+ String.format(
+ "%savailableResponses%s%s=%s",
+ prefix,
+ suffix,
+ "".equals(suffix)
+ ? ""
+ : String.format(
+ "%s%d%s", containerPrefix, i, containerSuffix),
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getAvailableResponses().get(i)))));
+ }
+ }
+
+ // add `expiresAt` to the URL query string
+ if (getExpiresAt() != null) {
+ joiner.add(
+ String.format(
+ "%sexpiresAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt()))));
+ }
+
+ // add `approvalTransactionId` to the URL query string
+ if (getApprovalTransactionId() != null) {
+ joiner.add(
+ String.format(
+ "%sapprovalTransactionId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getApprovalTransactionId()))));
+ }
+
+ // add `originalTransactionId` to the URL query string
+ if (getOriginalTransactionId() != null) {
+ joiner.add(
+ String.format(
+ "%soriginalTransactionId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getOriginalTransactionId()))));
+ }
+
+ // add `verdict` to the URL query string
+ if (getVerdict() != null) {
+ joiner.add(
+ String.format(
+ "%sverdict%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVerdict()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/CantonSettlementDetails.java b/src/main/java/com/fireblocks/sdk/model/CantonSettlementDetails.java
new file mode 100644
index 00000000..638316dd
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/CantonSettlementDetails.java
@@ -0,0 +1,268 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/**
+ * The credit side of a delivery-versus-payment: a venue settled an allocation. Written once, at
+ * creation — the transaction is already complete when it appears.
+ */
+@JsonPropertyOrder({
+ CantonSettlementDetails.JSON_PROPERTY_VERSION,
+ CantonSettlementDetails.JSON_PROPERTY_DOMAIN,
+ CantonSettlementDetails.JSON_PROPERTY_TYPE,
+ CantonSettlementDetails.JSON_PROPERTY_ORIGINAL_TRANSACTION_ID
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class CantonSettlementDetails {
+ public static final String JSON_PROPERTY_VERSION = "version";
+ @jakarta.annotation.Nullable private Integer version;
+
+ public static final String JSON_PROPERTY_DOMAIN = "domain";
+ @jakarta.annotation.Nullable private CantonDomainEnum domain;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ @jakarta.annotation.Nullable private String type;
+
+ public static final String JSON_PROPERTY_ORIGINAL_TRANSACTION_ID = "originalTransactionId";
+ @jakarta.annotation.Nullable private String originalTransactionId;
+
+ public CantonSettlementDetails() {}
+
+ public CantonSettlementDetails version(@jakarta.annotation.Nullable Integer version) {
+ this.version = version;
+ return this;
+ }
+
+ /**
+ * The shape of this block. Stamped at creation and never changed, so a reader always knows
+ * which version it is holding.
+ *
+ * @return version
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_VERSION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public Integer getVersion() {
+ return version;
+ }
+
+ @JsonProperty(JSON_PROPERTY_VERSION)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setVersion(@jakarta.annotation.Nullable Integer version) {
+ this.version = version;
+ }
+
+ public CantonSettlementDetails domain(@jakarta.annotation.Nullable CantonDomainEnum domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ /**
+ * Get domain
+ *
+ * @return domain
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DOMAIN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public CantonDomainEnum getDomain() {
+ return domain;
+ }
+
+ @JsonProperty(JSON_PROPERTY_DOMAIN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDomain(@jakarta.annotation.Nullable CantonDomainEnum domain) {
+ this.domain = domain;
+ }
+
+ public CantonSettlementDetails type(@jakarta.annotation.Nullable String type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * The settlement type.
+ *
+ * @return type
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getType() {
+ return type;
+ }
+
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setType(@jakarta.annotation.Nullable String type) {
+ this.type = type;
+ }
+
+ public CantonSettlementDetails originalTransactionId(
+ @jakarta.annotation.Nullable String originalTransactionId) {
+ this.originalTransactionId = originalTransactionId;
+ return this;
+ }
+
+ /**
+ * The allocation this receipt settles.
+ *
+ * @return originalTransactionId
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ORIGINAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getOriginalTransactionId() {
+ return originalTransactionId;
+ }
+
+ @JsonProperty(JSON_PROPERTY_ORIGINAL_TRANSACTION_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOriginalTransactionId(
+ @jakarta.annotation.Nullable String originalTransactionId) {
+ this.originalTransactionId = originalTransactionId;
+ }
+
+ /** Return true if this CantonSettlementDetails object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ CantonSettlementDetails cantonSettlementDetails = (CantonSettlementDetails) o;
+ return Objects.equals(this.version, cantonSettlementDetails.version)
+ && Objects.equals(this.domain, cantonSettlementDetails.domain)
+ && Objects.equals(this.type, cantonSettlementDetails.type)
+ && Objects.equals(
+ this.originalTransactionId, cantonSettlementDetails.originalTransactionId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(version, domain, type, originalTransactionId);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class CantonSettlementDetails {\n");
+ sb.append(" version: ").append(toIndentedString(version)).append("\n");
+ sb.append(" domain: ").append(toIndentedString(domain)).append("\n");
+ sb.append(" type: ").append(toIndentedString(type)).append("\n");
+ sb.append(" originalTransactionId: ")
+ .append(toIndentedString(originalTransactionId))
+ .append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `version` to the URL query string
+ if (getVersion() != null) {
+ joiner.add(
+ String.format(
+ "%sversion%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getVersion()))));
+ }
+
+ // add `domain` to the URL query string
+ if (getDomain() != null) {
+ joiner.add(
+ String.format(
+ "%sdomain%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getDomain()))));
+ }
+
+ // add `type` to the URL query string
+ if (getType() != null) {
+ joiner.add(
+ String.format(
+ "%stype%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getType()))));
+ }
+
+ // add `originalTransactionId` to the URL query string
+ if (getOriginalTransactionId() != null) {
+ joiner.add(
+ String.format(
+ "%soriginalTransactionId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(
+ ApiClient.valueToString(getOriginalTransactionId()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/CantonVendorEnum.java b/src/main/java/com/fireblocks/sdk/model/CantonVendorEnum.java
new file mode 100644
index 00000000..46a61e60
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/CantonVendorEnum.java
@@ -0,0 +1,67 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * The vendor whose flow this is. Present only where the flow is vendor-specific — absent on
+ * vendor-neutral Splice operations such as allocation withdraw.
+ */
+public enum CantonVendorEnum {
+ DTCC("DTCC"),
+
+ TRADEWEB("TRADEWEB");
+
+ private String value;
+
+ CantonVendorEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static CantonVendorEnum fromValue(String value) {
+ for (CantonVendorEnum b : CantonVendorEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ if (prefix == null) {
+ prefix = "";
+ }
+
+ return String.format("%s=%s", prefix, this.toString());
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/AddressRegistryError.java b/src/main/java/com/fireblocks/sdk/model/CreateWebhookMtlsConfigRequest.java
similarity index 57%
rename from src/main/java/com/fireblocks/sdk/model/AddressRegistryError.java
rename to src/main/java/com/fireblocks/sdk/model/CreateWebhookMtlsConfigRequest.java
index 76a5096e..aa41bd16 100644
--- a/src/main/java/com/fireblocks/sdk/model/AddressRegistryError.java
+++ b/src/main/java/com/fireblocks/sdk/model/CreateWebhookMtlsConfigRequest.java
@@ -21,79 +21,80 @@
import java.util.Objects;
import java.util.StringJoiner;
-/** Error body for address registry operations (4xx and 5xx). */
+/** CreateWebhookMtlsConfigRequest */
@JsonPropertyOrder({
- AddressRegistryError.JSON_PROPERTY_CODE,
- AddressRegistryError.JSON_PROPERTY_MESSAGE
+ CreateWebhookMtlsConfigRequest.JSON_PROPERTY_NAME,
+ CreateWebhookMtlsConfigRequest.JSON_PROPERTY_SIGNED_CERT
})
@jakarta.annotation.Generated(
value = "org.openapitools.codegen.languages.JavaClientCodegen",
comments = "Generator version: 7.14.0")
-public class AddressRegistryError {
- public static final String JSON_PROPERTY_CODE = "code";
- @jakarta.annotation.Nullable private Integer code;
+public class CreateWebhookMtlsConfigRequest {
+ public static final String JSON_PROPERTY_NAME = "name";
+ @jakarta.annotation.Nullable private String name;
- public static final String JSON_PROPERTY_MESSAGE = "message";
- @jakarta.annotation.Nonnull private String message;
+ public static final String JSON_PROPERTY_SIGNED_CERT = "signedCert";
+ @jakarta.annotation.Nonnull private String signedCert;
- public AddressRegistryError() {}
+ public CreateWebhookMtlsConfigRequest() {}
@JsonCreator
- public AddressRegistryError(
- @JsonProperty(value = JSON_PROPERTY_MESSAGE, required = true) String message) {
- this.message = message;
+ public CreateWebhookMtlsConfigRequest(
+ @JsonProperty(value = JSON_PROPERTY_SIGNED_CERT, required = true) String signedCert) {
+ this.signedCert = signedCert;
}
- public AddressRegistryError code(@jakarta.annotation.Nullable Integer code) {
- this.code = code;
+ public CreateWebhookMtlsConfigRequest name(@jakarta.annotation.Nullable String name) {
+ this.name = name;
return this;
}
/**
- * Application error code when present. For HTTP 400 on legal-entity lookup, distinguish: 4100 —
- * request validation (e.g. missing, empty, or whitespace-only `address` after trim);
- * 2140 — workspace not opted in to the address registry (`AR_OPT_IN_REQUIRED`). 2142
- * — not found (404). Other codes may appear, including on server errors.
+ * A label for this mTLS configuration, to tell several certificates apart. Letters, digits and
+ * spaces only.
*
- * @return code
+ * @return name
*/
@jakarta.annotation.Nullable
- @JsonProperty(JSON_PROPERTY_CODE)
+ @JsonProperty(JSON_PROPERTY_NAME)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public Integer getCode() {
- return code;
+ public String getName() {
+ return name;
}
- @JsonProperty(JSON_PROPERTY_CODE)
+ @JsonProperty(JSON_PROPERTY_NAME)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public void setCode(@jakarta.annotation.Nullable Integer code) {
- this.code = code;
+ public void setName(@jakarta.annotation.Nullable String name) {
+ this.name = name;
}
- public AddressRegistryError message(@jakarta.annotation.Nonnull String message) {
- this.message = message;
+ public CreateWebhookMtlsConfigRequest signedCert(
+ @jakarta.annotation.Nonnull String signedCert) {
+ this.signedCert = signedCert;
return this;
}
/**
- * Human-readable error message
+ * Signed client certificate PEM, issued for the CSR from `GET
+ * /v1/webhooks_settings/mtls_csr`. The private key it belongs to is derived from the
+ * certificate itself.
*
- * @return message
+ * @return signedCert
*/
@jakarta.annotation.Nonnull
- @JsonProperty(JSON_PROPERTY_MESSAGE)
+ @JsonProperty(JSON_PROPERTY_SIGNED_CERT)
@JsonInclude(value = JsonInclude.Include.ALWAYS)
- public String getMessage() {
- return message;
+ public String getSignedCert() {
+ return signedCert;
}
- @JsonProperty(JSON_PROPERTY_MESSAGE)
+ @JsonProperty(JSON_PROPERTY_SIGNED_CERT)
@JsonInclude(value = JsonInclude.Include.ALWAYS)
- public void setMessage(@jakarta.annotation.Nonnull String message) {
- this.message = message;
+ public void setSignedCert(@jakarta.annotation.Nonnull String signedCert) {
+ this.signedCert = signedCert;
}
- /** Return true if this AddressRegistryError object is equal to o. */
+ /** Return true if this CreateWebhookMtlsConfigRequest object is equal to o. */
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -102,22 +103,23 @@ public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) {
return false;
}
- AddressRegistryError addressRegistryError = (AddressRegistryError) o;
- return Objects.equals(this.code, addressRegistryError.code)
- && Objects.equals(this.message, addressRegistryError.message);
+ CreateWebhookMtlsConfigRequest createWebhookMtlsConfigRequest =
+ (CreateWebhookMtlsConfigRequest) o;
+ return Objects.equals(this.name, createWebhookMtlsConfigRequest.name)
+ && Objects.equals(this.signedCert, createWebhookMtlsConfigRequest.signedCert);
}
@Override
public int hashCode() {
- return Objects.hash(code, message);
+ return Objects.hash(name, signedCert);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- sb.append("class AddressRegistryError {\n");
- sb.append(" code: ").append(toIndentedString(code)).append("\n");
- sb.append(" message: ").append(toIndentedString(message)).append("\n");
+ sb.append("class CreateWebhookMtlsConfigRequest {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append(" signedCert: ").append(toIndentedString(signedCert)).append("\n");
sb.append("}");
return sb.toString();
}
@@ -165,24 +167,24 @@ public String toUrlQueryString(String prefix) {
StringJoiner joiner = new StringJoiner("&");
- // add `code` to the URL query string
- if (getCode() != null) {
+ // add `name` to the URL query string
+ if (getName() != null) {
joiner.add(
String.format(
- "%scode%s=%s",
+ "%sname%s=%s",
prefix,
suffix,
- ApiClient.urlEncode(ApiClient.valueToString(getCode()))));
+ ApiClient.urlEncode(ApiClient.valueToString(getName()))));
}
- // add `message` to the URL query string
- if (getMessage() != null) {
+ // add `signedCert` to the URL query string
+ if (getSignedCert() != null) {
joiner.add(
String.format(
- "%smessage%s=%s",
+ "%ssignedCert%s=%s",
prefix,
suffix,
- ApiClient.urlEncode(ApiClient.valueToString(getMessage()))));
+ ApiClient.urlEncode(ApiClient.valueToString(getSignedCert()))));
}
return joiner.toString();
diff --git a/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java b/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java
index 5ddcdd0f..ab9be421 100644
--- a/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java
+++ b/src/main/java/com/fireblocks/sdk/model/CreateWebhookOauthRequest.java
@@ -22,6 +22,7 @@
import java.util.Map;
import java.util.Objects;
import java.util.StringJoiner;
+import java.util.UUID;
/**
* A new reusable OAuth 2.0 client credential set. Attach it to a webhook by passing the returned id
@@ -37,7 +38,7 @@
CreateWebhookOauthRequest.JSON_PROPERTY_CUSTOM_JWT_CLAIMS,
CreateWebhookOauthRequest.JSON_PROPERTY_CUSTOM_BODY_PARAMS,
CreateWebhookOauthRequest.JSON_PROPERTY_CUSTOM_HEADERS,
- CreateWebhookOauthRequest.JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT
+ CreateWebhookOauthRequest.JSON_PROPERTY_WEBHOOK_MTLS_ID
})
@jakarta.annotation.Generated(
value = "org.openapitools.codegen.languages.JavaClientCodegen",
@@ -67,8 +68,8 @@ public class CreateWebhookOauthRequest {
public static final String JSON_PROPERTY_CUSTOM_HEADERS = "customHeaders";
@jakarta.annotation.Nullable private Map customHeaders;
- public static final String JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT = "mtlsClientSignedCert";
- @jakarta.annotation.Nullable private String mtlsClientSignedCert;
+ public static final String JSON_PROPERTY_WEBHOOK_MTLS_ID = "webhookMtlsId";
+ @jakarta.annotation.Nullable private UUID webhookMtlsId;
public CreateWebhookOauthRequest() {}
@@ -331,29 +332,34 @@ public void setCustomHeaders(@jakarta.annotation.Nullable Map cu
this.customHeaders = customHeaders;
}
- public CreateWebhookOauthRequest mtlsClientSignedCert(
- @jakarta.annotation.Nullable String mtlsClientSignedCert) {
- this.mtlsClientSignedCert = mtlsClientSignedCert;
+ public CreateWebhookOauthRequest webhookMtlsId(
+ @jakarta.annotation.Nullable UUID webhookMtlsId) {
+ this.webhookMtlsId = webhookMtlsId;
return this;
}
/**
- * PEM-encoded client certificate for mTLS when fetching tokens. Must be a valid X.509
- * certificate inside its validity window.
+ * The id of the mTLS configuration presented to the token endpoint, from
+ * `/v1/webhooks_settings/mtls`. It can be the same configuration a webhook uses, so
+ * one certificate, signed from `GET /v1/webhooks_settings/mtls_csr`, serves both the
+ * token endpoint and the receiver. Omit, or send `null`, for a token request without
+ * mTLS. Requires the mTLS feature to be enabled for the workspace (`403` otherwise),
+ * a configuration of this workspace (`404` otherwise), and one linked to a private
+ * key (`400` otherwise).
*
- * @return mtlsClientSignedCert
+ * @return webhookMtlsId
*/
@jakarta.annotation.Nullable
- @JsonProperty(JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT)
+ @JsonProperty(JSON_PROPERTY_WEBHOOK_MTLS_ID)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public String getMtlsClientSignedCert() {
- return mtlsClientSignedCert;
+ public UUID getWebhookMtlsId() {
+ return webhookMtlsId;
}
- @JsonProperty(JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT)
+ @JsonProperty(JSON_PROPERTY_WEBHOOK_MTLS_ID)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public void setMtlsClientSignedCert(@jakarta.annotation.Nullable String mtlsClientSignedCert) {
- this.mtlsClientSignedCert = mtlsClientSignedCert;
+ public void setWebhookMtlsId(@jakarta.annotation.Nullable UUID webhookMtlsId) {
+ this.webhookMtlsId = webhookMtlsId;
}
/** Return true if this CreateWebhookOauthRequest object is equal to o. */
@@ -374,8 +380,7 @@ public boolean equals(Object o) {
&& Objects.equals(this.customJwtClaims, createWebhookOauthRequest.customJwtClaims)
&& Objects.equals(this.customBodyParams, createWebhookOauthRequest.customBodyParams)
&& Objects.equals(this.customHeaders, createWebhookOauthRequest.customHeaders)
- && Objects.equals(
- this.mtlsClientSignedCert, createWebhookOauthRequest.mtlsClientSignedCert);
+ && Objects.equals(this.webhookMtlsId, createWebhookOauthRequest.webhookMtlsId);
}
@Override
@@ -389,7 +394,7 @@ public int hashCode() {
customJwtClaims,
customBodyParams,
customHeaders,
- mtlsClientSignedCert);
+ webhookMtlsId);
}
@Override
@@ -404,9 +409,7 @@ public String toString() {
sb.append(" customJwtClaims: ").append(toIndentedString(customJwtClaims)).append("\n");
sb.append(" customBodyParams: ").append(toIndentedString(customBodyParams)).append("\n");
sb.append(" customHeaders: ").append(toIndentedString(customHeaders)).append("\n");
- sb.append(" mtlsClientSignedCert: ")
- .append(toIndentedString(mtlsClientSignedCert))
- .append("\n");
+ sb.append(" webhookMtlsId: ").append(toIndentedString(webhookMtlsId)).append("\n");
sb.append("}");
return sb.toString();
}
@@ -558,15 +561,14 @@ public String toUrlQueryString(String prefix) {
}
}
- // add `mtlsClientSignedCert` to the URL query string
- if (getMtlsClientSignedCert() != null) {
+ // add `webhookMtlsId` to the URL query string
+ if (getWebhookMtlsId() != null) {
joiner.add(
String.format(
- "%smtlsClientSignedCert%s=%s",
+ "%swebhookMtlsId%s=%s",
prefix,
suffix,
- ApiClient.urlEncode(
- ApiClient.valueToString(getMtlsClientSignedCert()))));
+ ApiClient.urlEncode(ApiClient.valueToString(getWebhookMtlsId()))));
}
return joiner.toString();
diff --git a/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java b/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java
index 2fec4969..05222d1d 100644
--- a/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java
+++ b/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java
@@ -32,7 +32,7 @@
CreateWebhookRequest.JSON_PROPERTY_DESCRIPTION,
CreateWebhookRequest.JSON_PROPERTY_EVENTS,
CreateWebhookRequest.JSON_PROPERTY_ENABLED,
- CreateWebhookRequest.JSON_PROPERTY_MTLS,
+ CreateWebhookRequest.JSON_PROPERTY_WEBHOOK_MTLS_ID,
CreateWebhookRequest.JSON_PROPERTY_WEBHOOK_OAUTH_ID,
CreateWebhookRequest.JSON_PROPERTY_CUSTOM_HEADERS
})
@@ -52,8 +52,8 @@ public class CreateWebhookRequest {
public static final String JSON_PROPERTY_ENABLED = "enabled";
@jakarta.annotation.Nullable private Boolean enabled = true;
- public static final String JSON_PROPERTY_MTLS = "mtls";
- @jakarta.annotation.Nullable private WebhookMtls mtls;
+ public static final String JSON_PROPERTY_WEBHOOK_MTLS_ID = "webhookMtlsId";
+ @jakarta.annotation.Nullable private UUID webhookMtlsId;
public static final String JSON_PROPERTY_WEBHOOK_OAUTH_ID = "webhookOauthId";
@jakarta.annotation.Nullable private UUID webhookOauthId;
@@ -172,27 +172,30 @@ public void setEnabled(@jakarta.annotation.Nullable Boolean enabled) {
this.enabled = enabled;
}
- public CreateWebhookRequest mtls(@jakarta.annotation.Nullable WebhookMtls mtls) {
- this.mtls = mtls;
+ public CreateWebhookRequest webhookMtlsId(@jakarta.annotation.Nullable UUID webhookMtlsId) {
+ this.webhookMtlsId = webhookMtlsId;
return this;
}
/**
- * Get mtls
+ * The id of the mTLS configuration this webhook presents when delivering, from
+ * `/v1/webhooks_settings/mtls`. Several webhooks may share one configuration, so
+ * replacing its certificate covers all of them at once. Send `null` to stop using
+ * mTLS for this webhook.
*
- * @return mtls
+ * @return webhookMtlsId
*/
@jakarta.annotation.Nullable
- @JsonProperty(JSON_PROPERTY_MTLS)
+ @JsonProperty(JSON_PROPERTY_WEBHOOK_MTLS_ID)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public WebhookMtls getMtls() {
- return mtls;
+ public UUID getWebhookMtlsId() {
+ return webhookMtlsId;
}
- @JsonProperty(JSON_PROPERTY_MTLS)
+ @JsonProperty(JSON_PROPERTY_WEBHOOK_MTLS_ID)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public void setMtls(@jakarta.annotation.Nullable WebhookMtls mtls) {
- this.mtls = mtls;
+ public void setWebhookMtlsId(@jakarta.annotation.Nullable UUID webhookMtlsId) {
+ this.webhookMtlsId = webhookMtlsId;
}
public CreateWebhookRequest webhookOauthId(@jakarta.annotation.Nullable UUID webhookOauthId) {
@@ -282,14 +285,15 @@ public boolean equals(Object o) {
&& Objects.equals(this.description, createWebhookRequest.description)
&& Objects.equals(this.events, createWebhookRequest.events)
&& Objects.equals(this.enabled, createWebhookRequest.enabled)
- && Objects.equals(this.mtls, createWebhookRequest.mtls)
+ && Objects.equals(this.webhookMtlsId, createWebhookRequest.webhookMtlsId)
&& Objects.equals(this.webhookOauthId, createWebhookRequest.webhookOauthId)
&& Objects.equals(this.customHeaders, createWebhookRequest.customHeaders);
}
@Override
public int hashCode() {
- return Objects.hash(url, description, events, enabled, mtls, webhookOauthId, customHeaders);
+ return Objects.hash(
+ url, description, events, enabled, webhookMtlsId, webhookOauthId, customHeaders);
}
@Override
@@ -300,7 +304,7 @@ public String toString() {
sb.append(" description: ").append(toIndentedString(description)).append("\n");
sb.append(" events: ").append(toIndentedString(events)).append("\n");
sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n");
- sb.append(" mtls: ").append(toIndentedString(mtls)).append("\n");
+ sb.append(" webhookMtlsId: ").append(toIndentedString(webhookMtlsId)).append("\n");
sb.append(" webhookOauthId: ").append(toIndentedString(webhookOauthId)).append("\n");
sb.append(" customHeaders: ").append(toIndentedString(customHeaders)).append("\n");
sb.append("}");
@@ -399,9 +403,14 @@ public String toUrlQueryString(String prefix) {
ApiClient.urlEncode(ApiClient.valueToString(getEnabled()))));
}
- // add `mtls` to the URL query string
- if (getMtls() != null) {
- joiner.add(getMtls().toUrlQueryString(prefix + "mtls" + suffix));
+ // add `webhookMtlsId` to the URL query string
+ if (getWebhookMtlsId() != null) {
+ joiner.add(
+ String.format(
+ "%swebhookMtlsId%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getWebhookMtlsId()))));
}
// add `webhookOauthId` to the URL query string
diff --git a/src/main/java/com/fireblocks/sdk/model/DeleteWebhookMtlsConfigResponse.java b/src/main/java/com/fireblocks/sdk/model/DeleteWebhookMtlsConfigResponse.java
new file mode 100644
index 00000000..74eec692
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/DeleteWebhookMtlsConfigResponse.java
@@ -0,0 +1,503 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.StringJoiner;
+import java.util.UUID;
+
+/**
+ * The deleted mTLS configuration, plus the ids of any webhooks and OAuth credentials the delete
+ * detached from it. They are only detached by `forceDelete=true`; without it a
+ * delete is refused with `409` while anything still references the configuration.
+ */
+@JsonPropertyOrder({
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_ID,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_NAME,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_SIGNED_CERT,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_EXPIRES_AT,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_CREATED_AT,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_UPDATED_AT,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_DETACHED_WEBHOOK_IDS,
+ DeleteWebhookMtlsConfigResponse.JSON_PROPERTY_DETACHED_WEBHOOK_OAUTH_IDS
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class DeleteWebhookMtlsConfigResponse {
+ public static final String JSON_PROPERTY_ID = "id";
+ @jakarta.annotation.Nonnull private UUID id;
+
+ public static final String JSON_PROPERTY_NAME = "name";
+ @jakarta.annotation.Nullable private String name;
+
+ public static final String JSON_PROPERTY_SIGNED_CERT = "signedCert";
+ @jakarta.annotation.Nonnull private String signedCert;
+
+ public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt";
+ @jakarta.annotation.Nonnull private Long expiresAt;
+
+ public static final String JSON_PROPERTY_CREATED_AT = "createdAt";
+ @jakarta.annotation.Nonnull private Long createdAt;
+
+ public static final String JSON_PROPERTY_UPDATED_AT = "updatedAt";
+ @jakarta.annotation.Nonnull private Long updatedAt;
+
+ public static final String JSON_PROPERTY_DETACHED_WEBHOOK_IDS = "detachedWebhookIds";
+ @jakarta.annotation.Nonnull private List detachedWebhookIds;
+
+ public static final String JSON_PROPERTY_DETACHED_WEBHOOK_OAUTH_IDS = "detachedWebhookOauthIds";
+ @jakarta.annotation.Nonnull private List detachedWebhookOauthIds;
+
+ public DeleteWebhookMtlsConfigResponse() {}
+
+ @JsonCreator
+ public DeleteWebhookMtlsConfigResponse(
+ @JsonProperty(value = JSON_PROPERTY_ID, required = true) UUID id,
+ @JsonProperty(value = JSON_PROPERTY_SIGNED_CERT, required = true) String signedCert,
+ @JsonProperty(value = JSON_PROPERTY_EXPIRES_AT, required = true) Long expiresAt,
+ @JsonProperty(value = JSON_PROPERTY_CREATED_AT, required = true) Long createdAt,
+ @JsonProperty(value = JSON_PROPERTY_UPDATED_AT, required = true) Long updatedAt,
+ @JsonProperty(value = JSON_PROPERTY_DETACHED_WEBHOOK_IDS, required = true)
+ List detachedWebhookIds,
+ @JsonProperty(value = JSON_PROPERTY_DETACHED_WEBHOOK_OAUTH_IDS, required = true)
+ List detachedWebhookOauthIds) {
+ this.id = id;
+ this.signedCert = signedCert;
+ this.expiresAt = expiresAt;
+ this.createdAt = createdAt;
+ this.updatedAt = updatedAt;
+ this.detachedWebhookIds = detachedWebhookIds;
+ this.detachedWebhookOauthIds = detachedWebhookOauthIds;
+ }
+
+ public DeleteWebhookMtlsConfigResponse id(@jakarta.annotation.Nonnull UUID id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * The unique identifier of the mTLS configuration, to be set as `webhookMtlsId` on a
+ * webhook or on OAuth credentials.
+ *
+ * @return id
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public UUID getId() {
+ return id;
+ }
+
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setId(@jakarta.annotation.Nonnull UUID id) {
+ this.id = id;
+ }
+
+ public DeleteWebhookMtlsConfigResponse name(@jakarta.annotation.Nullable String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * The label given to this mTLS configuration.
+ *
+ * @return name
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setName(@jakarta.annotation.Nullable String name) {
+ this.name = name;
+ }
+
+ public DeleteWebhookMtlsConfigResponse signedCert(
+ @jakarta.annotation.Nonnull String signedCert) {
+ this.signedCert = signedCert;
+ return this;
+ }
+
+ /**
+ * The signed client certificate PEM.
+ *
+ * @return signedCert
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_SIGNED_CERT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getSignedCert() {
+ return signedCert;
+ }
+
+ @JsonProperty(JSON_PROPERTY_SIGNED_CERT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setSignedCert(@jakarta.annotation.Nonnull String signedCert) {
+ this.signedCert = signedCert;
+ }
+
+ public DeleteWebhookMtlsConfigResponse expiresAt(@jakarta.annotation.Nonnull Long expiresAt) {
+ this.expiresAt = expiresAt;
+ return this;
+ }
+
+ /**
+ * When the certificate itself expires, in milliseconds since the epoch.
+ *
+ * @return expiresAt
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getExpiresAt() {
+ return expiresAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setExpiresAt(@jakarta.annotation.Nonnull Long expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ public DeleteWebhookMtlsConfigResponse createdAt(@jakarta.annotation.Nonnull Long createdAt) {
+ this.createdAt = createdAt;
+ return this;
+ }
+
+ /**
+ * When the certificate was uploaded, in milliseconds since the epoch.
+ *
+ * @return createdAt
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_CREATED_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getCreatedAt() {
+ return createdAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_CREATED_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setCreatedAt(@jakarta.annotation.Nonnull Long createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public DeleteWebhookMtlsConfigResponse updatedAt(@jakarta.annotation.Nonnull Long updatedAt) {
+ this.updatedAt = updatedAt;
+ return this;
+ }
+
+ /**
+ * When this configuration was last changed, in milliseconds since the epoch. Differs from
+ * createdAt once the certificate has been replaced or the configuration renamed.
+ *
+ * @return updatedAt
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_UPDATED_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getUpdatedAt() {
+ return updatedAt;
+ }
+
+ @JsonProperty(JSON_PROPERTY_UPDATED_AT)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setUpdatedAt(@jakarta.annotation.Nonnull Long updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public DeleteWebhookMtlsConfigResponse detachedWebhookIds(
+ @jakarta.annotation.Nonnull List detachedWebhookIds) {
+ this.detachedWebhookIds = detachedWebhookIds;
+ return this;
+ }
+
+ public DeleteWebhookMtlsConfigResponse addDetachedWebhookIdsItem(UUID detachedWebhookIdsItem) {
+ if (this.detachedWebhookIds == null) {
+ this.detachedWebhookIds = new ArrayList<>();
+ }
+ this.detachedWebhookIds.add(detachedWebhookIdsItem);
+ return this;
+ }
+
+ /**
+ * Webhooks whose `webhookMtlsId` was cleared. The webhooks themselves are not deleted
+ * and keep delivering, just without a client certificate. Empty unless
+ * `forceDelete=true` detached something.
+ *
+ * @return detachedWebhookIds
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_DETACHED_WEBHOOK_IDS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getDetachedWebhookIds() {
+ return detachedWebhookIds;
+ }
+
+ @JsonProperty(JSON_PROPERTY_DETACHED_WEBHOOK_IDS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setDetachedWebhookIds(@jakarta.annotation.Nonnull List detachedWebhookIds) {
+ this.detachedWebhookIds = detachedWebhookIds;
+ }
+
+ public DeleteWebhookMtlsConfigResponse detachedWebhookOauthIds(
+ @jakarta.annotation.Nonnull List detachedWebhookOauthIds) {
+ this.detachedWebhookOauthIds = detachedWebhookOauthIds;
+ return this;
+ }
+
+ public DeleteWebhookMtlsConfigResponse addDetachedWebhookOauthIdsItem(
+ UUID detachedWebhookOauthIdsItem) {
+ if (this.detachedWebhookOauthIds == null) {
+ this.detachedWebhookOauthIds = new ArrayList<>();
+ }
+ this.detachedWebhookOauthIds.add(detachedWebhookOauthIdsItem);
+ return this;
+ }
+
+ /**
+ * OAuth credentials whose `webhookMtlsId` was cleared. Their token requests continue
+ * without a client certificate. Empty unless `forceDelete=true` detached
+ * something.
+ *
+ * @return detachedWebhookOauthIds
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_DETACHED_WEBHOOK_OAUTH_IDS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getDetachedWebhookOauthIds() {
+ return detachedWebhookOauthIds;
+ }
+
+ @JsonProperty(JSON_PROPERTY_DETACHED_WEBHOOK_OAUTH_IDS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setDetachedWebhookOauthIds(
+ @jakarta.annotation.Nonnull List detachedWebhookOauthIds) {
+ this.detachedWebhookOauthIds = detachedWebhookOauthIds;
+ }
+
+ /** Return true if this DeleteWebhookMtlsConfigResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ DeleteWebhookMtlsConfigResponse deleteWebhookMtlsConfigResponse =
+ (DeleteWebhookMtlsConfigResponse) o;
+ return Objects.equals(this.id, deleteWebhookMtlsConfigResponse.id)
+ && Objects.equals(this.name, deleteWebhookMtlsConfigResponse.name)
+ && Objects.equals(this.signedCert, deleteWebhookMtlsConfigResponse.signedCert)
+ && Objects.equals(this.expiresAt, deleteWebhookMtlsConfigResponse.expiresAt)
+ && Objects.equals(this.createdAt, deleteWebhookMtlsConfigResponse.createdAt)
+ && Objects.equals(this.updatedAt, deleteWebhookMtlsConfigResponse.updatedAt)
+ && Objects.equals(
+ this.detachedWebhookIds, deleteWebhookMtlsConfigResponse.detachedWebhookIds)
+ && Objects.equals(
+ this.detachedWebhookOauthIds,
+ deleteWebhookMtlsConfigResponse.detachedWebhookOauthIds);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ id,
+ name,
+ signedCert,
+ expiresAt,
+ createdAt,
+ updatedAt,
+ detachedWebhookIds,
+ detachedWebhookOauthIds);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class DeleteWebhookMtlsConfigResponse {\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append(" signedCert: ").append(toIndentedString(signedCert)).append("\n");
+ sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n");
+ sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n");
+ sb.append(" updatedAt: ").append(toIndentedString(updatedAt)).append("\n");
+ sb.append(" detachedWebhookIds: ")
+ .append(toIndentedString(detachedWebhookIds))
+ .append("\n");
+ sb.append(" detachedWebhookOauthIds: ")
+ .append(toIndentedString(detachedWebhookOauthIds))
+ .append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `id` to the URL query string
+ if (getId() != null) {
+ joiner.add(
+ String.format(
+ "%sid%s=%s",
+ prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getId()))));
+ }
+
+ // add `name` to the URL query string
+ if (getName() != null) {
+ joiner.add(
+ String.format(
+ "%sname%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getName()))));
+ }
+
+ // add `signedCert` to the URL query string
+ if (getSignedCert() != null) {
+ joiner.add(
+ String.format(
+ "%ssignedCert%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getSignedCert()))));
+ }
+
+ // add `expiresAt` to the URL query string
+ if (getExpiresAt() != null) {
+ joiner.add(
+ String.format(
+ "%sexpiresAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt()))));
+ }
+
+ // add `createdAt` to the URL query string
+ if (getCreatedAt() != null) {
+ joiner.add(
+ String.format(
+ "%screatedAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getCreatedAt()))));
+ }
+
+ // add `updatedAt` to the URL query string
+ if (getUpdatedAt() != null) {
+ joiner.add(
+ String.format(
+ "%supdatedAt%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getUpdatedAt()))));
+ }
+
+ // add `detachedWebhookIds` to the URL query string
+ if (getDetachedWebhookIds() != null) {
+ for (int i = 0; i < getDetachedWebhookIds().size(); i++) {
+ if (getDetachedWebhookIds().get(i) != null) {
+ joiner.add(
+ String.format(
+ "%sdetachedWebhookIds%s%s=%s",
+ prefix,
+ suffix,
+ "".equals(suffix)
+ ? ""
+ : String.format(
+ "%s%d%s", containerPrefix, i, containerSuffix),
+ ApiClient.urlEncode(
+ ApiClient.valueToString(
+ getDetachedWebhookIds().get(i)))));
+ }
+ }
+ }
+
+ // add `detachedWebhookOauthIds` to the URL query string
+ if (getDetachedWebhookOauthIds() != null) {
+ for (int i = 0; i < getDetachedWebhookOauthIds().size(); i++) {
+ if (getDetachedWebhookOauthIds().get(i) != null) {
+ joiner.add(
+ String.format(
+ "%sdetachedWebhookOauthIds%s%s=%s",
+ prefix,
+ suffix,
+ "".equals(suffix)
+ ? ""
+ : String.format(
+ "%s%d%s", containerPrefix, i, containerSuffix),
+ ApiClient.urlEncode(
+ ApiClient.valueToString(
+ getDetachedWebhookOauthIds().get(i)))));
+ }
+ }
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/DeleteWebhookOauthResponse.java b/src/main/java/com/fireblocks/sdk/model/DeleteWebhookOauthResponse.java
index 3506aa56..c488de74 100644
--- a/src/main/java/com/fireblocks/sdk/model/DeleteWebhookOauthResponse.java
+++ b/src/main/java/com/fireblocks/sdk/model/DeleteWebhookOauthResponse.java
@@ -38,7 +38,7 @@
DeleteWebhookOauthResponse.JSON_PROPERTY_CUSTOM_JWT_CLAIMS,
DeleteWebhookOauthResponse.JSON_PROPERTY_CUSTOM_BODY_PARAMS,
DeleteWebhookOauthResponse.JSON_PROPERTY_CUSTOM_HEADERS,
- DeleteWebhookOauthResponse.JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT,
+ DeleteWebhookOauthResponse.JSON_PROPERTY_WEBHOOK_MTLS_ID,
DeleteWebhookOauthResponse.JSON_PROPERTY_CREATED_AT,
DeleteWebhookOauthResponse.JSON_PROPERTY_UPDATED_AT,
DeleteWebhookOauthResponse.JSON_PROPERTY_DETACHED_WEBHOOK_IDS
@@ -71,8 +71,8 @@ public class DeleteWebhookOauthResponse {
public static final String JSON_PROPERTY_CUSTOM_HEADERS = "customHeaders";
@jakarta.annotation.Nullable private List customHeaders;
- public static final String JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT = "mtlsClientSignedCert";
- @jakarta.annotation.Nullable private String mtlsClientSignedCert;
+ public static final String JSON_PROPERTY_WEBHOOK_MTLS_ID = "webhookMtlsId";
+ @jakarta.annotation.Nullable private UUID webhookMtlsId;
public static final String JSON_PROPERTY_CREATED_AT = "createdAt";
@jakarta.annotation.Nonnull private Long createdAt;
@@ -326,28 +326,30 @@ public void setCustomHeaders(@jakarta.annotation.Nullable List customHea
this.customHeaders = customHeaders;
}
- public DeleteWebhookOauthResponse mtlsClientSignedCert(
- @jakarta.annotation.Nullable String mtlsClientSignedCert) {
- this.mtlsClientSignedCert = mtlsClientSignedCert;
+ public DeleteWebhookOauthResponse webhookMtlsId(
+ @jakarta.annotation.Nullable UUID webhookMtlsId) {
+ this.webhookMtlsId = webhookMtlsId;
return this;
}
/**
- * PEM-encoded client certificate used for mTLS when fetching OAuth tokens.
+ * The id of the mTLS configuration presented to the token endpoint. Absent when the token
+ * request does not use mTLS. Read the certificate from
+ * `/v1/webhooks_settings/mtls/{id}`.
*
- * @return mtlsClientSignedCert
+ * @return webhookMtlsId
*/
@jakarta.annotation.Nullable
- @JsonProperty(JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT)
+ @JsonProperty(JSON_PROPERTY_WEBHOOK_MTLS_ID)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public String getMtlsClientSignedCert() {
- return mtlsClientSignedCert;
+ public UUID getWebhookMtlsId() {
+ return webhookMtlsId;
}
- @JsonProperty(JSON_PROPERTY_MTLS_CLIENT_SIGNED_CERT)
+ @JsonProperty(JSON_PROPERTY_WEBHOOK_MTLS_ID)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
- public void setMtlsClientSignedCert(@jakarta.annotation.Nullable String mtlsClientSignedCert) {
- this.mtlsClientSignedCert = mtlsClientSignedCert;
+ public void setWebhookMtlsId(@jakarta.annotation.Nullable UUID webhookMtlsId) {
+ this.webhookMtlsId = webhookMtlsId;
}
public DeleteWebhookOauthResponse createdAt(@jakarta.annotation.Nonnull Long createdAt) {
@@ -449,8 +451,7 @@ public boolean equals(Object o) {
&& Objects.equals(
this.customBodyParams, deleteWebhookOauthResponse.customBodyParams)
&& Objects.equals(this.customHeaders, deleteWebhookOauthResponse.customHeaders)
- && Objects.equals(
- this.mtlsClientSignedCert, deleteWebhookOauthResponse.mtlsClientSignedCert)
+ && Objects.equals(this.webhookMtlsId, deleteWebhookOauthResponse.webhookMtlsId)
&& Objects.equals(this.createdAt, deleteWebhookOauthResponse.createdAt)
&& Objects.equals(this.updatedAt, deleteWebhookOauthResponse.updatedAt)
&& Objects.equals(
@@ -468,7 +469,7 @@ public int hashCode() {
customJwtClaims,
customBodyParams,
customHeaders,
- mtlsClientSignedCert,
+ webhookMtlsId,
createdAt,
updatedAt,
detachedWebhookIds);
@@ -486,9 +487,7 @@ public String toString() {
sb.append(" customJwtClaims: ").append(toIndentedString(customJwtClaims)).append("\n");
sb.append(" customBodyParams: ").append(toIndentedString(customBodyParams)).append("\n");
sb.append(" customHeaders: ").append(toIndentedString(customHeaders)).append("\n");
- sb.append(" mtlsClientSignedCert: ")
- .append(toIndentedString(mtlsClientSignedCert))
- .append("\n");
+ sb.append(" webhookMtlsId: ").append(toIndentedString(webhookMtlsId)).append("\n");
sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n");
sb.append(" updatedAt: ").append(toIndentedString(updatedAt)).append("\n");
sb.append(" detachedWebhookIds: ")
@@ -640,15 +639,14 @@ public String toUrlQueryString(String prefix) {
}
}
- // add `mtlsClientSignedCert` to the URL query string
- if (getMtlsClientSignedCert() != null) {
+ // add `webhookMtlsId` to the URL query string
+ if (getWebhookMtlsId() != null) {
joiner.add(
String.format(
- "%smtlsClientSignedCert%s=%s",
+ "%swebhookMtlsId%s=%s",
prefix,
suffix,
- ApiClient.urlEncode(
- ApiClient.valueToString(getMtlsClientSignedCert()))));
+ ApiClient.urlEncode(ApiClient.valueToString(getWebhookMtlsId()))));
}
// add `createdAt` to the URL query string
diff --git a/src/main/java/com/fireblocks/sdk/model/EffectiveUtxoSelectionConfig.java b/src/main/java/com/fireblocks/sdk/model/EffectiveUtxoSelectionConfig.java
new file mode 100644
index 00000000..d3d398b2
--- /dev/null
+++ b/src/main/java/com/fireblocks/sdk/model/EffectiveUtxoSelectionConfig.java
@@ -0,0 +1,194 @@
+/*
+ * Fireblocks API
+ * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain. - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
+ *
+ * The version of the OpenAPI document: 1.6.2
+ * Contact: developers@fireblocks.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package com.fireblocks.sdk.model;
+
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fireblocks.sdk.ApiClient;
+import java.util.Objects;
+import java.util.StringJoiner;
+
+/** EffectiveUtxoSelectionConfig */
+@JsonPropertyOrder({
+ EffectiveUtxoSelectionConfig.JSON_PROPERTY_STRATEGY,
+ EffectiveUtxoSelectionConfig.JSON_PROPERTY_SOURCE
+})
+@jakarta.annotation.Generated(
+ value = "org.openapitools.codegen.languages.JavaClientCodegen",
+ comments = "Generator version: 7.14.0")
+public class EffectiveUtxoSelectionConfig {
+ public static final String JSON_PROPERTY_STRATEGY = "strategy";
+ @jakarta.annotation.Nonnull private UtxoSelectionStrategyEnum strategy;
+
+ public static final String JSON_PROPERTY_SOURCE = "source";
+ @jakarta.annotation.Nonnull private UtxoSelectionConfigSourceEnum source;
+
+ public EffectiveUtxoSelectionConfig() {}
+
+ @JsonCreator
+ public EffectiveUtxoSelectionConfig(
+ @JsonProperty(value = JSON_PROPERTY_STRATEGY, required = true)
+ UtxoSelectionStrategyEnum strategy,
+ @JsonProperty(value = JSON_PROPERTY_SOURCE, required = true)
+ UtxoSelectionConfigSourceEnum source) {
+ this.strategy = strategy;
+ this.source = source;
+ }
+
+ public EffectiveUtxoSelectionConfig strategy(
+ @jakarta.annotation.Nonnull UtxoSelectionStrategyEnum strategy) {
+ this.strategy = strategy;
+ return this;
+ }
+
+ /**
+ * Get strategy
+ *
+ * @return strategy
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_STRATEGY)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public UtxoSelectionStrategyEnum getStrategy() {
+ return strategy;
+ }
+
+ @JsonProperty(JSON_PROPERTY_STRATEGY)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setStrategy(@jakarta.annotation.Nonnull UtxoSelectionStrategyEnum strategy) {
+ this.strategy = strategy;
+ }
+
+ public EffectiveUtxoSelectionConfig source(
+ @jakarta.annotation.Nonnull UtxoSelectionConfigSourceEnum source) {
+ this.source = source;
+ return this;
+ }
+
+ /**
+ * Get source
+ *
+ * @return source
+ */
+ @jakarta.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_SOURCE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public UtxoSelectionConfigSourceEnum getSource() {
+ return source;
+ }
+
+ @JsonProperty(JSON_PROPERTY_SOURCE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setSource(@jakarta.annotation.Nonnull UtxoSelectionConfigSourceEnum source) {
+ this.source = source;
+ }
+
+ /** Return true if this EffectiveUtxoSelectionConfig object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ EffectiveUtxoSelectionConfig effectiveUtxoSelectionConfig =
+ (EffectiveUtxoSelectionConfig) o;
+ return Objects.equals(this.strategy, effectiveUtxoSelectionConfig.strategy)
+ && Objects.equals(this.source, effectiveUtxoSelectionConfig.source);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(strategy, source);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class EffectiveUtxoSelectionConfig {\n");
+ sb.append(" strategy: ").append(toIndentedString(strategy)).append("\n");
+ sb.append(" source: ").append(toIndentedString(source)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first
+ * line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @return URL query string
+ */
+ public String toUrlQueryString() {
+ return toUrlQueryString(null);
+ }
+
+ /**
+ * Convert the instance into URL query string.
+ *
+ * @param prefix prefix of the query string
+ * @return URL query string
+ */
+ public String toUrlQueryString(String prefix) {
+ String suffix = "";
+ String containerSuffix = "";
+ String containerPrefix = "";
+ if (prefix == null) {
+ // style=form, explode=true, e.g. /pet?name=cat&type=manx
+ prefix = "";
+ } else {
+ // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
+ prefix = prefix + "[";
+ suffix = "]";
+ containerSuffix = "]";
+ containerPrefix = "[";
+ }
+
+ StringJoiner joiner = new StringJoiner("&");
+
+ // add `strategy` to the URL query string
+ if (getStrategy() != null) {
+ joiner.add(
+ String.format(
+ "%sstrategy%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getStrategy()))));
+ }
+
+ // add `source` to the URL query string
+ if (getSource() != null) {
+ joiner.add(
+ String.format(
+ "%ssource%s=%s",
+ prefix,
+ suffix,
+ ApiClient.urlEncode(ApiClient.valueToString(getSource()))));
+ }
+
+ return joiner.toString();
+ }
+}
diff --git a/src/main/java/com/fireblocks/sdk/model/ExecutionRequestDetails.java b/src/main/java/com/fireblocks/sdk/model/ExecutionRequestDetails.java
index c39716d8..278c1def 100644
--- a/src/main/java/com/fireblocks/sdk/model/ExecutionRequestDetails.java
+++ b/src/main/java/com/fireblocks/sdk/model/ExecutionRequestDetails.java
@@ -80,6 +80,57 @@ public ExecutionRequestDetails deserialize(JsonParser jp, DeserializationContext
boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS);
int match = 0;
JsonToken token = tree.traverse(jp.getCodec()).nextToken();
+ // deserialize LimitExecutionRequestDetails
+ try {
+ boolean attemptParsing = true;
+ // ensure that we respect type coercion as set on the client ObjectMapper
+ if (LimitExecutionRequestDetails.class.equals(Integer.class)
+ || LimitExecutionRequestDetails.class.equals(Long.class)
+ || LimitExecutionRequestDetails.class.equals(Float.class)
+ || LimitExecutionRequestDetails.class.equals(Double.class)
+ || LimitExecutionRequestDetails.class.equals(Boolean.class)
+ || LimitExecutionRequestDetails.class.equals(String.class)) {
+ attemptParsing = typeCoercion;
+ if (!attemptParsing) {
+ attemptParsing |=
+ ((LimitExecutionRequestDetails.class.equals(Integer.class)
+ || LimitExecutionRequestDetails.class.equals(
+ Long.class))
+ && token == JsonToken.VALUE_NUMBER_INT);
+ attemptParsing |=
+ ((LimitExecutionRequestDetails.class.equals(Float.class)
+ || LimitExecutionRequestDetails.class.equals(
+ Double.class))
+ && token == JsonToken.VALUE_NUMBER_FLOAT);
+ attemptParsing |=
+ (LimitExecutionRequestDetails.class.equals(Boolean.class)
+ && (token == JsonToken.VALUE_FALSE
+ || token == JsonToken.VALUE_TRUE));
+ attemptParsing |=
+ (LimitExecutionRequestDetails.class.equals(String.class)
+ && token == JsonToken.VALUE_STRING);
+ }
+ }
+ if (attemptParsing) {
+ deserialized =
+ tree.traverse(jp.getCodec())
+ .readValueAs(LimitExecutionRequestDetails.class);
+ // TODO: there is no validation against JSON schema constraints
+ // (min, max, enum, pattern...), this does not perform a strict JSON
+ // validation, which means the 'match' count may be higher than it should be.
+ match++;
+ log.log(
+ Level.FINER,
+ "Input data matches schema 'LimitExecutionRequestDetails'");
+ }
+ } catch (Exception e) {
+ // deserialization failed, continue
+ log.log(
+ Level.FINER,
+ "Input data does not match schema 'LimitExecutionRequestDetails'",
+ e);
+ }
+
// deserialize MarketExecutionRequestDetails
try {
boolean attemptParsing = true;
@@ -212,6 +263,11 @@ public ExecutionRequestDetails() {
super("oneOf", Boolean.FALSE);
}
+ public ExecutionRequestDetails(LimitExecutionRequestDetails o) {
+ super("oneOf", Boolean.FALSE);
+ setActualInstance(o);
+ }
+
public ExecutionRequestDetails(MarketExecutionRequestDetails o) {
super("oneOf", Boolean.FALSE);
setActualInstance(o);
@@ -223,6 +279,7 @@ public ExecutionRequestDetails(QuoteExecutionWithRequoteRequestDetails o) {
}
static {
+ schemas.put("LimitExecutionRequestDetails", LimitExecutionRequestDetails.class);
schemas.put("MarketExecutionRequestDetails", MarketExecutionRequestDetails.class);
schemas.put(
"QuoteExecutionWithRequoteRequestDetails",
@@ -231,8 +288,10 @@ public ExecutionRequestDetails(QuoteExecutionWithRequoteRequestDetails o) {
ExecutionRequestDetails.class, Collections.unmodifiableMap(schemas));
// Initialize and register the discriminator mappings.
Map