diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 60c9c90f..7c87194e 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -13,6 +13,7 @@ docs/AbaPaymentInfo.md docs/AbiFunction.md docs/AccessRegistryAddressItem.md docs/AccessRegistryCurrentStateResponse.md +docs/AccessRegistryCurrentStateResponse2.md docs/AccessRegistrySummaryResponse.md docs/AccessType.md docs/Account.md @@ -31,6 +32,7 @@ docs/AchAddress.md docs/AchDestination.md docs/AchPaymentInfo.md docs/ActionRecord.md +docs/ActiveRolesResponse.md docs/AdapterProcessingResult.md docs/AddAbiRequestDto.md docs/AddAssetToExternalWalletRequest.md @@ -45,6 +47,7 @@ docs/AdditionalInfoRequest.md docs/AdditionalInfoRequestAdditionalInfo.md docs/AddressBalanceItemDto.md docs/AddressBalancePagedResponse.md +docs/AddressBalancePagedResponse2.md docs/AddressNotAvailableError.md docs/AddressRegistryAddVaultOptOutsRequest.md docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md @@ -62,6 +65,10 @@ docs/AddressRegistryVaultOptOutItem.md docs/AddressReverseLookupResponse.md docs/AlertExposureTypeEnum.md docs/AlertLevelEnum.md +docs/AllowlistEntry.md +docs/AllowlistEntryStatus.md +docs/AllowlistMetadata.md +docs/AllowlistResponse.md docs/AmlAlert.md docs/AmlMatchedRule.md docs/AmlRegistrationResult.md @@ -127,6 +134,7 @@ docs/AuthorizationGroups.md docs/AuthorizationInfo.md docs/BalanceHistoryItemDto.md docs/BalanceHistoryPagedResponse.md +docs/BalanceHistoryPagedResponse2.md docs/BankAddress.md docs/BaseProvider.md docs/BasicAddressRequest.md @@ -200,6 +208,7 @@ docs/ConnectedAccountTotalBalance.md docs/ConnectedAccountTradingPair.md docs/ConnectedAccountTradingPairSupportedType.md docs/ConnectedAccountTradingPairsResponse.md +docs/ConnectedAccountType.md docs/ConnectedAccountsBetaApi.md docs/ConnectedAccountsResponse.md docs/ConnectedSingleAccount.md @@ -589,6 +598,9 @@ docs/OffersResponse.md docs/OnchainDataApi.md docs/OnchainTransaction.md docs/OnchainTransactionsPagedResponse.md +docs/OnchainTransactionsPagedResponse2.md +docs/OnchainTransferEvent.md +docs/OnchainTransfersPagedResponse.md docs/OneTimeAddress.md docs/OneTimeAddressAccount.md docs/OneTimeAddressPeerType.md @@ -597,6 +609,9 @@ docs/OperationExecutionFailure.md docs/Opportunity.md docs/OrderDetails.md docs/OrderExecutionStep.md +docs/OrderRequirementAllowedFileType.md +docs/OrderRequirementDetails.md +docs/OrderRequirementFile.md docs/OrderSide.md docs/OrderStatus.md docs/OrderSummary.md @@ -639,6 +654,7 @@ docs/PeerAdapterInfo.md docs/PeerType.md docs/PersonalEntityTypeEnum.md docs/PersonalIdentification.md +docs/PersonalIdentificationDocument.md docs/PersonalIdentificationFullName.md docs/PersonalIdentificationType.md docs/PixAddress.md @@ -666,6 +682,7 @@ docs/PolicyVerdictActionEnum.md docs/PolicyVerdictActionEnum2.md docs/Position.md docs/Position2.md +docs/PositionRelatedTransaction.md docs/PostalAddress.md docs/PreScreening.md docs/PrefundedSettlement.md @@ -730,6 +747,7 @@ docs/RetryRequoteTypeEnum.md docs/RewardInfo.md docs/RewardsInfo.md docs/RoleDetails.md +docs/RoleDetails2.md docs/RoleGrantee.md docs/SEPAAddress.md docs/SEPADestination.md @@ -850,10 +868,12 @@ docs/StakeRequest.md docs/StakeResponse.md docs/StakingApi.md docs/StakingErrorSchema.md +docs/StakingPositionRelatedTransactionsPaginatedResponse.md docs/StakingPositionsPaginatedResponse.md docs/StakingProvider.md docs/Status.md docs/StellarRippleCreateParamsDto.md +docs/SubmitOrderRequirementRequest.md docs/SupportedBlockChainsResponse.md docs/SupportedBlockchain.md docs/SwiftAddress.md @@ -976,12 +996,14 @@ docs/TokenizationApi.md docs/TokensPaginatedResponse.md docs/TotalSupplyItemDto.md docs/TotalSupplyPagedResponse.md +docs/TotalSupplyPagedResponse2.md docs/TrLinkApi.md docs/TradingAccountType.md docs/TradingBetaApi.md docs/TradingErrorSchema.md docs/TradingProvider.md docs/Transaction.md +docs/TransactionConfigurations.md docs/TransactionDirection.md docs/TransactionFee.md docs/TransactionOperation.md @@ -1015,6 +1037,7 @@ docs/TransferPeerPathSubType.md docs/TransferPeerPathType.md docs/TransferPeerSubTypeEnum.md docs/TransferPeerTypeEnum.md +docs/TransferPeerTypeEnum2.md docs/TransferRail.md docs/TransferReceipt.md docs/TransferValidationFailure.md @@ -1131,6 +1154,8 @@ docs/Web3ConnectionsApi.md docs/Webhook.md docs/WebhookEvent.md docs/WebhookMetric.md +docs/WebhookMtls.md +docs/WebhookMtlsCsrResponse.md docs/WebhookPaginatedResponse.md docs/WebhooksApi.md docs/WebhooksV2Api.md @@ -1229,6 +1254,7 @@ src/main/java/com/fireblocks/sdk/model/AbiFunction.java src/main/java/com/fireblocks/sdk/model/AbstractOpenApiSchema.java src/main/java/com/fireblocks/sdk/model/AccessRegistryAddressItem.java src/main/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse.java +src/main/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2.java src/main/java/com/fireblocks/sdk/model/AccessRegistrySummaryResponse.java src/main/java/com/fireblocks/sdk/model/AccessType.java src/main/java/com/fireblocks/sdk/model/Account.java @@ -1247,6 +1273,7 @@ src/main/java/com/fireblocks/sdk/model/AchAddress.java src/main/java/com/fireblocks/sdk/model/AchDestination.java src/main/java/com/fireblocks/sdk/model/AchPaymentInfo.java src/main/java/com/fireblocks/sdk/model/ActionRecord.java +src/main/java/com/fireblocks/sdk/model/ActiveRolesResponse.java src/main/java/com/fireblocks/sdk/model/AdapterProcessingResult.java src/main/java/com/fireblocks/sdk/model/AddAbiRequestDto.java src/main/java/com/fireblocks/sdk/model/AddAssetToExternalWalletRequest.java @@ -1261,6 +1288,7 @@ src/main/java/com/fireblocks/sdk/model/AdditionalInfoRequest.java src/main/java/com/fireblocks/sdk/model/AdditionalInfoRequestAdditionalInfo.java src/main/java/com/fireblocks/sdk/model/AddressBalanceItemDto.java src/main/java/com/fireblocks/sdk/model/AddressBalancePagedResponse.java +src/main/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2.java 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 @@ -1278,6 +1306,10 @@ src/main/java/com/fireblocks/sdk/model/AddressRegistryVaultOptOutItem.java src/main/java/com/fireblocks/sdk/model/AddressReverseLookupResponse.java src/main/java/com/fireblocks/sdk/model/AlertExposureTypeEnum.java src/main/java/com/fireblocks/sdk/model/AlertLevelEnum.java +src/main/java/com/fireblocks/sdk/model/AllowlistEntry.java +src/main/java/com/fireblocks/sdk/model/AllowlistEntryStatus.java +src/main/java/com/fireblocks/sdk/model/AllowlistMetadata.java +src/main/java/com/fireblocks/sdk/model/AllowlistResponse.java src/main/java/com/fireblocks/sdk/model/AmlAlert.java src/main/java/com/fireblocks/sdk/model/AmlMatchedRule.java src/main/java/com/fireblocks/sdk/model/AmlRegistrationResult.java @@ -1341,6 +1373,7 @@ src/main/java/com/fireblocks/sdk/model/AuthorizationGroups.java src/main/java/com/fireblocks/sdk/model/AuthorizationInfo.java src/main/java/com/fireblocks/sdk/model/BalanceHistoryItemDto.java src/main/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse.java +src/main/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2.java src/main/java/com/fireblocks/sdk/model/BankAddress.java src/main/java/com/fireblocks/sdk/model/BaseProvider.java src/main/java/com/fireblocks/sdk/model/BasicAddressRequest.java @@ -1411,6 +1444,7 @@ src/main/java/com/fireblocks/sdk/model/ConnectedAccountTotalBalance.java src/main/java/com/fireblocks/sdk/model/ConnectedAccountTradingPair.java src/main/java/com/fireblocks/sdk/model/ConnectedAccountTradingPairSupportedType.java src/main/java/com/fireblocks/sdk/model/ConnectedAccountTradingPairsResponse.java +src/main/java/com/fireblocks/sdk/model/ConnectedAccountType.java src/main/java/com/fireblocks/sdk/model/ConnectedAccountsResponse.java src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccount.java src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponse.java @@ -1779,6 +1813,9 @@ src/main/java/com/fireblocks/sdk/model/Offer.java src/main/java/com/fireblocks/sdk/model/OffersResponse.java src/main/java/com/fireblocks/sdk/model/OnchainTransaction.java src/main/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse.java +src/main/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2.java +src/main/java/com/fireblocks/sdk/model/OnchainTransferEvent.java +src/main/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponse.java src/main/java/com/fireblocks/sdk/model/OneTimeAddress.java src/main/java/com/fireblocks/sdk/model/OneTimeAddressAccount.java src/main/java/com/fireblocks/sdk/model/OneTimeAddressPeerType.java @@ -1787,6 +1824,9 @@ src/main/java/com/fireblocks/sdk/model/OperationExecutionFailure.java src/main/java/com/fireblocks/sdk/model/Opportunity.java src/main/java/com/fireblocks/sdk/model/OrderDetails.java src/main/java/com/fireblocks/sdk/model/OrderExecutionStep.java +src/main/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileType.java +src/main/java/com/fireblocks/sdk/model/OrderRequirementDetails.java +src/main/java/com/fireblocks/sdk/model/OrderRequirementFile.java src/main/java/com/fireblocks/sdk/model/OrderSide.java src/main/java/com/fireblocks/sdk/model/OrderStatus.java src/main/java/com/fireblocks/sdk/model/OrderSummary.java @@ -1827,6 +1867,7 @@ src/main/java/com/fireblocks/sdk/model/PeerAdapterInfo.java src/main/java/com/fireblocks/sdk/model/PeerType.java src/main/java/com/fireblocks/sdk/model/PersonalEntityTypeEnum.java src/main/java/com/fireblocks/sdk/model/PersonalIdentification.java +src/main/java/com/fireblocks/sdk/model/PersonalIdentificationDocument.java src/main/java/com/fireblocks/sdk/model/PersonalIdentificationFullName.java src/main/java/com/fireblocks/sdk/model/PersonalIdentificationType.java src/main/java/com/fireblocks/sdk/model/PixAddress.java @@ -1852,6 +1893,7 @@ src/main/java/com/fireblocks/sdk/model/PolicyVerdictActionEnum.java 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/PostalAddress.java src/main/java/com/fireblocks/sdk/model/PreScreening.java src/main/java/com/fireblocks/sdk/model/PrefundedSettlement.java @@ -1915,6 +1957,7 @@ src/main/java/com/fireblocks/sdk/model/RetryRequoteTypeEnum.java src/main/java/com/fireblocks/sdk/model/RewardInfo.java src/main/java/com/fireblocks/sdk/model/RewardsInfo.java src/main/java/com/fireblocks/sdk/model/RoleDetails.java +src/main/java/com/fireblocks/sdk/model/RoleDetails2.java src/main/java/com/fireblocks/sdk/model/RoleGrantee.java src/main/java/com/fireblocks/sdk/model/SEPAAddress.java src/main/java/com/fireblocks/sdk/model/SEPADestination.java @@ -2033,10 +2076,12 @@ src/main/java/com/fireblocks/sdk/model/StEthBlockchainData.java src/main/java/com/fireblocks/sdk/model/StakeRequest.java src/main/java/com/fireblocks/sdk/model/StakeResponse.java src/main/java/com/fireblocks/sdk/model/StakingErrorSchema.java +src/main/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponse.java src/main/java/com/fireblocks/sdk/model/StakingPositionsPaginatedResponse.java src/main/java/com/fireblocks/sdk/model/StakingProvider.java src/main/java/com/fireblocks/sdk/model/Status.java src/main/java/com/fireblocks/sdk/model/StellarRippleCreateParamsDto.java +src/main/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequest.java src/main/java/com/fireblocks/sdk/model/SupportedBlockChainsResponse.java src/main/java/com/fireblocks/sdk/model/SupportedBlockchain.java src/main/java/com/fireblocks/sdk/model/SwiftAddress.java @@ -2157,10 +2202,12 @@ src/main/java/com/fireblocks/sdk/model/TokenResponse.java src/main/java/com/fireblocks/sdk/model/TokensPaginatedResponse.java src/main/java/com/fireblocks/sdk/model/TotalSupplyItemDto.java src/main/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse.java +src/main/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2.java src/main/java/com/fireblocks/sdk/model/TradingAccountType.java src/main/java/com/fireblocks/sdk/model/TradingErrorSchema.java src/main/java/com/fireblocks/sdk/model/TradingProvider.java src/main/java/com/fireblocks/sdk/model/Transaction.java +src/main/java/com/fireblocks/sdk/model/TransactionConfigurations.java src/main/java/com/fireblocks/sdk/model/TransactionDirection.java src/main/java/com/fireblocks/sdk/model/TransactionFee.java src/main/java/com/fireblocks/sdk/model/TransactionOperation.java @@ -2193,6 +2240,7 @@ src/main/java/com/fireblocks/sdk/model/TransferPeerPathSubType.java src/main/java/com/fireblocks/sdk/model/TransferPeerPathType.java src/main/java/com/fireblocks/sdk/model/TransferPeerSubTypeEnum.java src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum.java +src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2.java src/main/java/com/fireblocks/sdk/model/TransferRail.java src/main/java/com/fireblocks/sdk/model/TransferReceipt.java src/main/java/com/fireblocks/sdk/model/TransferValidationFailure.java @@ -2303,6 +2351,8 @@ 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/WebhookMtlsCsrResponse.java src/main/java/com/fireblocks/sdk/model/WebhookPaginatedResponse.java src/main/java/com/fireblocks/sdk/model/WithdrawRequest.java src/main/java/com/fireblocks/sdk/model/WorkflowConfigStatus.java @@ -2373,6 +2423,7 @@ src/test/java/com/fireblocks/sdk/model/APIUserTest.java src/test/java/com/fireblocks/sdk/model/AbaPaymentInfoTest.java src/test/java/com/fireblocks/sdk/model/AbiFunctionTest.java src/test/java/com/fireblocks/sdk/model/AccessRegistryAddressItemTest.java +src/test/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2Test.java src/test/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponseTest.java src/test/java/com/fireblocks/sdk/model/AccessRegistrySummaryResponseTest.java src/test/java/com/fireblocks/sdk/model/AccessTypeTest.java @@ -2392,6 +2443,7 @@ src/test/java/com/fireblocks/sdk/model/AchAddressTest.java src/test/java/com/fireblocks/sdk/model/AchDestinationTest.java src/test/java/com/fireblocks/sdk/model/AchPaymentInfoTest.java src/test/java/com/fireblocks/sdk/model/ActionRecordTest.java +src/test/java/com/fireblocks/sdk/model/ActiveRolesResponseTest.java src/test/java/com/fireblocks/sdk/model/AdapterProcessingResultTest.java src/test/java/com/fireblocks/sdk/model/AddAbiRequestDtoTest.java src/test/java/com/fireblocks/sdk/model/AddAssetToExternalWalletRequestTest.java @@ -2405,6 +2457,7 @@ src/test/java/com/fireblocks/sdk/model/AdditionalInfoRequestAdditionalInfoTest.j src/test/java/com/fireblocks/sdk/model/AdditionalInfoRequestTest.java src/test/java/com/fireblocks/sdk/model/AdditionalInfoTest.java src/test/java/com/fireblocks/sdk/model/AddressBalanceItemDtoTest.java +src/test/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2Test.java src/test/java/com/fireblocks/sdk/model/AddressBalancePagedResponseTest.java src/test/java/com/fireblocks/sdk/model/AddressNotAvailableErrorTest.java src/test/java/com/fireblocks/sdk/model/AddressRegistryAddVaultOptOutsRequestTest.java @@ -2423,6 +2476,10 @@ src/test/java/com/fireblocks/sdk/model/AddressRegistryVaultOptOutItemTest.java src/test/java/com/fireblocks/sdk/model/AddressReverseLookupResponseTest.java src/test/java/com/fireblocks/sdk/model/AlertExposureTypeEnumTest.java src/test/java/com/fireblocks/sdk/model/AlertLevelEnumTest.java +src/test/java/com/fireblocks/sdk/model/AllowlistEntryStatusTest.java +src/test/java/com/fireblocks/sdk/model/AllowlistEntryTest.java +src/test/java/com/fireblocks/sdk/model/AllowlistMetadataTest.java +src/test/java/com/fireblocks/sdk/model/AllowlistResponseTest.java src/test/java/com/fireblocks/sdk/model/AmlAlertTest.java src/test/java/com/fireblocks/sdk/model/AmlMatchedRuleTest.java src/test/java/com/fireblocks/sdk/model/AmlRegistrationResultFullPayloadTest.java @@ -2485,6 +2542,7 @@ src/test/java/com/fireblocks/sdk/model/AuditorDataTest.java src/test/java/com/fireblocks/sdk/model/AuthorizationGroupsTest.java src/test/java/com/fireblocks/sdk/model/AuthorizationInfoTest.java src/test/java/com/fireblocks/sdk/model/BalanceHistoryItemDtoTest.java +src/test/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2Test.java src/test/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponseTest.java src/test/java/com/fireblocks/sdk/model/BankAddressTest.java src/test/java/com/fireblocks/sdk/model/BaseProviderTest.java @@ -2556,6 +2614,7 @@ src/test/java/com/fireblocks/sdk/model/ConnectedAccountTotalBalanceTest.java src/test/java/com/fireblocks/sdk/model/ConnectedAccountTradingPairSupportedTypeTest.java src/test/java/com/fireblocks/sdk/model/ConnectedAccountTradingPairTest.java src/test/java/com/fireblocks/sdk/model/ConnectedAccountTradingPairsResponseTest.java +src/test/java/com/fireblocks/sdk/model/ConnectedAccountTypeTest.java src/test/java/com/fireblocks/sdk/model/ConnectedAccountsResponseTest.java src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponseTest.java src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountTest.java @@ -2923,7 +2982,10 @@ src/test/java/com/fireblocks/sdk/model/NotificationWithDataTest.java src/test/java/com/fireblocks/sdk/model/OfferTest.java src/test/java/com/fireblocks/sdk/model/OffersResponseTest.java src/test/java/com/fireblocks/sdk/model/OnchainTransactionTest.java +src/test/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2Test.java src/test/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponseTest.java +src/test/java/com/fireblocks/sdk/model/OnchainTransferEventTest.java +src/test/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponseTest.java src/test/java/com/fireblocks/sdk/model/OneTimeAddressAccountTest.java src/test/java/com/fireblocks/sdk/model/OneTimeAddressPeerTypeTest.java src/test/java/com/fireblocks/sdk/model/OneTimeAddressReferenceTest.java @@ -2932,6 +2994,9 @@ src/test/java/com/fireblocks/sdk/model/OperationExecutionFailureTest.java src/test/java/com/fireblocks/sdk/model/OpportunityTest.java src/test/java/com/fireblocks/sdk/model/OrderDetailsTest.java src/test/java/com/fireblocks/sdk/model/OrderExecutionStepTest.java +src/test/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileTypeTest.java +src/test/java/com/fireblocks/sdk/model/OrderRequirementDetailsTest.java +src/test/java/com/fireblocks/sdk/model/OrderRequirementFileTest.java src/test/java/com/fireblocks/sdk/model/OrderSideTest.java src/test/java/com/fireblocks/sdk/model/OrderStatusTest.java src/test/java/com/fireblocks/sdk/model/OrderSummaryTest.java @@ -2971,6 +3036,7 @@ src/test/java/com/fireblocks/sdk/model/PayoutStatusTest.java src/test/java/com/fireblocks/sdk/model/PeerAdapterInfoTest.java src/test/java/com/fireblocks/sdk/model/PeerTypeTest.java src/test/java/com/fireblocks/sdk/model/PersonalEntityTypeEnumTest.java +src/test/java/com/fireblocks/sdk/model/PersonalIdentificationDocumentTest.java src/test/java/com/fireblocks/sdk/model/PersonalIdentificationFullNameTest.java src/test/java/com/fireblocks/sdk/model/PersonalIdentificationTest.java src/test/java/com/fireblocks/sdk/model/PersonalIdentificationTypeTest.java @@ -2996,6 +3062,7 @@ src/test/java/com/fireblocks/sdk/model/PolicyValidationTest.java src/test/java/com/fireblocks/sdk/model/PolicyVerdictActionEnum2Test.java 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/PostalAddressTest.java src/test/java/com/fireblocks/sdk/model/PreScreeningTest.java @@ -3059,6 +3126,7 @@ src/test/java/com/fireblocks/sdk/model/RetryRequoteRequestDetailsTest.java src/test/java/com/fireblocks/sdk/model/RetryRequoteTypeEnumTest.java src/test/java/com/fireblocks/sdk/model/RewardInfoTest.java src/test/java/com/fireblocks/sdk/model/RewardsInfoTest.java +src/test/java/com/fireblocks/sdk/model/RoleDetails2Test.java src/test/java/com/fireblocks/sdk/model/RoleDetailsTest.java src/test/java/com/fireblocks/sdk/model/RoleGranteeTest.java src/test/java/com/fireblocks/sdk/model/SEPAAddressTest.java @@ -3178,10 +3246,12 @@ src/test/java/com/fireblocks/sdk/model/StEthBlockchainDataTest.java src/test/java/com/fireblocks/sdk/model/StakeRequestTest.java src/test/java/com/fireblocks/sdk/model/StakeResponseTest.java src/test/java/com/fireblocks/sdk/model/StakingErrorSchemaTest.java +src/test/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponseTest.java src/test/java/com/fireblocks/sdk/model/StakingPositionsPaginatedResponseTest.java src/test/java/com/fireblocks/sdk/model/StakingProviderTest.java src/test/java/com/fireblocks/sdk/model/StatusTest.java src/test/java/com/fireblocks/sdk/model/StellarRippleCreateParamsDtoTest.java +src/test/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequestTest.java src/test/java/com/fireblocks/sdk/model/SupportedBlockChainsResponseTest.java src/test/java/com/fireblocks/sdk/model/SupportedBlockchainTest.java src/test/java/com/fireblocks/sdk/model/SwiftAddressTest.java @@ -3301,10 +3371,12 @@ src/test/java/com/fireblocks/sdk/model/TokenOwnershipStatusUpdatePayloadTest.jav src/test/java/com/fireblocks/sdk/model/TokenResponseTest.java src/test/java/com/fireblocks/sdk/model/TokensPaginatedResponseTest.java src/test/java/com/fireblocks/sdk/model/TotalSupplyItemDtoTest.java +src/test/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2Test.java src/test/java/com/fireblocks/sdk/model/TotalSupplyPagedResponseTest.java src/test/java/com/fireblocks/sdk/model/TradingAccountTypeTest.java src/test/java/com/fireblocks/sdk/model/TradingErrorSchemaTest.java src/test/java/com/fireblocks/sdk/model/TradingProviderTest.java +src/test/java/com/fireblocks/sdk/model/TransactionConfigurationsTest.java src/test/java/com/fireblocks/sdk/model/TransactionDirectionTest.java src/test/java/com/fireblocks/sdk/model/TransactionFeeTest.java src/test/java/com/fireblocks/sdk/model/TransactionOperationEnumTest.java @@ -3337,6 +3409,7 @@ src/test/java/com/fireblocks/sdk/model/TransferOperationTypeTest.java src/test/java/com/fireblocks/sdk/model/TransferPeerPathSubTypeTest.java src/test/java/com/fireblocks/sdk/model/TransferPeerPathTypeTest.java src/test/java/com/fireblocks/sdk/model/TransferPeerSubTypeEnumTest.java +src/test/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2Test.java src/test/java/com/fireblocks/sdk/model/TransferPeerTypeEnumTest.java src/test/java/com/fireblocks/sdk/model/TransferRailTest.java src/test/java/com/fireblocks/sdk/model/TransferReceiptTest.java @@ -3447,6 +3520,8 @@ 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/WebhookMtlsCsrResponseTest.java +src/test/java/com/fireblocks/sdk/model/WebhookMtlsTest.java src/test/java/com/fireblocks/sdk/model/WebhookPaginatedResponseTest.java src/test/java/com/fireblocks/sdk/model/WebhookTest.java src/test/java/com/fireblocks/sdk/model/WithdrawRequestTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 87ff9d8f..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). - -## [v20.0.0](https://github.com/fireblocks/java-sdk/compare/v15.0.0...v20.0.0) - 2026-06-02 - -### Merged - -- Generated SDK #2839 (major) [`#136`](https://github.com/fireblocks/java-sdk/pull/136) - -## [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 66c4c850..37b89ab9 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Add this dependency to your project's POM: com.fireblocks.sdk fireblocks-sdk - 20.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:20.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-20.0.0.jar` +- `target/fireblocks-sdk-0.0.0.jar` - `target/lib/*.jar` @@ -194,11 +194,14 @@ Class | Method | HTTP request | Description *ComplianceScreeningConfigurationApi* | [**getScreeningConfiguration**](docs/ComplianceScreeningConfigurationApi.md#getScreeningConfiguration) | **GET** /screening/travel_rule/policy_configuration | Get Travel Rule Screening Policy Configuration *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* | [**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 *ConsoleUserApi* | [**createConsoleUser**](docs/ConsoleUserApi.md#createConsoleUser) | **POST** /management/users | Create console user *ConsoleUserApi* | [**getConsoleUsers**](docs/ConsoleUserApi.md#getConsoleUsers) | **GET** /management/users | Get console users *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 @@ -390,6 +393,7 @@ Class | Method | HTTP request | Description *StakingApi* | [**getChainInfo**](docs/StakingApi.md#getChainInfo) | **GET** /staking/chains/{chainDescriptor}/chainInfo | Get chain-level staking parameters *StakingApi* | [**getChains**](docs/StakingApi.md#getChains) | **GET** /staking/chains | List supported staking chains *StakingApi* | [**getDelegationById**](docs/StakingApi.md#getDelegationById) | **GET** /staking/positions/{id} | Get position details +*StakingApi* | [**getPositionRelatedTransactions**](docs/StakingApi.md#getPositionRelatedTransactions) | **GET** /staking/positions/{id}/related_transactions | List related transactions for a position *StakingApi* | [**getPositions**](docs/StakingApi.md#getPositions) | **GET** /staking/positions_paginated | List staking positions (Paginated) *StakingApi* | [**getProviders**](docs/StakingApi.md#getProviders) | **GET** /staking/providers | List staking providers *StakingApi* | [**getSummary**](docs/StakingApi.md#getSummary) | **GET** /staking/positions/summary | Get positions summary @@ -419,6 +423,16 @@ Class | Method | HTTP request | Description *TokenizationApi* | [**getLinkedToken**](docs/TokenizationApi.md#getLinkedToken) | **GET** /tokenization/tokens/{id} | Return a linked token *TokenizationApi* | [**getLinkedTokens**](docs/TokenizationApi.md#getLinkedTokens) | **GET** /tokenization/tokens | List all linked tokens *TokenizationApi* | [**getLinkedTokensCount**](docs/TokenizationApi.md#getLinkedTokensCount) | **GET** /tokenization/tokens/count | Get the total count of linked tokens +*TokenizationApi* | [**getTokenAccessRegistryAddresses**](docs/TokenizationApi.md#getTokenAccessRegistryAddresses) | **GET** /tokenization/access_registries/{id}/addresses | Get current state of addresses in an access registry +*TokenizationApi* | [**getTokenAccessRegistrySummary**](docs/TokenizationApi.md#getTokenAccessRegistrySummary) | **GET** /tokenization/access_registries/{id}/summary | Get summary of an access registry +*TokenizationApi* | [**getTokenBalanceForAccount**](docs/TokenizationApi.md#getTokenBalanceForAccount) | **GET** /tokenization/tokens/{id}/balances/{accountAddress} | Get the latest balance for a specific account +*TokenizationApi* | [**getTokenBalanceHistory**](docs/TokenizationApi.md#getTokenBalanceHistory) | **GET** /tokenization/tokens/{id}/balances/{accountAddress}/history | Get balance history for a specific account +*TokenizationApi* | [**getTokenBalances**](docs/TokenizationApi.md#getTokenBalances) | **GET** /tokenization/tokens/{id}/balances | Get latest balances for all holders of a token +*TokenizationApi* | [**getTokenContractSummary**](docs/TokenizationApi.md#getTokenContractSummary) | **GET** /tokenization/tokens/{id}/summary | Get onchain summary for a token +*TokenizationApi* | [**getTokenRbac**](docs/TokenizationApi.md#getTokenRbac) | **GET** /tokenization/tokens/{id}/rbac | Get active RBAC roles for a token +*TokenizationApi* | [**getTokenTotalSupply**](docs/TokenizationApi.md#getTokenTotalSupply) | **GET** /tokenization/tokens/{id}/total_supply | Get historical total supply for a token +*TokenizationApi* | [**getTokenTransactions**](docs/TokenizationApi.md#getTokenTransactions) | **GET** /tokenization/tokens/{id}/transactions | Get onchain transactions for a token +*TokenizationApi* | [**getTokenTransfers**](docs/TokenizationApi.md#getTokenTransfers) | **GET** /tokenization/tokens/{id}/transfers | Get onchain transfers for a token *TokenizationApi* | [**issueNewToken**](docs/TokenizationApi.md#issueNewToken) | **POST** /tokenization/tokens | Issue a new token *TokenizationApi* | [**issueTokenMultiChain**](docs/TokenizationApi.md#issueTokenMultiChain) | **POST** /tokenization/multichain/tokens | Issue a token on one or more blockchains *TokenizationApi* | [**link**](docs/TokenizationApi.md#link) | **POST** /tokenization/tokens/link | Link a contract @@ -463,9 +477,12 @@ Class | Method | HTTP request | Description *TradingBetaApi* | [**fetchAllOffers**](docs/TradingBetaApi.md#fetchAllOffers) | **POST** /trading/offers | Get all offers *TradingBetaApi* | [**fetchRates**](docs/TradingBetaApi.md#fetchRates) | **POST** /trading/rates | Get rates *TradingBetaApi* | [**getOrder**](docs/TradingBetaApi.md#getOrder) | **GET** /trading/orders/{orderId} | Get order details +*TradingBetaApi* | [**getOrderRequirements**](docs/TradingBetaApi.md#getOrderRequirements) | **GET** /trading/orders/{orderId}/requirement | Get order requirement details for an order *TradingBetaApi* | [**getOrders**](docs/TradingBetaApi.md#getOrders) | **GET** /trading/orders | Get orders *TradingBetaApi* | [**getTradingProviderById**](docs/TradingBetaApi.md#getTradingProviderById) | **GET** /trading/providers/{providerId} | Get trading provider by ID *TradingBetaApi* | [**getTradingProviders**](docs/TradingBetaApi.md#getTradingProviders) | **GET** /trading/providers | Get providers +*TradingBetaApi* | [**submitOrderRequirements**](docs/TradingBetaApi.md#submitOrderRequirements) | **POST** /trading/orders/{orderId}/requirement/data | Submit a response to an order requirement +*TradingBetaApi* | [**uploadOrderRequirementFile**](docs/TradingBetaApi.md#uploadOrderRequirementFile) | **POST** /trading/orders/{orderId}/requirement/file | Upload a file for an order requirement *TransactionsApi* | [**cancelTransaction**](docs/TransactionsApi.md#cancelTransaction) | **POST** /transactions/{txId}/cancel | Cancel a transaction *TransactionsApi* | [**createTransaction**](docs/TransactionsApi.md#createTransaction) | **POST** /transactions | Create a new transaction *TransactionsApi* | [**dropTransaction**](docs/TransactionsApi.md#dropTransaction) | **POST** /transactions/{txId}/drop | Drop ETH (EVM) transaction by ID @@ -538,6 +555,7 @@ Class | Method | HTTP request | Description *WebhooksV2Api* | [**createWebhook**](docs/WebhooksV2Api.md#createWebhook) | **POST** /webhooks | Create a new webhook *WebhooksV2Api* | [**deleteWebhook**](docs/WebhooksV2Api.md#deleteWebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook *WebhooksV2Api* | [**getMetrics**](docs/WebhooksV2Api.md#getMetrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics +*WebhooksV2Api* | [**getMtlsCsr**](docs/WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks/mtls/csr | Get mTLS CSR *WebhooksV2Api* | [**getNotification**](docs/WebhooksV2Api.md#getNotification) | **GET** /webhooks/{webhookId}/notifications/{notificationId} | Get notification by id *WebhooksV2Api* | [**getNotificationAttempts**](docs/WebhooksV2Api.md#getNotificationAttempts) | **GET** /webhooks/{webhookId}/notifications/{notificationId}/attempts | Get notification attempts *WebhooksV2Api* | [**getNotifications**](docs/WebhooksV2Api.md#getNotifications) | **GET** /webhooks/{webhookId}/notifications | Get all notifications by webhook id @@ -562,6 +580,7 @@ Class | Method | HTTP request | Description - [AbiFunction](docs/AbiFunction.md) - [AccessRegistryAddressItem](docs/AccessRegistryAddressItem.md) - [AccessRegistryCurrentStateResponse](docs/AccessRegistryCurrentStateResponse.md) + - [AccessRegistryCurrentStateResponse2](docs/AccessRegistryCurrentStateResponse2.md) - [AccessRegistrySummaryResponse](docs/AccessRegistrySummaryResponse.md) - [AccessType](docs/AccessType.md) - [Account](docs/Account.md) @@ -580,6 +599,7 @@ Class | Method | HTTP request | Description - [AchDestination](docs/AchDestination.md) - [AchPaymentInfo](docs/AchPaymentInfo.md) - [ActionRecord](docs/ActionRecord.md) + - [ActiveRolesResponse](docs/ActiveRolesResponse.md) - [AdapterProcessingResult](docs/AdapterProcessingResult.md) - [AddAbiRequestDto](docs/AddAbiRequestDto.md) - [AddAssetToExternalWalletRequest](docs/AddAssetToExternalWalletRequest.md) @@ -594,6 +614,7 @@ Class | Method | HTTP request | Description - [AdditionalInfoRequestAdditionalInfo](docs/AdditionalInfoRequestAdditionalInfo.md) - [AddressBalanceItemDto](docs/AddressBalanceItemDto.md) - [AddressBalancePagedResponse](docs/AddressBalancePagedResponse.md) + - [AddressBalancePagedResponse2](docs/AddressBalancePagedResponse2.md) - [AddressNotAvailableError](docs/AddressNotAvailableError.md) - [AddressRegistryAddVaultOptOutsRequest](docs/AddressRegistryAddVaultOptOutsRequest.md) - [AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner](docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md) @@ -611,6 +632,10 @@ Class | Method | HTTP request | Description - [AddressReverseLookupResponse](docs/AddressReverseLookupResponse.md) - [AlertExposureTypeEnum](docs/AlertExposureTypeEnum.md) - [AlertLevelEnum](docs/AlertLevelEnum.md) + - [AllowlistEntry](docs/AllowlistEntry.md) + - [AllowlistEntryStatus](docs/AllowlistEntryStatus.md) + - [AllowlistMetadata](docs/AllowlistMetadata.md) + - [AllowlistResponse](docs/AllowlistResponse.md) - [AmlAlert](docs/AmlAlert.md) - [AmlMatchedRule](docs/AmlMatchedRule.md) - [AmlRegistrationResult](docs/AmlRegistrationResult.md) @@ -674,6 +699,7 @@ Class | Method | HTTP request | Description - [AuthorizationInfo](docs/AuthorizationInfo.md) - [BalanceHistoryItemDto](docs/BalanceHistoryItemDto.md) - [BalanceHistoryPagedResponse](docs/BalanceHistoryPagedResponse.md) + - [BalanceHistoryPagedResponse2](docs/BalanceHistoryPagedResponse2.md) - [BankAddress](docs/BankAddress.md) - [BaseProvider](docs/BaseProvider.md) - [BasicAddressRequest](docs/BasicAddressRequest.md) @@ -744,6 +770,7 @@ Class | Method | HTTP request | Description - [ConnectedAccountTradingPair](docs/ConnectedAccountTradingPair.md) - [ConnectedAccountTradingPairSupportedType](docs/ConnectedAccountTradingPairSupportedType.md) - [ConnectedAccountTradingPairsResponse](docs/ConnectedAccountTradingPairsResponse.md) + - [ConnectedAccountType](docs/ConnectedAccountType.md) - [ConnectedAccountsResponse](docs/ConnectedAccountsResponse.md) - [ConnectedSingleAccount](docs/ConnectedSingleAccount.md) - [ConnectedSingleAccountResponse](docs/ConnectedSingleAccountResponse.md) @@ -1112,6 +1139,9 @@ Class | Method | HTTP request | Description - [OffersResponse](docs/OffersResponse.md) - [OnchainTransaction](docs/OnchainTransaction.md) - [OnchainTransactionsPagedResponse](docs/OnchainTransactionsPagedResponse.md) + - [OnchainTransactionsPagedResponse2](docs/OnchainTransactionsPagedResponse2.md) + - [OnchainTransferEvent](docs/OnchainTransferEvent.md) + - [OnchainTransfersPagedResponse](docs/OnchainTransfersPagedResponse.md) - [OneTimeAddress](docs/OneTimeAddress.md) - [OneTimeAddressAccount](docs/OneTimeAddressAccount.md) - [OneTimeAddressPeerType](docs/OneTimeAddressPeerType.md) @@ -1120,6 +1150,9 @@ Class | Method | HTTP request | Description - [Opportunity](docs/Opportunity.md) - [OrderDetails](docs/OrderDetails.md) - [OrderExecutionStep](docs/OrderExecutionStep.md) + - [OrderRequirementAllowedFileType](docs/OrderRequirementAllowedFileType.md) + - [OrderRequirementDetails](docs/OrderRequirementDetails.md) + - [OrderRequirementFile](docs/OrderRequirementFile.md) - [OrderSide](docs/OrderSide.md) - [OrderStatus](docs/OrderStatus.md) - [OrderSummary](docs/OrderSummary.md) @@ -1160,6 +1193,7 @@ Class | Method | HTTP request | Description - [PeerType](docs/PeerType.md) - [PersonalEntityTypeEnum](docs/PersonalEntityTypeEnum.md) - [PersonalIdentification](docs/PersonalIdentification.md) + - [PersonalIdentificationDocument](docs/PersonalIdentificationDocument.md) - [PersonalIdentificationFullName](docs/PersonalIdentificationFullName.md) - [PersonalIdentificationType](docs/PersonalIdentificationType.md) - [PixAddress](docs/PixAddress.md) @@ -1185,6 +1219,7 @@ Class | Method | HTTP request | Description - [PolicyVerdictActionEnum2](docs/PolicyVerdictActionEnum2.md) - [Position](docs/Position.md) - [Position2](docs/Position2.md) + - [PositionRelatedTransaction](docs/PositionRelatedTransaction.md) - [PostalAddress](docs/PostalAddress.md) - [PreScreening](docs/PreScreening.md) - [PrefundedSettlement](docs/PrefundedSettlement.md) @@ -1248,6 +1283,7 @@ Class | Method | HTTP request | Description - [RewardInfo](docs/RewardInfo.md) - [RewardsInfo](docs/RewardsInfo.md) - [RoleDetails](docs/RoleDetails.md) + - [RoleDetails2](docs/RoleDetails2.md) - [RoleGrantee](docs/RoleGrantee.md) - [SEPAAddress](docs/SEPAAddress.md) - [SEPADestination](docs/SEPADestination.md) @@ -1366,10 +1402,12 @@ Class | Method | HTTP request | Description - [StakeRequest](docs/StakeRequest.md) - [StakeResponse](docs/StakeResponse.md) - [StakingErrorSchema](docs/StakingErrorSchema.md) + - [StakingPositionRelatedTransactionsPaginatedResponse](docs/StakingPositionRelatedTransactionsPaginatedResponse.md) - [StakingPositionsPaginatedResponse](docs/StakingPositionsPaginatedResponse.md) - [StakingProvider](docs/StakingProvider.md) - [Status](docs/Status.md) - [StellarRippleCreateParamsDto](docs/StellarRippleCreateParamsDto.md) + - [SubmitOrderRequirementRequest](docs/SubmitOrderRequirementRequest.md) - [SupportedBlockChainsResponse](docs/SupportedBlockChainsResponse.md) - [SupportedBlockchain](docs/SupportedBlockchain.md) - [SwiftAddress](docs/SwiftAddress.md) @@ -1490,10 +1528,12 @@ Class | Method | HTTP request | Description - [TokensPaginatedResponse](docs/TokensPaginatedResponse.md) - [TotalSupplyItemDto](docs/TotalSupplyItemDto.md) - [TotalSupplyPagedResponse](docs/TotalSupplyPagedResponse.md) + - [TotalSupplyPagedResponse2](docs/TotalSupplyPagedResponse2.md) - [TradingAccountType](docs/TradingAccountType.md) - [TradingErrorSchema](docs/TradingErrorSchema.md) - [TradingProvider](docs/TradingProvider.md) - [Transaction](docs/Transaction.md) + - [TransactionConfigurations](docs/TransactionConfigurations.md) - [TransactionDirection](docs/TransactionDirection.md) - [TransactionFee](docs/TransactionFee.md) - [TransactionOperation](docs/TransactionOperation.md) @@ -1526,6 +1566,7 @@ Class | Method | HTTP request | Description - [TransferPeerPathType](docs/TransferPeerPathType.md) - [TransferPeerSubTypeEnum](docs/TransferPeerSubTypeEnum.md) - [TransferPeerTypeEnum](docs/TransferPeerTypeEnum.md) + - [TransferPeerTypeEnum2](docs/TransferPeerTypeEnum2.md) - [TransferRail](docs/TransferRail.md) - [TransferReceipt](docs/TransferReceipt.md) - [TransferValidationFailure](docs/TransferValidationFailure.md) @@ -1636,6 +1677,8 @@ Class | Method | HTTP request | Description - [Webhook](docs/Webhook.md) - [WebhookEvent](docs/WebhookEvent.md) - [WebhookMetric](docs/WebhookMetric.md) + - [WebhookMtls](docs/WebhookMtls.md) + - [WebhookMtlsCsrResponse](docs/WebhookMtlsCsrResponse.md) - [WebhookPaginatedResponse](docs/WebhookPaginatedResponse.md) - [WithdrawRequest](docs/WithdrawRequest.md) - [WorkflowConfigStatus](docs/WorkflowConfigStatus.md) diff --git a/api/openapi.yaml b/api/openapi.yaml index 7af2511b..2f2baa78 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -6239,6 +6239,294 @@ paths: \ page_size, page_cursor);" x-accepts: - application/json + /connected_accounts/{accountId}/allowlist: + get: + 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 accounts only. + operationId: getConnectedAccountAllowlist + parameters: + - description: The connected account identifier + explode: false + in: path + name: accountId + required: true + schema: + type: string + style: simple + - description: Filter by allowlist entry status + explode: true + in: query + name: status + required: false + schema: + $ref: "#/components/schemas/AllowlistEntryStatus" + style: form + - description: | + Filter by Fireblocks asset ID. + + See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs. + explode: true + in: query + name: assetId + required: false + schema: + type: string + style: form + - description: | + Filter by Fireblocks network ID. + + See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers. + explode: true + in: query + name: networkId + required: false + schema: + type: string + style: form + - description: Filter by specific address + explode: true + in: query + name: address + required: false + schema: + type: string + style: form + - description: Pagination cursor for next page + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Maximum number of entries to return + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 1000 + minimum: 1 + type: integer + style: form + - description: Field to sort results by. + explode: true + in: query + name: sortBy + required: false + schema: + default: addedAt + enum: + - addedAt + - lastSyncedAt + type: string + style: form + - description: Sort order (ASC or DESC). + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + example: ASC + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/AllowlistResponse" + description: Allowlist entries response + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ConnectedAccountErrorResponse" + description: Connected account not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get allowlist for connected account + tags: + - Connected Accounts (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> =\ + \ fireblocks.connectedAccountsBeta.getConnectedAccountAllowlist(connectedAccountsBetaApiGetConnectedAccountAllowlistRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId,\ + \ status, assetId, networkId, address, pageCursor, pageSize, sortBy, order);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist(account_id,\ + \ status, asset_id, network_id, address, page_cursor, page_size, sort_by,\ + \ order);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> =\ + \ fireblocks.connectedAccountsBeta.getConnectedAccountAllowlist(connectedAccountsBetaApiGetConnectedAccountAllowlistRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId,\ + \ status, assetId, networkId, address, pageCursor, pageSize, sortBy, order);" + - lang: Python + source: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist(account_id,\ + \ status, asset_id, network_id, address, page_cursor, page_size, sort_by,\ + \ order);" + x-accepts: + - application/json + /connected_accounts/{accountId}/allowlist/sync: + post: + description: | + 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 accounts only. + operationId: syncConnectedAccountAllowlist + 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 + - description: The connected account identifier + explode: false + in: path + name: accountId + required: true + schema: + type: string + style: simple + responses: + "202": + description: Sync request accepted and processing + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Sync allowlist for connected account + tags: + - Connected Accounts (Beta) + x-rate-limit-category: async + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.connectedAccountsBeta.syncConnectedAccountAllowlist(connectedAccountsBetaApiSyncConnectedAccountAllowlistRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.connected_accounts_beta.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);" + - lang: Java + source: "CompletableFuture> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.connected_accounts_beta.sync_connected_account_allowlist(account_id,\ + \ idempotency_key);" + x-accepts: + - application/json + /connected_accounts/{accountId}/allowlist/{allowlistId}: + get: + 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 accounts only. + operationId: getConnectedAccountAllowlistEntry + parameters: + - description: The connected account identifier + explode: false + in: path + name: accountId + required: true + schema: + type: string + style: simple + - description: The Fireblocks allowlist entry identifier + explode: false + in: path + name: allowlistId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/AllowlistEntry" + description: Allowlist entry response + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ConnectedAccountErrorResponse" + description: Connected account or allowlist entry not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get a single allowlist entry for a connected account + tags: + - Connected Accounts (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlistEntry(connectedAccountsBetaApiGetConnectedAccountAllowlistEntryRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId,\ + \ allowlistId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.connected_accounts_beta.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);" + - lang: Java + source: "CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId,\ + \ allowlistId);" + - lang: Python + source: "response = fireblocks.connected_accounts_beta.get_connected_account_allowlist_entry(account_id,\ + \ allowlist_id);" + x-accepts: + - application/json /counterparty_groups: get: description: | @@ -10728,6 +11016,7 @@ paths: - UNKNOWN - GAS_STATION - END_USER_WALLET + - WALLET_POOL type: string style: form - description: The source ID of the transaction @@ -13860,6 +14149,51 @@ paths: x-content-type: application/json x-accepts: - application/json + /webhooks/mtls/csr: + get: + description: | + Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. + operationId: getMtlsCsr + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WebhookMtlsCsrResponse" + description: The mTLS CSR PEM + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get mTLS CSR + tags: + - Webhooks V2 + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.webhooksV2.getMtlsCsr();" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = + fireblocks.webhooksV2().getMtlsCsr(); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.webhooks_v2.get_mtls_csr(); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.webhooksV2.getMtlsCsr();" + - lang: Java + source: CompletableFuture> response = + fireblocks.webhooksV2().getMtlsCsr(); + - lang: Python + source: response = fireblocks.webhooks_v2.get_mtls_csr(); + x-accepts: + - application/json /webhooks/{webhookId}: delete: description: | @@ -16186,880 +16520,907 @@ paths: source: response = fireblocks.tokenization.get_linked_token(id); x-accepts: - application/json - /tokenization/multichain/deterministic_address: - post: - description: Get a deterministic address for contract deployment. The address - is derived from the contract's bytecode and provided salt. This endpoint - is used to get the address of a contract that will be deployed in the future. - operationId: getDeployableAddress + /tokenization/access_registries/{id}/addresses: + get: + description: Returns the currently active addresses in the access registry (added + but not removed). + operationId: getTokenAccessRegistryAddresses 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." + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDeployableAddressRequest" - required: true + - description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more than 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). + explode: true + in: query + name: sortBy + required: false + schema: + default: dateAdded + enum: + - dateAdded + - address + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/DeployableAddressResponse" - description: Deterministic address for contract deployment - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/InvalidParamaterValueError" - description: Invalid parameters or template has no bytecode - "409": - content: - application/json: - schema: - $ref: "#/components/schemas/AddressNotAvailableError" - description: Address is already taken + $ref: "#/components/schemas/AccessRegistryCurrentStateResponse" + description: Access registry addresses retrieved successfully default: $ref: "#/components/responses/Error" - summary: Get deterministic address for contract deployment + summary: Get current state of addresses in an access registry tags: - Tokenization - x-rate-limit-category: read + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: |- - const payload = { - chainDescriptor: "ETH", - templateId: "b70701f4-d7b1-4795-a8ee-b09cdb5b850d", - initParams: [ - { name: "name", type: "string", value: "TokenName" }, - { name: "symbol", type: "string", value: "TokenSymbol" }, - { - name: "customConfigProps", - type: "tuple", - components: [ - { name: "_isMintable", type: "bool" } - ], - value: [{ _isMintable: false }] - } - ], - salt: "123456789" - }; const address = await fireblocks.getDeterministicAddress(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.getDeployableAddress(tokenizationApiGetDeployableAddressRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenAccessRegistryAddresses(tokenizationApiGetTokenAccessRegistryAddressesRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().getDeployableAddress(getDeployableAddressRequest,\ - \ idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.tokenization().getTokenAccessRegistryAddresses(id,\ + \ pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.get_deployable_address(get_deployable_address_request,\ - \ idempotency_key);" + code: "response = fireblocks.tokenization.get_token_access_registry_addresses(id,\ + \ page_cursor, page_size, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.getDeployableAddress(tokenizationApiGetDeployableAddressRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenAccessRegistryAddresses(tokenizationApiGetTokenAccessRegistryAddressesRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().getDeployableAddress(getDeployableAddressRequest,\ - \ idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.tokenization().getTokenAccessRegistryAddresses(id,\ + \ pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.tokenization.get_deployable_address(get_deployable_address_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.tokenization.get_token_access_registry_addresses(id,\ + \ page_cursor, page_size, sort_by, order);" x-accepts: - application/json - /tokenization/multichain/tokens: - post: - description: Facilitates the creation of a new token on one or more blockchains. - operationId: issueTokenMultiChain + /tokenization/access_registries/{id}/summary: + get: + description: Returns a summary of the current state of the access registry. + operationId: getTokenAccessRegistrySummary 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." + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateMultichainTokenRequest" - required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/IssueTokenMultichainResponse" - description: Tokens were created successfully - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/InvalidParamaterValueError" - description: Invalid input. - "409": + "200": content: application/json: schema: - $ref: "#/components/schemas/AddressNotAvailableError" - description: Address is already taken. - summary: Issue a token on one or more blockchains + $ref: "#/components/schemas/AccessRegistrySummaryResponse" + description: Access registry summary retrieved successfully + default: + $ref: "#/components/responses/Error" + summary: Get summary of an access registry tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: read x-readme: code-samples: - - language: javascript - code: |- - const payload = { - vaultAccountId: "0", - createParams: { - contractId: "b70701f4-d7b1-4795-a8ee-b09cdb5b850d", - deployFunctionParams: [ - { name: "name", type: "string", value: "TokenName" }, - { name: "symbol", type: "string", value: "TokenSymbol" }, - { - name: "customConfigProps", - type: "tuple", - components: [ - { name: "_isMintable", type: "bool" } - ], - value: [{ _isMintable: false }] - }, - ], - }, - salt: "123456789", - chains: ["ETH", "POLYGON"] - }; const token = await fireblocks.issueTokenMultiChain(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.issueTokenMultiChain(tokenizationApiIssueTokenMultiChainRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenAccessRegistrySummary(tokenizationApiGetTokenAccessRegistrySummaryRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>> response = fireblocks.tokenization().issueTokenMultiChain(createMultichainTokenRequest,\ - \ idempotencyKey);" + code: CompletableFuture> response + = fireblocks.tokenization().getTokenAccessRegistrySummary(id); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.issue_token_multi_chain(create_multichain_token_request,\ - \ idempotency_key);" + code: response = fireblocks.tokenization.get_token_access_registry_summary(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.issueTokenMultiChain(tokenizationApiIssueTokenMultiChainRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenAccessRegistrySummary(tokenizationApiGetTokenAccessRegistrySummaryRequest);" - lang: Java - source: "CompletableFuture>> response = fireblocks.tokenization().issueTokenMultiChain(createMultichainTokenRequest,\ - \ idempotencyKey);" + source: CompletableFuture> response + = fireblocks.tokenization().getTokenAccessRegistrySummary(id); - lang: Python - source: "response = fireblocks.tokenization.issue_token_multi_chain(create_multichain_token_request,\ - \ idempotency_key);" - x-content-type: application/json + source: response = fireblocks.tokenization.get_token_access_registry_summary(id); x-accepts: - application/json - /tokenization/multichain/reissue/token/{tokenLinkId}: - post: - description: Reissue a multichain token. This endpoint allows you to reissue - a token on one or more blockchains. The token must be initially issued using - the issueTokenMultiChain endpoint. - operationId: reIssueTokenMultiChain + /tokenization/tokens/{id}/summary: + get: + description: Returns the total number of unique holders and the total supply + for the token contract. + operationId: getTokenContractSummary 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 - - description: The ID of the token link + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: tokenLinkId + name: id required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ReissueMultichainTokenRequest" - required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/IssueTokenMultichainResponse" - description: Successfully reissued multichain token - "400": + "200": content: application/json: schema: - $ref: "#/components/schemas/TokenLinkNotMultichainCompatibleHttpError" - description: Invalid input + $ref: "#/components/schemas/TokenContractSummaryResponse" + description: Successfully retrieved the summary for the token contract "404": content: application/json: schema: - $ref: "#/components/schemas/DeployedContractNotFoundError" - description: Deployed contract not found - "409": - content: - application/json: - schema: - $ref: "#/components/schemas/AddressNotAvailableError" - description: Address is already taken + $ref: "#/components/schemas/NotFoundException" + description: Token not found default: $ref: "#/components/responses/Error" - summary: Reissue a multichain token + summary: Get onchain summary for a token tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: read x-readme: code-samples: - - language: javascript - code: |- - const payload = { - vaultAccountId: "0", - chains: "ETH", - salt: "123456789", - chains: ["ETH", "POLYGON"] - }; const token = await fireblocks.reIssueTokenMultiChain(tokenLinkId, payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.reIssueTokenMultiChain(tokenizationApiReIssueTokenMultiChainRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenContractSummary(tokenizationApiGetTokenContractSummaryRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>> response = fireblocks.tokenization().reIssueTokenMultiChain(reissueMultichainTokenRequest,\ - \ tokenLinkId, idempotencyKey);" + code: CompletableFuture> response + = fireblocks.tokenization().getTokenContractSummary(id); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.re_issue_token_multi_chain(reissue_multichain_token_request,\ - \ token_link_id, idempotency_key);" + code: response = fireblocks.tokenization.get_token_contract_summary(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.reIssueTokenMultiChain(tokenizationApiReIssueTokenMultiChainRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenContractSummary(tokenizationApiGetTokenContractSummaryRequest);" - lang: Java - source: "CompletableFuture>> response = fireblocks.tokenization().reIssueTokenMultiChain(reissueMultichainTokenRequest,\ - \ tokenLinkId, idempotencyKey);" + source: CompletableFuture> response + = fireblocks.tokenization().getTokenContractSummary(id); - lang: Python - source: "response = fireblocks.tokenization.re_issue_token_multi_chain(reissue_multichain_token_request,\ - \ token_link_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.tokenization.get_token_contract_summary(id); x-accepts: - application/json - /tokenization/multichain/bridge/layerzero: - delete: - description: Remove LayerZero adapters by deactivating and unlinking them. This - endpoint revokes roles and deactivates the specified adapter contracts. - operationId: deactivateAndUnlinkAdapters + /tokenization/tokens/{id}/total_supply: + get: + description: Returns paginated total supply history for the token contract with + optional time-range filtering and binning. + operationId: getTokenTotalSupply 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." + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RemoveLayerZeroAdaptersRequest" - required: true + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: startDate + required: false + schema: + format: date-time + type: string + style: form + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: endDate + required: false + schema: + format: date-time + type: string + style: form + - description: Time interval for grouping data + example: DAY + explode: true + in: query + name: interval + required: false + schema: + default: DAY + enum: + - HOUR + - DAY + - WEEK + - MONTH + type: string + style: form + - description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more than 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). Sorting only supported by 'blockTimestamp' + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - blockTimestamp + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/RemoveLayerZeroAdaptersResponse" - description: LayerZero adapters removal process completed - "400": - $ref: "#/components/responses/BadRequestError" + $ref: "#/components/schemas/TotalSupplyPagedResponse" + description: Successfully retrieved the token total supply history "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "409": - $ref: "#/components/responses/TokenLinkProcessingError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Remove LayerZero adapters + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found + default: + $ref: "#/components/responses/Error" + summary: Get historical total supply for a token tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: |- - const payload = { - "vaultAccountId": "1", - "adapterTokenLinkIds": ["d290f1ee-6c54-4b01-90e6-d701748f0851", "e290f1ee-6c54-4b01-90e6-d701748f0852"] - } const removeResponse = await fireblocks.deactivateAndUnlinkAdapters(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.deactivateAndUnlinkAdapters(tokenizationApiDeactivateAndUnlinkAdaptersRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenTotalSupply(tokenizationApiGetTokenTotalSupplyRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().deactivateAndUnlinkAdapters(removeLayerZeroAdaptersRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenTotalSupply(id, startDate, endDate,\ + \ interval, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.deactivate_and_unlink_adapters(remove_layer_zero_adapters_request,\ - \ idempotency_key);" + code: "response = fireblocks.tokenization.get_token_total_supply(id, start_date,\ + \ end_date, interval, page_cursor, page_size, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.deactivateAndUnlinkAdapters(tokenizationApiDeactivateAndUnlinkAdaptersRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenTotalSupply(tokenizationApiGetTokenTotalSupplyRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().deactivateAndUnlinkAdapters(removeLayerZeroAdaptersRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenTotalSupply(id, startDate, endDate,\ + \ interval, pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.tokenization.deactivate_and_unlink_adapters(remove_layer_zero_adapters_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.tokenization.get_token_total_supply(id, start_date,\ + \ end_date, interval, page_cursor, page_size, sort_by, order);" x-accepts: - application/json - post: - description: Deploy LayerZero adapters for multichain token bridging functionality. - This endpoint creates adapter contracts that enable cross-chain token transfers. - operationId: deployAndLinkAdapters + /tokenization/tokens/{id}/balances: + get: + description: Returns the latest balance for each unique address holding this + token. + operationId: getTokenBalances 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." + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeployLayerZeroAdaptersRequest" - required: true + - description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more than 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field for balances + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - accountAddress + - blockTimestamp + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/DeployLayerZeroAdaptersResponse" - description: LayerZero adapters deployed successfully - "400": - $ref: "#/components/responses/BadRequestError" + $ref: "#/components/schemas/AddressBalancePagedResponse" + description: Successfully retrieved the latest balances for the token "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "409": - $ref: "#/components/responses/TokenLinkPreparationError" - "422": - $ref: "#/components/responses/OriginalTokenLinkNotFungibleError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Deploy LayerZero adapters + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found + default: + $ref: "#/components/responses/Error" + summary: Get latest balances for all holders of a token tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: |- - const payload = { - "vaultAccountId": "0", - "createParams": [{ - "tokenLinkId": "123-432-1234-1234-123456789012", - "delegateAddress": "0xABCDEF123456789abcdef1234567890abcdef12345678", - "defaultAdminAddress": "0xABC123456789abcdef1234567890abcdef12345678", - "pauserAddress": "0xDEFABC123456789abcdef1234567890abcdef12345678" - }], - "displayName": "LayerZero", - "useGasless": true - } const deployResponse = await fireblocks.deployAndLinkAdapters(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.deployAndLinkAdapters(tokenizationApiDeployAndLinkAdaptersRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenBalances(tokenizationApiGetTokenBalancesRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>> response\ - \ = fireblocks.tokenization().deployAndLinkAdapters(deployLayerZeroAdaptersRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenBalances(id, pageCursor, pageSize,\ + \ sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.deploy_and_link_adapters(deploy_layer_zero_adapters_request,\ - \ idempotency_key);" + code: "response = fireblocks.tokenization.get_token_balances(id, page_cursor,\ + \ page_size, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.deployAndLinkAdapters(tokenizationApiDeployAndLinkAdaptersRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenBalances(tokenizationApiGetTokenBalancesRequest);" - lang: Java - source: "CompletableFuture>> response\ - \ = fireblocks.tokenization().deployAndLinkAdapters(deployLayerZeroAdaptersRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenBalances(id, pageCursor, pageSize,\ + \ sortBy, order);" - lang: Python - source: "response = fireblocks.tokenization.deploy_and_link_adapters(deploy_layer_zero_adapters_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.tokenization.get_token_balances(id, page_cursor,\ + \ page_size, sort_by, order);" x-accepts: - application/json - /tokenization/multichain/bridge/layerzero/config/peers: - delete: - description: Remove LayerZero peers to disconnect adapter contracts. This endpoint - removes peer relationships between LayerZero adapters. - operationId: removeLayerZeroPeers + /tokenization/tokens/{id}/balances/{accountAddress}: + get: + description: Returns the latest token balance for the specified account address. + operationId: getTokenBalanceForAccount 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." + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RemoveLayerZeroPeersRequest" + - description: The account address to get balance history for + explode: false + in: path + name: accountAddress required: true + schema: + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/RemoveLayerZeroPeersResponse" - description: LayerZero peers removal process completed - "400": - $ref: "#/components/responses/BadRequestError" + $ref: "#/components/schemas/AddressBalanceItemDto" + description: Successfully retrieved the balance for the account "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "409": - $ref: "#/components/responses/TokenLinkProcessingError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Remove LayerZero peers + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found + default: + $ref: "#/components/responses/Error" + summary: Get the latest balance for a specific account tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: read x-readme: code-samples: - - language: javascript - code: |- - const payload = { - "vaultAccountId": "0", - "sourceAdapterTokenLinkId": "123-432-1234-1234-123456789012", - "destinationAdapterTokenLinkIds": ["123-432-1234-1234-123456789012", "123-432-1234-1234-123456789012"], - "bidirectional": true - } const removePeersResponse = await fireblocks.removeLayerZeroPeers(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.removeLayerZeroPeers(tokenizationApiRemoveLayerZeroPeersRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenBalanceForAccount(tokenizationApiGetTokenBalanceForAccountRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().removeLayerZeroPeers(removeLayerZeroPeersRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tokenization().getTokenBalanceForAccount(id, accountAddress);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.remove_layer_zero_peers(remove_layer_zero_peers_request,\ - \ idempotency_key);" + code: "response = fireblocks.tokenization.get_token_balance_for_account(id,\ + \ account_address);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.removeLayerZeroPeers(tokenizationApiRemoveLayerZeroPeersRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenBalanceForAccount(tokenizationApiGetTokenBalanceForAccountRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().removeLayerZeroPeers(removeLayerZeroPeersRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tokenization().getTokenBalanceForAccount(id, accountAddress);" - lang: Python - source: "response = fireblocks.tokenization.remove_layer_zero_peers(remove_layer_zero_peers_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.tokenization.get_token_balance_for_account(id,\ + \ account_address);" x-accepts: - application/json - post: - description: "Set LayerZero peers to establish connections between adapter contracts.\ - \ This endpoint creates peer relationships that enable cross-chain communication.\ - \ It sets the destination adapter as a peer of the source adapter. If `bidirectional`\ - \ is true, it also sets the source adapter as a peer of the destination adapter(s)." - operationId: setLayerZeroPeers + /tokenization/tokens/{id}/balances/{accountAddress}/history: + get: + description: Returns paginated balance history for the specified account address + with optional time-range filtering. + operationId: getTokenBalanceHistory 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." + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SetLayerZeroPeersRequest" + - description: The account address to get balance history for + explode: false + in: path + name: accountAddress required: true + schema: + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + style: simple + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: startDate + required: false + schema: + format: date-time + type: string + style: form + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: endDate + required: false + schema: + format: date-time + type: string + style: form + - description: Time interval for grouping data + example: DAY + explode: true + in: query + name: interval + required: false + schema: + default: DAY + enum: + - HOUR + - DAY + - WEEK + - MONTH + type: string + style: form + - description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more than 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). Sorting only supported by 'blockTimestamp' + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - blockTimestamp + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SetLayerZeroPeersResponse" - description: LayerZero peers set successfully - "400": - $ref: "#/components/responses/BadRequestError" + $ref: "#/components/schemas/BalanceHistoryPagedResponse" + description: Successfully retrieved the balance history "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "409": - $ref: "#/components/responses/TokenLinkPreparationError" - "422": - $ref: "#/components/responses/OriginalTokenLinkNotFungibleError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Set LayerZero peers + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found + default: + $ref: "#/components/responses/Error" + summary: Get balance history for a specific account tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: |- - const payload = { - "vaultAccountId": "0", - "sourceAdapterTokenLinkId": "123-432-1234-1234-123456789012", - "destinationAdapterTokenLinkIds": ["123-432-1234-1234-123456789012", "123-432-1234-1234-123456789012"], - "bidirectional": true - } const setPeersResponse = await fireblocks.setLayerZeroPeers(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.setLayerZeroPeers(tokenizationApiSetLayerZeroPeersRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenBalanceHistory(tokenizationApiGetTokenBalanceHistoryRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().setLayerZeroPeers(setLayerZeroPeersRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenBalanceHistory(id, accountAddress,\ + \ startDate, endDate, interval, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.set_layer_zero_peers(set_layer_zero_peers_request,\ - \ idempotency_key);" + code: "response = fireblocks.tokenization.get_token_balance_history(id,\ + \ account_address, start_date, end_date, interval, page_cursor, page_size,\ + \ sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.setLayerZeroPeers(tokenizationApiSetLayerZeroPeersRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenBalanceHistory(tokenizationApiGetTokenBalanceHistoryRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().setLayerZeroPeers(setLayerZeroPeersRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenBalanceHistory(id, accountAddress,\ + \ startDate, endDate, interval, pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.tokenization.set_layer_zero_peers(set_layer_zero_peers_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.tokenization.get_token_balance_history(id,\ + \ account_address, start_date, end_date, interval, page_cursor, page_size,\ + \ sort_by, order);" x-accepts: - application/json - /tokenization/multichain/bridge/layerzero/config/{adapterTokenLinkId}/peers: + /tokenization/tokens/{id}/transfers: get: - description: Retrieve the LayerZero peers configured for a specific adapter. - Returns information about peer relationships for cross-chain communication. - operationId: getLayerZeroPeers + description: "Returns a paginated list of ERC20 transfer events for the token\ + \ contract, optionally filtered by date range." + operationId: getTokenTransfers parameters: - - description: The token link id of the adapter token link - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: adapterTokenLinkId + name: id required: true schema: - format: uuid type: string style: simple - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/GetLayerZeroPeersResponse" - description: LayerZero peers retrieved successfully - "400": - $ref: "#/components/responses/BadRequestError" - "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Get LayerZero peers - tags: - - Tokenization - x-rate-limit-category: read - x-readme: - code-samples: - - language: javascript - code: const adapterTokenLinkId = "b70701f4-d7b1-4795-a8ee-b09cdb5b850d"; - const peersResponse = await fireblocks.getLayerZeroPeers(adapterTokenLinkId); - name: Fireblocks SDK Javascript example - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.getLayerZeroPeers(tokenizationApiGetLayerZeroPeersRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response - = fireblocks.tokenization().getLayerZeroPeers(adapterTokenLinkId); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.tokenization.get_layer_zero_peers(adapter_token_link_id); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.getLayerZeroPeers(tokenizationApiGetLayerZeroPeersRequest);" - - lang: Java - source: CompletableFuture> response - = fireblocks.tokenization().getLayerZeroPeers(adapterTokenLinkId); - - lang: Python - source: response = fireblocks.tokenization.get_layer_zero_peers(adapter_token_link_id); - x-accepts: - - application/json - /tokenization/multichain/bridge/layerzero/config/dvns: - post: - description: Configure DVN settings for LayerZero adapters. This endpoint sets - up the DVN configuration for message verification between source and destination - adapters. - operationId: setLayerZeroDvnConfig - 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 + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: startDate required: false schema: + format: date-time type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SetLayerZeroDvnConfigRequest" - required: true + style: form + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: endDate + required: false + schema: + format: date-time + type: string + style: form + - description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more than 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field for transfers + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimeStamp + enum: + - blockTimeStamp + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form + - description: Filter transfers by sender address + explode: true + in: query + name: sender + required: false + schema: + example: 0xabcdef1234567890abcdef1234567890abcdef12 + type: string + style: form + - description: Filter transfers by receiver address + explode: true + in: query + name: receiver + required: false + schema: + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SetLayerZeroDvnConfigResponse" - description: LayerZero DVN configuration set successfully - "400": - $ref: "#/components/responses/BadRequestError" + $ref: "#/components/schemas/OnchainTransfersPagedResponse" + description: Onchain transfers fetched successfully "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "409": - $ref: "#/components/responses/TokenLinkPreparationError" - "422": - $ref: "#/components/responses/BridgingProtocolBlockchainMetadataNotFoundError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Set LayerZero DVN configuration + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found + default: + $ref: "#/components/responses/Error" + summary: Get onchain transfers for a token tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: |- - const payload = { - "vaultAccountId": "0", - "sourceAdapterTokenLinkId": "b70701f4-d7b1-4795-a8ee-b09cdb5b850d", - "destinationAdapterTokenLinkId": "6add4f2a-b206-4114-8f94-2882618ffbb4", - "sendConfig": { - "dvnAddresses": ["0xABCDEF123456789abcdef1234567890abcdef12345678", "0xABC123456789abcdef1234567890abcdef12345678"], - "optionalDVNAddresses": ["0xDEFABC123456789abcdef1234567890abcdef12345678"], - "optionalThreshold": 2 - }, - "receiveConfig": { - "dvnAddresses": ["0xABCDEF123456789abcdef1234567890abcdef12345678", "0xABC123456789abcdef1234567890abcdef12345678"], - "optionalThreshold": 1 - } - } const dvnConfigResponse = await fireblocks.setLayerZeroDvnConfig(payload); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.setLayerZeroDvnConfig(tokenizationApiSetLayerZeroDvnConfigRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenTransfers(tokenizationApiGetTokenTransfersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().setLayerZeroDvnConfig(setLayerZeroDvnConfigRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenTransfers(id, startDate, endDate,\ + \ pageCursor, pageSize, sortBy, order, sender, receiver);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.set_layer_zero_dvn_config(set_layer_zero_dvn_config_request,\ - \ idempotency_key);" + code: "response = fireblocks.tokenization.get_token_transfers(id, start_date,\ + \ end_date, page_cursor, page_size, sort_by, order, sender, receiver);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.setLayerZeroDvnConfig(tokenizationApiSetLayerZeroDvnConfigRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenTransfers(tokenizationApiGetTokenTransfersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().setLayerZeroDvnConfig(setLayerZeroDvnConfigRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().getTokenTransfers(id, startDate, endDate,\ + \ pageCursor, pageSize, sortBy, order, sender, receiver);" - lang: Python - source: "response = fireblocks.tokenization.set_layer_zero_dvn_config(set_layer_zero_dvn_config_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.tokenization.get_token_transfers(id, start_date,\ + \ end_date, page_cursor, page_size, sort_by, order, sender, receiver);" x-accepts: - application/json - /tokenization/multichain/bridge/layerzero/config/{adapterTokenLinkId}/dvns: + /tokenization/tokens/{id}/transactions: get: - description: Retrieve the DVN (Data Verification Network) configuration for - a specific adapter. Returns DVN configurations for channels between the source - adapter and its peers. - operationId: getLayerZeroDvnConfig + description: "Returns a paginated list of onchain transactions for the token\ + \ contract, optionally filtered by date range." + operationId: getTokenTransactions parameters: - - description: The token link id of the adapter token link - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: adapterTokenLinkId + name: id required: true schema: - format: uuid type: string style: simple - - description: Optional peer adapter token link ID to filter results - example: 6add4f2a-b206-4114-8f94-2882618ffbb4 + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z explode: true in: query - name: peerAdapterTokenLinkId + name: startDate required: false schema: - format: uuid + format: date-time type: string style: form - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/GetLayerZeroDvnConfigResponse" - description: LayerZero DVN configuration retrieved successfully - "400": - $ref: "#/components/responses/BadRequestError" - "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Get LayerZero DVN configuration - tags: - - Tokenization - x-rate-limit-category: read - x-readme: - code-samples: - - language: javascript - code: "const adapterTokenLinkId = \"b70701f4-d7b1-4795-a8ee-b09cdb5b850d\"\ - ; const peerAdapterTokenLinkId = \"6add4f2a-b206-4114-8f94-2882618ffbb4\"\ - ; // optional const dvnConfigResponse = await fireblocks.getLayerZeroDvnConfig(adapterTokenLinkId,\ - \ { peerAdapterTokenLinkId });" - name: Fireblocks SDK Javascript example - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.getLayerZeroDvnConfig(tokenizationApiGetLayerZeroDvnConfigRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().getLayerZeroDvnConfig(adapterTokenLinkId,\ - \ peerAdapterTokenLinkId);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.tokenization.get_layer_zero_dvn_config(adapter_token_link_id,\ - \ peer_adapter_token_link_id);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.getLayerZeroDvnConfig(tokenizationApiGetLayerZeroDvnConfigRequest);" - - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().getLayerZeroDvnConfig(adapterTokenLinkId,\ - \ peerAdapterTokenLinkId);" - - lang: Python - source: "response = fireblocks.tokenization.get_layer_zero_dvn_config(adapter_token_link_id,\ - \ peer_adapter_token_link_id);" - x-accepts: - - application/json - /tokenization/multichain/bridge/layerzero/validate: - get: - description: Validate the LayerZero channel configuration between adapters. - This endpoint checks if the channel configuration is correct and returns any - validation errors. - operationId: validateLayerZeroChannelConfig - parameters: - - description: The token link ID of the adapter - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z explode: true in: query - name: adapterTokenLinkId - required: true + name: endDate + required: false schema: - format: uuid + format: date-time type: string style: form - - description: Peer adapter token link ID to validate against - example: 6add4f2a-b206-4114-8f94-2882618ffbb4 + - description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== explode: true in: query - name: peerAdapterTokenLinkId - required: true + name: pageCursor + required: false schema: - format: uuid + type: string + style: form + - description: "Number of items per page (max 100), requesting more than 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - blockTimestamp + - blockNumber + - transactionHash + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC type: string style: form responses: @@ -17067,136 +17428,109 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ValidateLayerZeroChannelResponse" - description: LayerZero channel configuration validation completed - "400": - $ref: "#/components/responses/BadRequestError" + $ref: "#/components/schemas/OnchainTransactionsPagedResponse" + description: Onchain transactions fetched successfully "404": - $ref: "#/components/responses/OriginalTokenLinkNotFoundError" - "422": - $ref: "#/components/responses/BridgingProtocolBlockchainMetadataNotFoundError" - "500": - $ref: "#/components/responses/InternalServerError" - summary: Validate LayerZero channel configuration + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found + default: + $ref: "#/components/responses/Error" + summary: Get onchain transactions for a token tags: - Tokenization - x-rate-limit-category: read + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: "const adapterTokenLinkId = \"b70701f4-d7b1-4795-a8ee-b09cdb5b850d\"\ - ; const peerAdapterTokenLinkId = \"6add4f2a-b206-4114-8f94-2882618ffbb4\"\ - ; const validationResponse = await fireblocks.validateLayerZeroChannelConfig({\ - \ \n adapterTokenLinkId,\n peerAdapterTokenLinkId \n});" - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.validateLayerZeroChannelConfig(tokenizationApiValidateLayerZeroChannelConfigRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenTransactions(tokenizationApiGetTokenTransactionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tokenization().validateLayerZeroChannelConfig(adapterTokenLinkId,\ - \ peerAdapterTokenLinkId);" + code: "CompletableFuture>\ + \ response = fireblocks.tokenization().getTokenTransactions(id, startDate,\ + \ endDate, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.validate_layer_zero_channel_config(adapter_token_link_id,\ - \ peer_adapter_token_link_id);" + code: "response = fireblocks.tokenization.get_token_transactions(id, start_date,\ + \ end_date, page_cursor, page_size, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.validateLayerZeroChannelConfig(tokenizationApiValidateLayerZeroChannelConfigRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenTransactions(tokenizationApiGetTokenTransactionsRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tokenization().validateLayerZeroChannelConfig(adapterTokenLinkId,\ - \ peerAdapterTokenLinkId);" + source: "CompletableFuture>\ + \ response = fireblocks.tokenization().getTokenTransactions(id, startDate,\ + \ endDate, pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.tokenization.validate_layer_zero_channel_config(adapter_token_link_id,\ - \ peer_adapter_token_link_id);" + source: "response = fireblocks.tokenization.get_token_transactions(id, start_date,\ + \ end_date, page_cursor, page_size, sort_by, order);" x-accepts: - application/json - /tokenization/collections: + /tokenization/tokens/{id}/rbac: get: - description: |- - Get collections (paginated). - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: getLinkedCollections + description: Returns a list of currently active roles for the token contract. + operationId: getTokenRbac parameters: - - description: "Page cursor to get the next page, for example - \"MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==\"" - explode: true - in: query - name: pageCursor - required: false + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + explode: false + in: path + name: id + required: true schema: type: string - style: form - - description: "Number of items per page (max 100), requesting more then 100\ - \ will return 100 items" - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - maximum: 100 - minimum: 1 - type: number - style: form - - description: A comma separated list of statuses to filter. Default is "COMPLETED" - example: COMPLETED - explode: true - in: query - name: status - required: false - schema: {} - style: form + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/GetLinkedCollectionsPaginatedResponse" - description: Collection fetched successfully + $ref: "#/components/schemas/ActiveRolesResponse" + description: Successfully retrieved the list of active roles + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/NotFoundException" + description: Token not found default: $ref: "#/components/responses/Error" - summary: Get collections + summary: Get active RBAC roles for a token tags: - Tokenization - x-rate-limit-category: query + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.getLinkedCollections(tokenizationApiGetLinkedCollectionsRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenRbac(tokenizationApiGetTokenRbacRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tokenization().getLinkedCollections(pageCursor,\ - \ pageSize, status);" + code: CompletableFuture> response = fireblocks.tokenization().getTokenRbac(id); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.get_linked_collections(page_cursor,\ - \ page_size, status);" + code: response = fireblocks.tokenization.get_token_rbac(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.getLinkedCollections(tokenizationApiGetLinkedCollectionsRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getTokenRbac(tokenizationApiGetTokenRbacRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tokenization().getLinkedCollections(pageCursor,\ - \ pageSize, status);" + source: CompletableFuture> response = fireblocks.tokenization().getTokenRbac(id); - lang: Python - source: "response = fireblocks.tokenization.get_linked_collections(page_cursor,\ - \ page_size, status);" + source: response = fireblocks.tokenization.get_token_rbac(id); x-accepts: - application/json + /tokenization/multichain/deterministic_address: post: - description: |- - Create a new collection and link it as a token. - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, and Editor. - operationId: createNewCollection + description: Get a deterministic address for contract deployment. The address + is derived from the contract's bytecode and provided salt. This endpoint + is used to get the address of a contract that will be deployed in the future. + operationId: getDeployableAddress 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\ @@ -17213,217 +17547,282 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CollectionDeployRequestDto" + $ref: "#/components/schemas/GetDeployableAddressRequest" required: true responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/CollectionLinkDto" - description: Collection was created successfully + $ref: "#/components/schemas/DeployableAddressResponse" + description: Deterministic address for contract deployment + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/InvalidParamaterValueError" + description: Invalid parameters or template has no bytecode + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/AddressNotAvailableError" + description: Address is already taken default: $ref: "#/components/responses/Error" - summary: Create a new collection + summary: Get deterministic address for contract deployment tags: - Tokenization - x-rate-limit-category: write + x-rate-limit-category: read x-readme: code-samples: + - language: javascript + code: |- + const payload = { + chainDescriptor: "ETH", + templateId: "b70701f4-d7b1-4795-a8ee-b09cdb5b850d", + initParams: [ + { name: "name", type: "string", value: "TokenName" }, + { name: "symbol", type: "string", value: "TokenSymbol" }, + { + name: "customConfigProps", + type: "tuple", + components: [ + { name: "_isMintable", type: "bool" } + ], + value: [{ _isMintable: false }] + } + ], + salt: "123456789" + }; const address = await fireblocks.getDeterministicAddress(payload); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> =\ - \ fireblocks.tokenization.createNewCollection(tokenizationApiCreateNewCollectionRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getDeployableAddress(tokenizationApiGetDeployableAddressRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tokenization().createNewCollection(collectionDeployRequestDto,\ + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().getDeployableAddress(getDeployableAddressRequest,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.create_new_collection(collection_deploy_request_dto,\ + code: "response = fireblocks.tokenization.get_deployable_address(get_deployable_address_request,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.tokenization.createNewCollection(tokenizationApiCreateNewCollectionRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getDeployableAddress(tokenizationApiGetDeployableAddressRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tokenization().createNewCollection(collectionDeployRequestDto,\ + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().getDeployableAddress(getDeployableAddressRequest,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.tokenization.create_new_collection(collection_deploy_request_dto,\ + source: "response = fireblocks.tokenization.get_deployable_address(get_deployable_address_request,\ \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /tokenization/collections/{id}: - delete: - description: Delete a collection link - operationId: unlinkCollection + /tokenization/multichain/tokens: + post: + description: Facilitates the creation of a new token on one or more blockchains. + operationId: issueTokenMultiChain parameters: - - description: The token link id - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + - 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: path - name: id - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple - responses: - "204": - description: Collection unlinked successfully - "404": - description: Link for collection does not exist - default: - $ref: "#/components/responses/Error" - summary: Delete a collection link - tags: - - Tokenization - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.tokenization.unlinkCollection(tokenizationApiUnlinkCollectionRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response = fireblocks.tokenization().unlinkCollection(id); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.tokenization.unlink_collection(id); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.tokenization.unlinkCollection(tokenizationApiUnlinkCollectionRequest);" - - lang: Java - source: CompletableFuture> response = fireblocks.tokenization().unlinkCollection(id); - - lang: Python - source: response = fireblocks.tokenization.unlink_collection(id); - x-accepts: - - application/json - get: - description: Get a collection by id - operationId: getCollectionById - parameters: - - description: The token link id - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb - explode: false - in: path - name: id + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateMultichainTokenRequest" required: true - schema: - type: string - style: simple responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/CollectionLinkDto" - description: Collection fetched successfully - default: - $ref: "#/components/responses/Error" - summary: Get a collection by id + $ref: "#/components/schemas/IssueTokenMultichainResponse" + description: Tokens were created successfully + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/InvalidParamaterValueError" + description: Invalid input. + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/AddressNotAvailableError" + description: Address is already taken. + summary: Issue a token on one or more blockchains tags: - Tokenization - x-rate-limit-category: read + x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: |- + const payload = { + vaultAccountId: "0", + createParams: { + contractId: "b70701f4-d7b1-4795-a8ee-b09cdb5b850d", + deployFunctionParams: [ + { name: "name", type: "string", value: "TokenName" }, + { name: "symbol", type: "string", value: "TokenSymbol" }, + { + name: "customConfigProps", + type: "tuple", + components: [ + { name: "_isMintable", type: "bool" } + ], + value: [{ _isMintable: false }] + }, + ], + }, + salt: "123456789", + chains: ["ETH", "POLYGON"] + }; const token = await fireblocks.issueTokenMultiChain(payload); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> =\ - \ fireblocks.tokenization.getCollectionById(tokenizationApiGetCollectionByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.issueTokenMultiChain(tokenizationApiIssueTokenMultiChainRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tokenization().getCollectionById(id); + code: "CompletableFuture>> response = fireblocks.tokenization().issueTokenMultiChain(createMultichainTokenRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.tokenization.get_collection_by_id(id); + code: "response = fireblocks.tokenization.issue_token_multi_chain(create_multichain_token_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.tokenization.getCollectionById(tokenizationApiGetCollectionByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.issueTokenMultiChain(tokenizationApiIssueTokenMultiChainRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.tokenization().getCollectionById(id); + source: "CompletableFuture>> response = fireblocks.tokenization().issueTokenMultiChain(createMultichainTokenRequest,\ + \ idempotencyKey);" - lang: Python - source: response = fireblocks.tokenization.get_collection_by_id(id); + source: "response = fireblocks.tokenization.issue_token_multi_chain(create_multichain_token_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /tokenization/collections/{id}/tokens/{tokenId}: - get: - description: Get collection token details by id - operationId: fetchCollectionTokenDetails + /tokenization/multichain/reissue/token/{tokenLinkId}: + post: + description: Reissue a multichain token. This endpoint allows you to reissue + a token on one or more blockchains. The token must be initially issued using + the issueTokenMultiChain endpoint. + operationId: reIssueTokenMultiChain parameters: - - description: The collection link id - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + - 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: path - name: id - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple - - description: The tokenId as it appears on the blockchain - example: "1" + - description: The ID of the token link explode: false in: path - name: tokenId + name: tokenLinkId required: true schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ReissueMultichainTokenRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/CollectionLinkDto" - description: Collection token details were fetched successfully + $ref: "#/components/schemas/IssueTokenMultichainResponse" + description: Successfully reissued multichain token + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/TokenLinkNotMultichainCompatibleHttpError" + description: Invalid input + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/DeployedContractNotFoundError" + description: Deployed contract not found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/AddressNotAvailableError" + description: Address is already taken default: $ref: "#/components/responses/Error" - summary: Get collection token details + summary: Reissue a multichain token tags: - Tokenization - x-rate-limit-category: read + x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: |- + const payload = { + vaultAccountId: "0", + chains: "ETH", + salt: "123456789", + chains: ["ETH", "POLYGON"] + }; const token = await fireblocks.reIssueTokenMultiChain(tokenLinkId, payload); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> =\ - \ fireblocks.tokenization.fetchCollectionTokenDetails(tokenizationApiFetchCollectionTokenDetailsRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.reIssueTokenMultiChain(tokenizationApiReIssueTokenMultiChainRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tokenization().fetchCollectionTokenDetails(id,\ - \ tokenId);" + code: "CompletableFuture>> response = fireblocks.tokenization().reIssueTokenMultiChain(reissueMultichainTokenRequest,\ + \ tokenLinkId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.fetch_collection_token_details(id,\ - \ token_id);" + code: "response = fireblocks.tokenization.re_issue_token_multi_chain(reissue_multichain_token_request,\ + \ token_link_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.tokenization.fetchCollectionTokenDetails(tokenizationApiFetchCollectionTokenDetailsRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.reIssueTokenMultiChain(tokenizationApiReIssueTokenMultiChainRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tokenization().fetchCollectionTokenDetails(id,\ - \ tokenId);" + source: "CompletableFuture>> response = fireblocks.tokenization().reIssueTokenMultiChain(reissueMultichainTokenRequest,\ + \ tokenLinkId, idempotencyKey);" - lang: Python - source: "response = fireblocks.tokenization.fetch_collection_token_details(id,\ - \ token_id);" + source: "response = fireblocks.tokenization.re_issue_token_multi_chain(reissue_multichain_token_request,\ + \ token_link_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /tokenization/collections/{id}/tokens/mint: - post: - description: Mint tokens and upload metadata - operationId: mintCollectionToken + /tokenization/multichain/bridge/layerzero: + delete: + description: Remove LayerZero adapters by deactivating and unlinking them. This + endpoint revokes roles and deactivates the specified adapter contracts. + operationId: deactivateAndUnlinkAdapters parameters: - - description: The collection link id - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb - explode: false - in: path - name: id - required: true - schema: - type: string - 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\ @@ -17439,64 +17838,68 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CollectionMintRequestDto" + $ref: "#/components/schemas/RemoveLayerZeroAdaptersRequest" required: true responses: - "202": + "200": content: application/json: schema: - $ref: "#/components/schemas/CollectionMintResponseDto" - description: Tokens minted successfully - default: - $ref: "#/components/responses/Error" - summary: Mint tokens + $ref: "#/components/schemas/RemoveLayerZeroAdaptersResponse" + description: LayerZero adapters removal process completed + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "409": + $ref: "#/components/responses/TokenLinkProcessingError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Remove LayerZero adapters tags: - Tokenization - x-rate-limit-category: async + x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: |- + const payload = { + "vaultAccountId": "1", + "adapterTokenLinkIds": ["d290f1ee-6c54-4b01-90e6-d701748f0851", "e290f1ee-6c54-4b01-90e6-d701748f0852"] + } const removeResponse = await fireblocks.deactivateAndUnlinkAdapters(payload); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.mintCollectionToken(tokenizationApiMintCollectionTokenRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.deactivateAndUnlinkAdapters(tokenizationApiDeactivateAndUnlinkAdaptersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().mintCollectionToken(collectionMintRequestDto,\ - \ id, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().deactivateAndUnlinkAdapters(removeLayerZeroAdaptersRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.mint_collection_token(collection_mint_request_dto,\ - \ id, idempotency_key);" + code: "response = fireblocks.tokenization.deactivate_and_unlink_adapters(remove_layer_zero_adapters_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.mintCollectionToken(tokenizationApiMintCollectionTokenRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.deactivateAndUnlinkAdapters(tokenizationApiDeactivateAndUnlinkAdaptersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().mintCollectionToken(collectionMintRequestDto,\ - \ id, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().deactivateAndUnlinkAdapters(removeLayerZeroAdaptersRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.tokenization.mint_collection_token(collection_mint_request_dto,\ - \ id, idempotency_key);" + source: "response = fireblocks.tokenization.deactivate_and_unlink_adapters(remove_layer_zero_adapters_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /tokenization/collections/{id}/tokens/burn: post: - description: Burn tokens in a collection - operationId: burnCollectionToken + description: Deploy LayerZero adapters for multichain token bridging functionality. + This endpoint creates adapter contracts that enable cross-chain token transfers. + operationId: deployAndLinkAdapters parameters: - - description: The collection link id - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb - explode: false - in: path - name: id - required: true - schema: - type: string - 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\ @@ -17512,56 +17915,77 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CollectionBurnRequestDto" + $ref: "#/components/schemas/DeployLayerZeroAdaptersRequest" required: true responses: - "202": + "200": content: application/json: schema: - $ref: "#/components/schemas/CollectionBurnResponseDto" - description: Tokens burned successfully - default: - $ref: "#/components/responses/Error" - summary: Burn tokens + $ref: "#/components/schemas/DeployLayerZeroAdaptersResponse" + description: LayerZero adapters deployed successfully + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "409": + $ref: "#/components/responses/TokenLinkPreparationError" + "422": + $ref: "#/components/responses/OriginalTokenLinkNotFungibleError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Deploy LayerZero adapters tags: - Tokenization x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: |- + const payload = { + "vaultAccountId": "0", + "createParams": [{ + "tokenLinkId": "123-432-1234-1234-123456789012", + "delegateAddress": "0xABCDEF123456789abcdef1234567890abcdef12345678", + "defaultAdminAddress": "0xABC123456789abcdef1234567890abcdef12345678", + "pauserAddress": "0xDEFABC123456789abcdef1234567890abcdef12345678" + }], + "displayName": "LayerZero", + "useGasless": true + } const deployResponse = await fireblocks.deployAndLinkAdapters(payload); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tokenization.burnCollectionToken(tokenizationApiBurnCollectionTokenRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.deployAndLinkAdapters(tokenizationApiDeployAndLinkAdaptersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tokenization().burnCollectionToken(collectionBurnRequestDto,\ - \ id, idempotencyKey);" + code: "CompletableFuture>> response\ + \ = fireblocks.tokenization().deployAndLinkAdapters(deployLayerZeroAdaptersRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tokenization.burn_collection_token(collection_burn_request_dto,\ - \ id, idempotency_key);" + code: "response = fireblocks.tokenization.deploy_and_link_adapters(deploy_layer_zero_adapters_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tokenization.burnCollectionToken(tokenizationApiBurnCollectionTokenRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.deployAndLinkAdapters(tokenizationApiDeployAndLinkAdaptersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tokenization().burnCollectionToken(collectionBurnRequestDto,\ - \ id, idempotencyKey);" + source: "CompletableFuture>> response\ + \ = fireblocks.tokenization().deployAndLinkAdapters(deployLayerZeroAdaptersRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.tokenization.burn_collection_token(collection_burn_request_dto,\ - \ id, idempotency_key);" + source: "response = fireblocks.tokenization.deploy_and_link_adapters(deploy_layer_zero_adapters_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions: - get: - description: |- - Return deployed contract's ABI by blockchain native asset id and contract address. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer. - operationId: getDeployedContractAbi + /tokenization/multichain/bridge/layerzero/config/peers: + delete: + description: Remove LayerZero peers to disconnect adapter contracts. This endpoint + removes peer relationships between LayerZero adapters. + operationId: removeLayerZeroPeers 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\ @@ -17574,78 +17998,75 @@ paths: schema: type: string style: simple - - description: The contract's onchain address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: contractAddress - required: true - schema: - type: string - style: simple - - description: The blockchain base assetId - example: ETH - explode: false - in: path - name: baseAssetId + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RemoveLayerZeroPeersRequest" required: true - schema: - type: string - style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ContractAbiResponseDto" - description: "" - default: - $ref: "#/components/responses/Error" - summary: Return deployed contract's ABI + $ref: "#/components/schemas/RemoveLayerZeroPeersResponse" + description: LayerZero peers removal process completed + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "409": + $ref: "#/components/responses/TokenLinkProcessingError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Remove LayerZero peers tags: - - Contract Interactions - x-rate-limit-category: read + - Tokenization + x-rate-limit-category: write x-readme: code-samples: - - language: python - code: "deployed_contract_abi = fireblocks.get_contracts_abi(base_asset_id,\ - \ contract_address)" - name: Fireblocks SDK Python example (Legacy) - language: javascript - code: "const deployedContractAbi = await fireblocks.getContractAbi(baseAssetId,\ - \ contractAddress);" + code: |- + const payload = { + "vaultAccountId": "0", + "sourceAdapterTokenLinkId": "123-432-1234-1234-123456789012", + "destinationAdapterTokenLinkIds": ["123-432-1234-1234-123456789012", "123-432-1234-1234-123456789012"], + "bidirectional": true + } const removePeersResponse = await fireblocks.removeLayerZeroPeers(payload); name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.contractInteractions.getDeployedContractAbi(contractInteractionsApiGetDeployedContractAbiRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.removeLayerZeroPeers(tokenizationApiRemoveLayerZeroPeersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.contractInteractions().getDeployedContractAbi(contractAddress,\ - \ baseAssetId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().removeLayerZeroPeers(removeLayerZeroPeersRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.contract_interactions.get_deployed_contract_abi(contract_address,\ - \ base_asset_id, idempotency_key);" + code: "response = fireblocks.tokenization.remove_layer_zero_peers(remove_layer_zero_peers_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.contractInteractions.getDeployedContractAbi(contractInteractionsApiGetDeployedContractAbiRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.removeLayerZeroPeers(tokenizationApiRemoveLayerZeroPeersRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.contractInteractions().getDeployedContractAbi(contractAddress,\ - \ baseAssetId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().removeLayerZeroPeers(removeLayerZeroPeersRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.contract_interactions.get_deployed_contract_abi(contract_address,\ - \ base_asset_id, idempotency_key);" + source: "response = fireblocks.tokenization.remove_layer_zero_peers(remove_layer_zero_peers_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions/read: post: - description: Call a read function on a deployed contract by blockchain native - asset id and contract address - operationId: readCallFunction + description: "Set LayerZero peers to establish connections between adapter contracts.\ + \ This endpoint creates peer relationships that enable cross-chain communication.\ + \ It sets the destination adapter as a peer of the source adapter. If `bidirectional`\ + \ is true, it also sets the source adapter as a peer of the destination adapter(s)." + operationId: setLayerZeroPeers 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\ @@ -17658,193 +18079,85 @@ paths: schema: type: string style: simple - - description: The contract's onchain address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: contractAddress - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: baseAssetId - required: true - schema: - type: string - style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/ReadCallFunctionDto" + $ref: "#/components/schemas/SetLayerZeroPeersRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ParameterWithValueList" - description: Read Call Retrieved Successfully - default: - $ref: "#/components/responses/Error" - summary: Call a read function on a deployed contract - tags: - - Contract Interactions - x-readme: - code-samples: - - language: python - code: "read_response = fireblocks.read_contract_call_function(base_asset_id,\ - \ contract_address, payload)" - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: "const readResponse= await fireblocks.readContractCallFunction(baseAssetId,\ - \ contractAddress, payload);" - name: Fireblocks SDK Javascript example - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.contractInteractions.readCallFunction(contractInteractionsApiReadCallFunctionRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture>> response\ - \ = fireblocks.contractInteractions().readCallFunction(readCallFunctionDto,\ - \ contractAddress, baseAssetId, idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.contract_interactions.read_call_function(read_call_function_dto,\ - \ contract_address, base_asset_id, idempotency_key);" - name: Fireblocks SDK Python example - x-rate-limit-category: read - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.contractInteractions.readCallFunction(contractInteractionsApiReadCallFunctionRequest);" - - lang: Java - source: "CompletableFuture>> response\ - \ = fireblocks.contractInteractions().readCallFunction(readCallFunctionDto,\ - \ contractAddress, baseAssetId, idempotencyKey);" - - lang: Python - source: "response = fireblocks.contract_interactions.read_call_function(read_call_function_dto,\ - \ contract_address, base_asset_id, idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions/write: - post: - description: "Call a write function on a deployed contract by blockchain native\ - \ asset id and contract address. This creates an onchain transaction, thus\ - \ it is an async operation. It returns a transaction id that can be polled\ - \ for status check" - operationId: writeCallFunction - 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 - - description: The contract's onchain address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: contractAddress - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: baseAssetId - required: true - schema: - type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/WriteCallFunctionDto" - required: true - responses: - "202": - content: - application/json: - schema: - $ref: "#/components/schemas/WriteCallFunctionResponseDto" - description: "" - default: - $ref: "#/components/responses/Error" - summary: Call a write function on a deployed contract + $ref: "#/components/schemas/SetLayerZeroPeersResponse" + description: LayerZero peers set successfully + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "409": + $ref: "#/components/responses/TokenLinkPreparationError" + "422": + $ref: "#/components/responses/OriginalTokenLinkNotFungibleError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Set LayerZero peers tags: - - Contract Interactions + - Tokenization + x-rate-limit-category: write x-readme: code-samples: - - language: python - code: "write_function_response = fireblocks.write_contract_call_function(base_asset_id,\ - \ contract_address, payload)" - name: Fireblocks SDK Python example (Legacy) - language: javascript - code: "const writeFunctionResponse = await fireblocks.writeContractCallFunction(baseAssetId,\ - \ contractAddress, payload);" + code: |- + const payload = { + "vaultAccountId": "0", + "sourceAdapterTokenLinkId": "123-432-1234-1234-123456789012", + "destinationAdapterTokenLinkIds": ["123-432-1234-1234-123456789012", "123-432-1234-1234-123456789012"], + "bidirectional": true + } const setPeersResponse = await fireblocks.setLayerZeroPeers(payload); name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.contractInteractions.writeCallFunction(contractInteractionsApiWriteCallFunctionRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.setLayerZeroPeers(tokenizationApiSetLayerZeroPeersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().writeCallFunction(writeCallFunctionDto,\ - \ contractAddress, baseAssetId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().setLayerZeroPeers(setLayerZeroPeersRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.contract_interactions.write_call_function(write_call_function_dto,\ - \ contract_address, base_asset_id, idempotency_key);" + code: "response = fireblocks.tokenization.set_layer_zero_peers(set_layer_zero_peers_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example - x-rate-limit-category: async x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.contractInteractions.writeCallFunction(contractInteractionsApiWriteCallFunctionRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.setLayerZeroPeers(tokenizationApiSetLayerZeroPeersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().writeCallFunction(writeCallFunctionDto,\ - \ contractAddress, baseAssetId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().setLayerZeroPeers(setLayerZeroPeersRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.contract_interactions.write_call_function(write_call_function_dto,\ - \ contract_address, base_asset_id, idempotency_key);" + source: "response = fireblocks.tokenization.set_layer_zero_peers(set_layer_zero_peers_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /contract_interactions/base_asset_id/{baseAssetId}/tx_hash/{txHash}/receipt: + /tokenization/multichain/bridge/layerzero/config/{adapterTokenLinkId}/peers: get: - description: "Retrieve the transaction receipt by blockchain native asset ID\ - \ and transaction hash\n> **Note** > This functionality is exclusively available\ - \ for EVM (Ethereum Virtual Machine) compatible chains. \nEndpoint Permission:\ - \ Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer." - operationId: getTransactionReceipt + description: Retrieve the LayerZero peers configured for a specific adapter. + Returns information about peer relationships for cross-chain communication. + operationId: getLayerZeroPeers parameters: - - description: The blockchain base assetId - example: ETH_TEST6 - explode: false - in: path - name: baseAssetId - required: true - schema: - type: string - style: simple - - description: The transaction hash - example: 0x3b015ca0518c55d7bff4e3f5aa5d0431705771553ba8a95cf20e34cb597f57f6 + - description: The token link id of the adapter token link + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d explode: false in: path - name: txHash + name: adapterTokenLinkId required: true schema: + format: uuid type: string style: simple responses: @@ -17852,55 +18165,52 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TransactionReceiptResponse" - description: Retrieved The Transaction Receipt Successfully - default: - $ref: "#/components/responses/Error" - summary: Get transaction receipt + $ref: "#/components/schemas/GetLayerZeroPeersResponse" + description: LayerZero peers retrieved successfully + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Get LayerZero peers tags: - - Contract Interactions + - Tokenization x-rate-limit-category: read x-readme: code-samples: - - language: python - code: "transaction_receipt = fireblocks.get_transaction_receipt(base_asset_id,\ - \ tx_hash)" - name: Fireblocks SDK Python example (Legacy) - language: javascript - code: "const transactionReceipt = await fireblocks.getTransactionReceipt(baseAssetId,\ - \ txHash);" + code: const adapterTokenLinkId = "b70701f4-d7b1-4795-a8ee-b09cdb5b850d"; + const peersResponse = await fireblocks.getLayerZeroPeers(adapterTokenLinkId); name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.contractInteractions.getTransactionReceipt(contractInteractionsApiGetTransactionReceiptRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getLayerZeroPeers(tokenizationApiGetLayerZeroPeersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().getTransactionReceipt(baseAssetId,\ - \ txHash);" + code: CompletableFuture> response + = fireblocks.tokenization().getLayerZeroPeers(adapterTokenLinkId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.contract_interactions.get_transaction_receipt(base_asset_id,\ - \ tx_hash);" + code: response = fireblocks.tokenization.get_layer_zero_peers(adapter_token_link_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.contractInteractions.getTransactionReceipt(contractInteractionsApiGetTransactionReceiptRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getLayerZeroPeers(tokenizationApiGetLayerZeroPeersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().getTransactionReceipt(baseAssetId,\ - \ txHash);" + source: CompletableFuture> response + = fireblocks.tokenization().getLayerZeroPeers(adapterTokenLinkId); - lang: Python - source: "response = fireblocks.contract_interactions.get_transaction_receipt(base_asset_id,\ - \ tx_hash);" + source: response = fireblocks.tokenization.get_layer_zero_peers(adapter_token_link_id); x-accepts: - application/json - /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/decode: + /tokenization/multichain/bridge/layerzero/config/dvns: post: - description: "Decode a function call data, error, or event log from a deployed\ - \ contract by blockchain native asset id and contract address." - operationId: decodeContractData + description: Configure DVN settings for LayerZero adapters. This endpoint sets + up the DVN configuration for message verification between source and destination + adapters. + operationId: setLayerZeroDvnConfig 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\ @@ -17913,259 +18223,245 @@ paths: schema: type: string style: simple - - description: The contract's onchain address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: contractAddress - required: true - schema: - type: string - style: simple - - description: The blockchain native asset identifier - example: ETH - explode: false - in: path - name: baseAssetId - required: true - schema: - type: string - style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/ContractDataDecodeRequest" + $ref: "#/components/schemas/SetLayerZeroDvnConfigRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ContractDataDecodedResponse" - description: Decoded data retrieved successfully + $ref: "#/components/schemas/SetLayerZeroDvnConfigResponse" + description: LayerZero DVN configuration set successfully "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ContractDataDecodeError" - description: "Bad request, invalid input data or parameters" - default: - $ref: "#/components/responses/Error" - summary: "Decode a function call data, error, or event log" + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "409": + $ref: "#/components/responses/TokenLinkPreparationError" + "422": + $ref: "#/components/responses/BridgingProtocolBlockchainMetadataNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Set LayerZero DVN configuration tags: - - Contract Interactions - x-rate-limit-category: read + - Tokenization + x-rate-limit-category: write x-readme: code-samples: - language: javascript code: |- const payload = { - "data": "0xcd21db4f000000000000000000000000000000000000000000000000000000006790c645", - "dataType": "ERROR" - } const decodeResponse = await fireblocks.decodeContractData(baseAssetId, contractAddress, payload); + "vaultAccountId": "0", + "sourceAdapterTokenLinkId": "b70701f4-d7b1-4795-a8ee-b09cdb5b850d", + "destinationAdapterTokenLinkId": "6add4f2a-b206-4114-8f94-2882618ffbb4", + "sendConfig": { + "dvnAddresses": ["0xABCDEF123456789abcdef1234567890abcdef12345678", "0xABC123456789abcdef1234567890abcdef12345678"], + "optionalDVNAddresses": ["0xDEFABC123456789abcdef1234567890abcdef12345678"], + "optionalThreshold": 2 + }, + "receiveConfig": { + "dvnAddresses": ["0xABCDEF123456789abcdef1234567890abcdef12345678", "0xABC123456789abcdef1234567890abcdef12345678"], + "optionalThreshold": 1 + } + } const dvnConfigResponse = await fireblocks.setLayerZeroDvnConfig(payload); name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.contractInteractions.decodeContractData(contractInteractionsApiDecodeContractDataRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.setLayerZeroDvnConfig(tokenizationApiSetLayerZeroDvnConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().decodeContractData(contractDataDecodeRequest,\ - \ contractAddress, baseAssetId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().setLayerZeroDvnConfig(setLayerZeroDvnConfigRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.contract_interactions.decode_contract_data(contract_data_decode_request,\ - \ contract_address, base_asset_id, idempotency_key);" + code: "response = fireblocks.tokenization.set_layer_zero_dvn_config(set_layer_zero_dvn_config_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.contractInteractions.decodeContractData(contractInteractionsApiDecodeContractDataRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.setLayerZeroDvnConfig(tokenizationApiSetLayerZeroDvnConfigRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().decodeContractData(contractDataDecodeRequest,\ - \ contractAddress, baseAssetId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().setLayerZeroDvnConfig(setLayerZeroDvnConfigRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.contract_interactions.decode_contract_data(contract_data_decode_request,\ - \ contract_address, base_asset_id, idempotency_key);" + source: "response = fireblocks.tokenization.set_layer_zero_dvn_config(set_layer_zero_dvn_config_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /contract_interactions/base_asset_id/{baseAssetId}/tx_hash/{txHash}: + /tokenization/multichain/bridge/layerzero/config/{adapterTokenLinkId}/dvns: get: - description: Retrieve the contract address by blockchain native asset ID and - transaction hash - operationId: getContractAddress + description: Retrieve the DVN (Data Verification Network) configuration for + a specific adapter. Returns DVN configurations for channels between the source + adapter and its peers. + operationId: getLayerZeroDvnConfig 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 - - description: The blockchain base assetId - example: ETH_TEST3 + - description: The token link id of the adapter token link + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d explode: false in: path - name: baseAssetId + name: adapterTokenLinkId required: true schema: + format: uuid type: string style: simple - - description: The transaction hash - example: 0x3b015ca0518c55d7bff4e3f5aa5d0431705771553ba8a95cf20e34cb597f57f6 - explode: false - in: path - name: txHash - required: true + - description: Optional peer adapter token link ID to filter results + example: 6add4f2a-b206-4114-8f94-2882618ffbb4 + explode: true + in: query + name: peerAdapterTokenLinkId + required: false schema: + format: uuid type: string - style: simple + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ContractAddressResponse" - description: Retrieved The Contract Address Successfully - default: - $ref: "#/components/responses/Error" - summary: Get contract address by transaction hash + $ref: "#/components/schemas/GetLayerZeroDvnConfigResponse" + description: LayerZero DVN configuration retrieved successfully + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Get LayerZero DVN configuration tags: - - Contract Interactions + - Tokenization x-rate-limit-category: read x-readme: code-samples: - - language: python - code: "contract_address = fireblocks.get_contract_address(base_asset_id,\ - \ tx_hash)" - name: Fireblocks SDK Python example (Legacy) - language: javascript - code: "const contractAddress = await fireblocks.getContractAddress(baseAssetId,\ - \ txHash);" + code: "const adapterTokenLinkId = \"b70701f4-d7b1-4795-a8ee-b09cdb5b850d\"\ + ; const peerAdapterTokenLinkId = \"6add4f2a-b206-4114-8f94-2882618ffbb4\"\ + ; // optional const dvnConfigResponse = await fireblocks.getLayerZeroDvnConfig(adapterTokenLinkId,\ + \ { peerAdapterTokenLinkId });" name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.contractInteractions.getContractAddress(contractInteractionsApiGetContractAddressRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getLayerZeroDvnConfig(tokenizationApiGetLayerZeroDvnConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().getContractAddress(baseAssetId,\ - \ txHash, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().getLayerZeroDvnConfig(adapterTokenLinkId,\ + \ peerAdapterTokenLinkId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.contract_interactions.get_contract_address(base_asset_id,\ - \ tx_hash, idempotency_key);" + code: "response = fireblocks.tokenization.get_layer_zero_dvn_config(adapter_token_link_id,\ + \ peer_adapter_token_link_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.contractInteractions.getContractAddress(contractInteractionsApiGetContractAddressRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getLayerZeroDvnConfig(tokenizationApiGetLayerZeroDvnConfigRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.contractInteractions().getContractAddress(baseAssetId, txHash,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().getLayerZeroDvnConfig(adapterTokenLinkId,\ + \ peerAdapterTokenLinkId);" - lang: Python - source: "response = fireblocks.contract_interactions.get_contract_address(base_asset_id,\ - \ tx_hash, idempotency_key);" + source: "response = fireblocks.tokenization.get_layer_zero_dvn_config(adapter_token_link_id,\ + \ peer_adapter_token_link_id);" x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/roles: + /tokenization/multichain/bridge/layerzero/validate: get: - description: Returns a list of currently active roles for the specified baseAssetId - and contractAddress. - operationId: getActiveRolesForContract + description: Validate the LayerZero channel configuration between adapters. + This endpoint checks if the channel configuration is correct and returns any + validation errors. + operationId: validateLayerZeroChannelConfig parameters: - - description: The blockchain base assetId - example: ETH_TEST3 - explode: false - in: path - name: baseAssetId + - description: The token link ID of the adapter + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + explode: true + in: query + name: adapterTokenLinkId required: true schema: + format: uuid type: string - style: simple - - description: The contract address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: contractAddress + style: form + - description: Peer adapter token link ID to validate against + example: 6add4f2a-b206-4114-8f94-2882618ffbb4 + explode: true + in: query + name: peerAdapterTokenLinkId required: true schema: + format: uuid type: string - style: simple + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ActiveRolesResponse" - description: Successfully retrieved the list of active roles - default: - $ref: "#/components/responses/Error" - summary: List of active roles for a given contract address and base asset ID + $ref: "#/components/schemas/ValidateLayerZeroChannelResponse" + description: LayerZero channel configuration validation completed + "400": + $ref: "#/components/responses/BadRequestError" + "404": + $ref: "#/components/responses/OriginalTokenLinkNotFoundError" + "422": + $ref: "#/components/responses/BridgingProtocolBlockchainMetadataNotFoundError" + "500": + $ref: "#/components/responses/InternalServerError" + summary: Validate LayerZero channel configuration tags: - - Onchain Data + - Tokenization x-rate-limit-category: read x-readme: code-samples: + - language: javascript + code: "const adapterTokenLinkId = \"b70701f4-d7b1-4795-a8ee-b09cdb5b850d\"\ + ; const peerAdapterTokenLinkId = \"6add4f2a-b206-4114-8f94-2882618ffbb4\"\ + ; const validationResponse = await fireblocks.validateLayerZeroChannelConfig({\ + \ \n adapterTokenLinkId,\n peerAdapterTokenLinkId \n});" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getActiveRolesForContract(onchainDataApiGetActiveRolesForContractRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.validateLayerZeroChannelConfig(tokenizationApiValidateLayerZeroChannelConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId,\ - \ contractAddress);" + code: "CompletableFuture>\ + \ response = fireblocks.tokenization().validateLayerZeroChannelConfig(adapterTokenLinkId,\ + \ peerAdapterTokenLinkId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_active_roles_for_contract(base_asset_id,\ - \ contract_address);" + code: "response = fireblocks.tokenization.validate_layer_zero_channel_config(adapter_token_link_id,\ + \ peer_adapter_token_link_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getActiveRolesForContract(onchainDataApiGetActiveRolesForContractRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.validateLayerZeroChannelConfig(tokenizationApiValidateLayerZeroChannelConfigRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId,\ - \ contractAddress);" + source: "CompletableFuture>\ + \ response = fireblocks.tokenization().validateLayerZeroChannelConfig(adapterTokenLinkId,\ + \ peerAdapterTokenLinkId);" - lang: Python - source: "response = fireblocks.onchain_data.get_active_roles_for_contract(base_asset_id,\ - \ contract_address);" + source: "response = fireblocks.tokenization.validate_layer_zero_channel_config(adapter_token_link_id,\ + \ peer_adapter_token_link_id);" x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/access_registry_address/{accessRegistryAddress}/list: + /tokenization/collections: get: - description: Returns the current state of addresses in the specified access - registry. Only addresses that are currently active (added but not removed) - are included. - operationId: getAccessRegistryCurrentState + description: |- + Get collections (paginated). + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: getLinkedCollections parameters: - - description: The blockchain base assetId - example: ETH_TEST3 - explode: false - in: path - name: baseAssetId - required: true - schema: - type: string - style: simple - - description: The access registry address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: accessRegistryAddress - required: true - schema: - type: string - style: simple - - description: Page cursor to get the next page" - example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + - description: "Page cursor to get the next page, for example - \"MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==\"" explode: true in: query name: pageCursor @@ -18181,653 +18477,443 @@ paths: name: pageSize required: false schema: + default: 100 maximum: 100 minimum: 1 - type: integer - style: form - - description: Sorting field (enum). - explode: true - in: query - name: sortBy - required: false - schema: - default: dateAdded - enum: - - dateAdded - - address - type: string + type: number style: form - - description: ASC / DESC ordering (default DESC) + - description: A comma separated list of statuses to filter. Default is "COMPLETED" + example: COMPLETED explode: true in: query - name: order + name: status required: false - schema: - default: DESC - enum: - - ASC - - DESC - type: string + schema: {} style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/AccessRegistryCurrentStateResponse" - description: Access registry current state retrieved successfully + $ref: "#/components/schemas/GetLinkedCollectionsPaginatedResponse" + description: Collection fetched successfully default: $ref: "#/components/responses/Error" - summary: Get the current state of addresses in an access registry + summary: Get collections tags: - - Onchain Data - x-rate-limit-category: read + - Tokenization + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getAccessRegistryCurrentState(onchainDataApiGetAccessRegistryCurrentStateRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.getLinkedCollections(tokenizationApiGetLinkedCollectionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId,\ - \ accessRegistryAddress, pageCursor, pageSize, sortBy, order);" + code: "CompletableFuture>\ + \ response = fireblocks.tokenization().getLinkedCollections(pageCursor,\ + \ pageSize, status);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_access_registry_current_state(base_asset_id,\ - \ access_registry_address, page_cursor, page_size, sort_by, order);" + code: "response = fireblocks.tokenization.get_linked_collections(page_cursor,\ + \ page_size, status);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getAccessRegistryCurrentState(onchainDataApiGetAccessRegistryCurrentStateRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.getLinkedCollections(tokenizationApiGetLinkedCollectionsRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId,\ - \ accessRegistryAddress, pageCursor, pageSize, sortBy, order);" + source: "CompletableFuture>\ + \ response = fireblocks.tokenization().getLinkedCollections(pageCursor,\ + \ pageSize, status);" - lang: Python - source: "response = fireblocks.onchain_data.get_access_registry_current_state(base_asset_id,\ - \ access_registry_address, page_cursor, page_size, sort_by, order);" + source: "response = fireblocks.tokenization.get_linked_collections(page_cursor,\ + \ page_size, status);" x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/access_registry_address/{accessRegistryAddress}/summary: - get: - description: Returns a summary of the current state of the access registry for - the specified baseAssetId and accessRegistryAddress. - operationId: getAccessRegistrySummary + post: + description: |- + Create a new collection and link it as a token. + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, and Editor. + operationId: createNewCollection parameters: - - description: The blockchain base assetId - example: ETH_TEST3 + - 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: path - name: baseAssetId - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple - - description: The access registry address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - explode: false - in: path - name: accessRegistryAddress + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CollectionDeployRequestDto" required: true - schema: - type: string - style: simple responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/AccessRegistrySummaryResponse" - description: Successfully retrieved the summary of the access registry state + $ref: "#/components/schemas/CollectionLinkDto" + description: Collection was created successfully default: $ref: "#/components/responses/Error" - summary: Summary of access registry state + summary: Create a new collection tags: - - Onchain Data - x-rate-limit-category: read + - Tokenization + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getAccessRegistrySummary(onchainDataApiGetAccessRegistrySummaryRequest);" + code: "const response: Promise> =\ + \ fireblocks.tokenization.createNewCollection(tokenizationApiCreateNewCollectionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.onchainData().getAccessRegistrySummary(baseAssetId, accessRegistryAddress);" + code: "CompletableFuture> response = fireblocks.tokenization().createNewCollection(collectionDeployRequestDto,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_access_registry_summary(base_asset_id,\ - \ access_registry_address);" + code: "response = fireblocks.tokenization.create_new_collection(collection_deploy_request_dto,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getAccessRegistrySummary(onchainDataApiGetAccessRegistrySummaryRequest);" + source: "const response: Promise> =\ + \ fireblocks.tokenization.createNewCollection(tokenizationApiCreateNewCollectionRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.onchainData().getAccessRegistrySummary(baseAssetId, accessRegistryAddress);" + source: "CompletableFuture> response = fireblocks.tokenization().createNewCollection(collectionDeployRequestDto,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.onchain_data.get_access_registry_summary(base_asset_id,\ - \ access_registry_address);" + source: "response = fireblocks.tokenization.create_new_collection(collection_deploy_request_dto,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/transactions: - get: - description: "Returns a paginated list of onchain transactions for the specified\ - \ contract address and base asset ID, optionally filtered by date range." - operationId: getOnchainTransactions + /tokenization/collections/{id}: + delete: + description: Delete a collection link + operationId: unlinkCollection parameters: - - description: The blockchain base assetId - example: ETH_TEST3 + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: baseAssetId + name: id required: true schema: type: string style: simple - - description: The contract address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + responses: + "204": + description: Collection unlinked successfully + "404": + description: Link for collection does not exist + default: + $ref: "#/components/responses/Error" + summary: Delete a collection link + tags: + - Tokenization + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tokenization.unlinkCollection(tokenizationApiUnlinkCollectionRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.tokenization().unlinkCollection(id); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.tokenization.unlink_collection(id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tokenization.unlinkCollection(tokenizationApiUnlinkCollectionRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.tokenization().unlinkCollection(id); + - lang: Python + source: response = fireblocks.tokenization.unlink_collection(id); + x-accepts: + - application/json + get: + description: Get a collection by id + operationId: getCollectionById + parameters: + - description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: contractAddress + name: id required: true schema: type: string style: simple - - description: Start date of the time range in ISO 8601 format - example: 2025-01-16T15:45:00Z - explode: true - in: query - name: startDate - required: false - schema: - format: date-time - type: string - style: form - - description: End date of the time range in ISO 8601 format - example: 2025-01-16T15:45:00Z - explode: true - in: query - name: endDate - required: false - schema: - format: date-time - type: string - style: form - - description: Page cursor to get the next page" - example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: "Number of items per page (max 100), requesting more then 100\ - \ will return 100 items" - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Sorting field (enum). - explode: true - in: query - name: sortBy - required: false - schema: - default: blockTimestamp - enum: - - blockTimestamp - - blockNumber - - transactionHash - type: string - style: form - - description: ASC / DESC ordering (default DESC) - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC - type: string - style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/OnchainTransactionsPagedResponse" - description: Onchain transactions fetched successfully + $ref: "#/components/schemas/CollectionLinkDto" + description: Collection fetched successfully default: $ref: "#/components/responses/Error" - summary: Fetch onchain transactions for a contract + summary: Get a collection by id tags: - - Onchain Data + - Tokenization x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getOnchainTransactions(onchainDataApiGetOnchainTransactionsRequest);" + code: "const response: Promise> =\ + \ fireblocks.tokenization.getCollectionById(tokenizationApiGetCollectionByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.onchainData().getOnchainTransactions(baseAssetId,\ - \ contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order);" + code: CompletableFuture> response = fireblocks.tokenization().getCollectionById(id); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_onchain_transactions(base_asset_id,\ - \ contract_address, start_date, end_date, page_cursor, page_size, sort_by,\ - \ order);" + code: response = fireblocks.tokenization.get_collection_by_id(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getOnchainTransactions(onchainDataApiGetOnchainTransactionsRequest);" + source: "const response: Promise> =\ + \ fireblocks.tokenization.getCollectionById(tokenizationApiGetCollectionByIdRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.onchainData().getOnchainTransactions(baseAssetId,\ - \ contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order);" + source: CompletableFuture> response = fireblocks.tokenization().getCollectionById(id); - lang: Python - source: "response = fireblocks.onchain_data.get_onchain_transactions(base_asset_id,\ - \ contract_address, start_date, end_date, page_cursor, page_size, sort_by,\ - \ order);" + source: response = fireblocks.tokenization.get_collection_by_id(id); x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/total_supply: + /tokenization/collections/{id}/tokens/{tokenId}: get: - description: Returns the paginated total supply history of the specified contract - with optional date range and interval filtering. - operationId: getContractTotalSupply + description: Get collection token details by id + operationId: fetchCollectionTokenDetails parameters: - - description: The blockchain base assetId - example: ETH_TEST3 + - description: The collection link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: baseAssetId + name: id required: true schema: type: string style: simple - - description: The contract address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + - description: The tokenId as it appears on the blockchain + example: "1" explode: false in: path - name: contractAddress + name: tokenId required: true schema: type: string style: simple - - description: Start date of the time range in ISO 8601 format - example: 2025-01-16T15:45:00Z - explode: true - in: query - name: startDate - required: false - schema: - format: date-time - type: string - style: form - - description: End date of the time range in ISO 8601 format - example: 2025-01-16T15:45:00Z - explode: true - in: query - name: endDate - required: false - schema: - format: date-time - type: string - style: form - - description: Time interval for grouping data - example: day - explode: true - in: query - name: interval - required: false - schema: - default: day - enum: - - hour - - day - - week - - month - type: string - style: form - - description: Page cursor to get the next page" - example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: "Number of items per page (max 100), requesting more then 100\ - \ will return 100 items" - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Sorting field (enum). Sorting only supported by 'blockTimestamp' - explode: true - in: query - name: sortBy - required: false - schema: - default: blockTimestamp - enum: - - blockTimestamp - type: string - style: form - - description: ASC / DESC ordering (default DESC) - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC - type: string - style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TotalSupplyPagedResponse" - description: Successfully retrieved the contract total supply history + $ref: "#/components/schemas/CollectionLinkDto" + description: Collection token details were fetched successfully default: $ref: "#/components/responses/Error" - summary: Get historical total supply data for a contract + summary: Get collection token details tags: - - Onchain Data + - Tokenization x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getContractTotalSupply(onchainDataApiGetContractTotalSupplyRequest);" + code: "const response: Promise> =\ + \ fireblocks.tokenization.fetchCollectionTokenDetails(tokenizationApiFetchCollectionTokenDetailsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress,\ - \ startDate, endDate, interval, pageCursor, pageSize, sortBy, order);" + code: "CompletableFuture> response = fireblocks.tokenization().fetchCollectionTokenDetails(id,\ + \ tokenId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_contract_total_supply(base_asset_id,\ - \ contract_address, start_date, end_date, interval, page_cursor, page_size,\ - \ sort_by, order);" + code: "response = fireblocks.tokenization.fetch_collection_token_details(id,\ + \ token_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getContractTotalSupply(onchainDataApiGetContractTotalSupplyRequest);" + source: "const response: Promise> =\ + \ fireblocks.tokenization.fetchCollectionTokenDetails(tokenizationApiFetchCollectionTokenDetailsRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress,\ - \ startDate, endDate, interval, pageCursor, pageSize, sortBy, order);" + source: "CompletableFuture> response = fireblocks.tokenization().fetchCollectionTokenDetails(id,\ + \ tokenId);" - lang: Python - source: "response = fireblocks.onchain_data.get_contract_total_supply(base_asset_id,\ - \ contract_address, start_date, end_date, interval, page_cursor, page_size,\ - \ sort_by, order);" + source: "response = fireblocks.tokenization.fetch_collection_token_details(id,\ + \ token_id);" x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/account_address/{accountAddress}/balance_history: - get: - description: Returns the paginated balance history of the specified account - in a contract with optional date range and interval filtering. - operationId: getContractBalanceHistory + /tokenization/collections/{id}/tokens/mint: + post: + description: Mint tokens and upload metadata + operationId: mintCollectionToken parameters: - - description: The blockchain base assetId - example: ETH_TEST3 + - description: The collection link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: baseAssetId + name: id required: true schema: type: string style: simple - - description: The contract address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + - 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: path - name: contractAddress - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple - - description: The account address to get balance history for - explode: false - in: path - name: accountAddress + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CollectionMintRequestDto" required: true - schema: - example: 0x1234567890abcdef1234567890abcdef12345678 - type: string - style: simple - - description: Start date of the time range in ISO 8601 format - example: 2025-01-16T15:45:00Z - explode: true - in: query - name: startDate - required: false - schema: - format: date-time - type: string - style: form - - description: End date of the time range in ISO 8601 format - example: 2025-01-16T15:45:00Z - explode: true - in: query - name: endDate - required: false - schema: - format: date-time - type: string - style: form - - description: Time interval for grouping data - example: day - explode: true - in: query - name: interval - required: false - schema: - default: day - enum: - - hour - - day - - week - - month - type: string - style: form - - description: Page cursor to get the next page" - example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: "Number of items per page (max 100), requesting more then 100\ - \ will return 100 items" - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Sorting field (enum). Sorting only supported by 'blockTimestamp' - explode: true - in: query - name: sortBy - required: false - schema: - default: blockTimestamp - enum: - - blockTimestamp - type: string - style: form - - description: ASC / DESC ordering (default DESC) - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC - type: string - style: form responses: - "200": + "202": content: application/json: schema: - $ref: "#/components/schemas/BalanceHistoryPagedResponse" - description: Successfully retrieved the contract balance history + $ref: "#/components/schemas/CollectionMintResponseDto" + description: Tokens minted successfully default: $ref: "#/components/responses/Error" - summary: Get historical balance data for a specific account in a contract + summary: Mint tokens tags: - - Onchain Data - x-rate-limit-category: read + - Tokenization + x-rate-limit-category: async x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getContractBalanceHistory(onchainDataApiGetContractBalanceHistoryRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.mintCollectionToken(tokenizationApiMintCollectionTokenRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress,\ - \ accountAddress, startDate, endDate, interval, pageCursor, pageSize,\ - \ sortBy, order);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().mintCollectionToken(collectionMintRequestDto,\ + \ id, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_contract_balance_history(base_asset_id,\ - \ contract_address, account_address, start_date, end_date, interval, page_cursor,\ - \ page_size, sort_by, order);" + code: "response = fireblocks.tokenization.mint_collection_token(collection_mint_request_dto,\ + \ id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getContractBalanceHistory(onchainDataApiGetContractBalanceHistoryRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.mintCollectionToken(tokenizationApiMintCollectionTokenRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress,\ - \ accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy,\ - \ order);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().mintCollectionToken(collectionMintRequestDto,\ + \ id, idempotencyKey);" - lang: Python - source: "response = fireblocks.onchain_data.get_contract_balance_history(base_asset_id,\ - \ contract_address, account_address, start_date, end_date, interval, page_cursor,\ - \ page_size, sort_by, order);" + source: "response = fireblocks.tokenization.mint_collection_token(collection_mint_request_dto,\ + \ id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/summary: - get: - description: Returns the total number of unique addresses holding balances and - the total supply for the specified contract. - operationId: getContractBalancesSummary + /tokenization/collections/{id}/tokens/burn: + post: + description: Burn tokens in a collection + operationId: burnCollectionToken parameters: - - description: The blockchain base assetId - example: ETH_TEST3 + - description: The collection link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb explode: false in: path - name: baseAssetId + name: id required: true schema: type: string style: simple - - description: The contract address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + - 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: path - name: contractAddress - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CollectionBurnRequestDto" + required: true responses: - "200": + "202": content: application/json: schema: - $ref: "#/components/schemas/TokenContractSummaryResponse" - description: Successfully retrieved the summary for the token contract + $ref: "#/components/schemas/CollectionBurnResponseDto" + description: Tokens burned successfully default: $ref: "#/components/responses/Error" - summary: Get summary for the token contract + summary: Burn tokens tags: - - Onchain Data - x-rate-limit-category: read + - Tokenization + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getContractBalancesSummary(onchainDataApiGetContractBalancesSummaryRequest);" + code: "const response: Promise>\ + \ = fireblocks.tokenization.burnCollectionToken(tokenizationApiBurnCollectionTokenRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.onchainData().getContractBalancesSummary(baseAssetId, contractAddress);" + code: "CompletableFuture> response\ + \ = fireblocks.tokenization().burnCollectionToken(collectionBurnRequestDto,\ + \ id, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_contract_balances_summary(base_asset_id,\ - \ contract_address);" + code: "response = fireblocks.tokenization.burn_collection_token(collection_burn_request_dto,\ + \ id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getContractBalancesSummary(onchainDataApiGetContractBalancesSummaryRequest);" + source: "const response: Promise>\ + \ = fireblocks.tokenization.burnCollectionToken(tokenizationApiBurnCollectionTokenRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.onchainData().getContractBalancesSummary(baseAssetId, contractAddress);" + source: "CompletableFuture> response\ + \ = fireblocks.tokenization().burnCollectionToken(collectionBurnRequestDto,\ + \ id, idempotencyKey);" - lang: Python - source: "response = fireblocks.onchain_data.get_contract_balances_summary(base_asset_id,\ - \ contract_address);" + source: "response = fireblocks.tokenization.burn_collection_token(collection_burn_request_dto,\ + \ id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/balances: + /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions: get: - description: Returns the latest balance for each unique address with support - for numeric balance sorting. The `prev` cursor is reserved for future support. - operationId: getLatestBalancesForContract + description: |- + Return deployed contract's ABI by blockchain native asset id and contract address. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer. + operationId: getDeployedContractAbi parameters: - - description: The blockchain base assetId - example: ETH_TEST3 + - 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: path - name: baseAssetId - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple - - description: The contract address + - description: The contract's onchain address example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 explode: false in: path @@ -18836,427 +18922,325 @@ paths: schema: type: string style: simple - - description: Optional filter to get balance for a specific account address - explode: true - in: query - name: accountAddress - required: false - schema: - example: 0x1234567890abcdef1234567890abcdef12345678 - type: string - style: form - - description: Page cursor to get the next page" - example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: "Number of items per page (max 100), requesting more then 100\ - \ will return 100 items" - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Sorting field for balances - explode: true - in: query - name: sortBy - required: false - schema: - default: blockTimestamp - enum: - - accountAddress - - blockTimestamp - type: string - style: form - - description: ASC / DESC ordering (default DESC) - explode: true - in: query - name: order - required: false + - description: The blockchain base assetId + example: ETH + explode: false + in: path + name: baseAssetId + required: true schema: - default: DESC - enum: - - ASC - - DESC type: string - style: form + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/AddressBalancePagedResponse" - description: Successfully retrieved the latest balances for the contract + $ref: "#/components/schemas/ContractAbiResponseDto" + description: "" default: $ref: "#/components/responses/Error" - summary: Get latest balances for all addresses holding tokens from a contract + summary: Return deployed contract's ABI tags: - - Onchain Data + - Contract Interactions x-rate-limit-category: read x-readme: code-samples: + - language: python + code: "deployed_contract_abi = fireblocks.get_contracts_abi(base_asset_id,\ + \ contract_address)" + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: "const deployedContractAbi = await fireblocks.getContractAbi(baseAssetId,\ + \ contractAddress);" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.onchainData.getLatestBalancesForContract(onchainDataApiGetLatestBalancesForContractRequest);" + code: "const response: Promise>\ + \ = fireblocks.contractInteractions.getDeployedContractAbi(contractInteractionsApiGetDeployedContractAbiRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId,\ - \ contractAddress, accountAddress, pageCursor, pageSize, sortBy, order);" + code: "CompletableFuture> response =\ + \ fireblocks.contractInteractions().getDeployedContractAbi(contractAddress,\ + \ baseAssetId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.onchain_data.get_latest_balances_for_contract(base_asset_id,\ - \ contract_address, account_address, page_cursor, page_size, sort_by,\ - \ order);" + code: "response = fireblocks.contract_interactions.get_deployed_contract_abi(contract_address,\ + \ base_asset_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.onchainData.getLatestBalancesForContract(onchainDataApiGetLatestBalancesForContractRequest);" + source: "const response: Promise>\ + \ = fireblocks.contractInteractions.getDeployedContractAbi(contractInteractionsApiGetDeployedContractAbiRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId, contractAddress,\ - \ accountAddress, pageCursor, pageSize, sortBy, order);" + source: "CompletableFuture> response =\ + \ fireblocks.contractInteractions().getDeployedContractAbi(contractAddress,\ + \ baseAssetId, idempotencyKey);" - lang: Python - source: "response = fireblocks.onchain_data.get_latest_balances_for_contract(base_asset_id,\ - \ contract_address, account_address, page_cursor, page_size, sort_by, order);" + source: "response = fireblocks.contract_interactions.get_deployed_contract_abi(contract_address,\ + \ base_asset_id, idempotency_key);" x-accepts: - application/json - /staking/chains: - get: - description: |- - Returns an alphabetical list of blockchains supported for staking by the current workspace context. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: getChains + /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions/read: + post: + description: Call a read function on a deployed contract by blockchain native + asset id and contract address + operationId: readCallFunction + 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 + - description: The contract's onchain address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + explode: false + in: path + name: contractAddress + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ReadCallFunctionDto" + required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/StakingGetChainsResponse" - description: An array of supported chains was returned successfully. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/ParameterWithValueList" + description: Read Call Retrieved Successfully default: $ref: "#/components/responses/Error" - summary: List supported staking chains + summary: Call a read function on a deployed contract tags: - - Staking - x-rate-limit-category: query + - Contract Interactions x-readme: code-samples: + - language: python + code: "read_response = fireblocks.read_contract_call_function(base_asset_id,\ + \ contract_address, payload)" + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: "const readResponse= await fireblocks.readContractCallFunction(baseAssetId,\ + \ contractAddress, payload);" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.getChains();" + code: "const response: Promise>\ + \ = fireblocks.contractInteractions.readCallFunction(contractInteractionsApiReadCallFunctionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture>> response = fireblocks.staking().getChains(); + code: "CompletableFuture>> response\ + \ = fireblocks.contractInteractions().readCallFunction(readCallFunctionDto,\ + \ contractAddress, baseAssetId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.staking.get_chains(); + code: "response = fireblocks.contract_interactions.read_call_function(read_call_function_dto,\ + \ contract_address, base_asset_id, idempotency_key);" name: Fireblocks SDK Python example + x-rate-limit-category: read x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.getChains();" + source: "const response: Promise>\ + \ = fireblocks.contractInteractions.readCallFunction(contractInteractionsApiReadCallFunctionRequest);" - lang: Java - source: CompletableFuture>> response = fireblocks.staking().getChains(); + source: "CompletableFuture>> response\ + \ = fireblocks.contractInteractions().readCallFunction(readCallFunctionDto,\ + \ contractAddress, baseAssetId, idempotencyKey);" - lang: Python - source: response = fireblocks.staking.get_chains(); + source: "response = fireblocks.contract_interactions.read_call_function(read_call_function_dto,\ + \ contract_address, base_asset_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /staking/chains/{chainDescriptor}/chainInfo: - get: - description: "Returns chain-specific staking information such as epoch/slot\ - \ cadence, lockup or unbonding periods, fee/reward mechanics, and other operational\ - \ constraints." - operationId: getChainInfo + /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions/write: + post: + description: "Call a write function on a deployed contract by blockchain native\ + \ asset id and contract address. This creates an onchain transaction, thus\ + \ it is an async operation. It returns a transaction id that can be polled\ + \ for status check" + operationId: writeCallFunction parameters: - - description: "Protocol identifier for the chain info staking operation (e.g.,\ - \ ETH/MATIC/SOL)." + - 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 + - description: The contract's onchain address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 explode: false in: path - name: chainDescriptor + name: contractAddress required: true schema: - $ref: "#/components/schemas/ChainDescriptor" + type: string + style: simple + - explode: false + in: path + name: baseAssetId + required: true + schema: + type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WriteCallFunctionDto" + required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ChainInfoResponse" - description: Chain-specific staking information returned successfully. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": + "202": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/WriteCallFunctionResponseDto" + description: "" default: $ref: "#/components/responses/Error" - summary: Get chain-level staking parameters + summary: Call a write function on a deployed contract tags: - - Staking - x-rate-limit-category: query + - Contract Interactions x-readme: code-samples: + - language: python + code: "write_function_response = fireblocks.write_contract_call_function(base_asset_id,\ + \ contract_address, payload)" + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: "const writeFunctionResponse = await fireblocks.writeContractCallFunction(baseAssetId,\ + \ contractAddress, payload);" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> =\ - \ fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);" + code: "const response: Promise>\ + \ = fireblocks.contractInteractions.writeCallFunction(contractInteractionsApiWriteCallFunctionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.staking().getChainInfo(chainDescriptor); + code: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().writeCallFunction(writeCallFunctionDto,\ + \ contractAddress, baseAssetId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.staking.get_chain_info(chain_descriptor); + code: "response = fireblocks.contract_interactions.write_call_function(write_call_function_dto,\ + \ contract_address, base_asset_id, idempotency_key);" name: Fireblocks SDK Python example + x-rate-limit-category: async x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);" + source: "const response: Promise>\ + \ = fireblocks.contractInteractions.writeCallFunction(contractInteractionsApiWriteCallFunctionRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.staking().getChainInfo(chainDescriptor); + source: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().writeCallFunction(writeCallFunctionDto,\ + \ contractAddress, baseAssetId, idempotencyKey);" - lang: Python - source: response = fireblocks.staking.get_chain_info(chain_descriptor); + source: "response = fireblocks.contract_interactions.write_call_function(write_call_function_dto,\ + \ contract_address, base_asset_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /staking/chains/{chainDescriptor}/stake: - post: - description: "Creates a new staking position and returns its unique ID. For\ - \ Ethereum compounding validator (EIP-7251): when the 'id' of an existing\ - \ compounding validator position is provided, adds to that position; otherwise\ - \ creates a new position. For Ethereum legacy validator: creates a new position\ - \ regardless of existing delegations. For Cosmos chains and Ethereum liquid\ - \ staking (Lido): automatically add to existing positions for the same validator\ - \ provider and same vault account if one exists, otherwise create a new position.\ - \ For Solana and Polygon (MATIC/POL): always create new positions regardless\ - \ of existing delegations." - operationId: stake + /contract_interactions/base_asset_id/{baseAssetId}/tx_hash/{txHash}/receipt: + get: + description: "Retrieve the transaction receipt by blockchain native asset ID\ + \ and transaction hash\n> **Note** > This functionality is exclusively available\ + \ for EVM (Ethereum Virtual Machine) compatible chains. \nEndpoint Permission:\ + \ Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer." + operationId: getTransactionReceipt parameters: - - description: "Protocol identifier for the stake staking operation (e.g., ATOM_COS/AXL/CELESTIA)." + - description: The blockchain base assetId + example: ETH_TEST6 explode: false in: path - name: chainDescriptor + name: baseAssetId required: true schema: - $ref: "#/components/schemas/ChainDescriptor" + type: string 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." + - description: The transaction hash + example: 0x3b015ca0518c55d7bff4e3f5aa5d0431705771553ba8a95cf20e34cb597f57f6 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: txHash + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/StakeRequest" - required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/StakeResponse" - description: Stake request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/TransactionReceiptResponse" + description: Retrieved The Transaction Receipt Successfully default: $ref: "#/components/responses/Error" - summary: Initiate or add to existing stake + summary: Get transaction receipt tags: - - Staking - x-rate-limit-category: write + - Contract Interactions + x-rate-limit-category: read x-readme: code-samples: + - language: python + code: "transaction_receipt = fireblocks.get_transaction_receipt(base_asset_id,\ + \ tx_hash)" + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: "const transactionReceipt = await fireblocks.getTransactionReceipt(baseAssetId,\ + \ txHash);" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.staking.stake(stakingApiStakeRequest);" + code: "const response: Promise>\ + \ = fireblocks.contractInteractions.getTransactionReceipt(contractInteractionsApiGetTransactionReceiptRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.staking().stake(stakeRequest,\ - \ chainDescriptor, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().getTransactionReceipt(baseAssetId,\ + \ txHash);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.stake(stake_request, chain_descriptor,\ - \ idempotency_key);" + code: "response = fireblocks.contract_interactions.get_transaction_receipt(base_asset_id,\ + \ tx_hash);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.stake(stakingApiStakeRequest);" + source: "const response: Promise>\ + \ = fireblocks.contractInteractions.getTransactionReceipt(contractInteractionsApiGetTransactionReceiptRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.staking().stake(stakeRequest,\ - \ chainDescriptor, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().getTransactionReceipt(baseAssetId,\ + \ txHash);" - lang: Python - source: "response = fireblocks.staking.stake(stake_request, chain_descriptor,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.contract_interactions.get_transaction_receipt(base_asset_id,\ + \ tx_hash);" x-accepts: - application/json - /staking/chains/{chainDescriptor}/unstake: + /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/decode: post: - description: Submits a chain-specific unstake request. - operationId: unstake + description: "Decode a function call data, error, or event log from a deployed\ + \ contract by blockchain native asset id and contract address." + operationId: decodeContractData parameters: - - description: "Protocol identifier for the unstake staking operation (e.g.,\ - \ SOL/SOL_TEST/MATIC)." - explode: false - in: path - name: chainDescriptor - required: true - schema: - $ref: "#/components/schemas/ChainDescriptor" - 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\ @@ -19268,114 +19252,91 @@ paths: schema: type: string style: simple + - description: The contract's onchain address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + explode: false + in: path + name: contractAddress + required: true + schema: + type: string + style: simple + - description: The blockchain native asset identifier + example: ETH + explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/UnstakeRequest" + $ref: "#/components/schemas/ContractDataDecodeRequest" required: true responses: - "201": - description: Unstake request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + $ref: "#/components/schemas/ContractDataDecodedResponse" + description: Decoded data retrieved successfully + "400": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/ContractDataDecodeError" + description: "Bad request, invalid input data or parameters" default: $ref: "#/components/responses/Error" - summary: Initiate unstake + summary: "Decode a function call data, error, or event log" tags: - - Staking - x-rate-limit-category: write + - Contract Interactions + x-rate-limit-category: read x-readme: code-samples: + - language: javascript + code: |- + const payload = { + "data": "0xcd21db4f000000000000000000000000000000000000000000000000000000006790c645", + "dataType": "ERROR" + } const decodeResponse = await fireblocks.decodeContractData(baseAssetId, contractAddress, payload); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.staking.unstake(stakingApiUnstakeRequest);" + code: "const response: Promise>\ + \ = fireblocks.contractInteractions.decodeContractData(contractInteractionsApiDecodeContractDataRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.staking().unstake(unstakeRequest,\ - \ chainDescriptor, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().decodeContractData(contractDataDecodeRequest,\ + \ contractAddress, baseAssetId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.unstake(unstake_request, chain_descriptor,\ - \ idempotency_key);" + code: "response = fireblocks.contract_interactions.decode_contract_data(contract_data_decode_request,\ + \ contract_address, base_asset_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.unstake(stakingApiUnstakeRequest);" + source: "const response: Promise>\ + \ = fireblocks.contractInteractions.decodeContractData(contractInteractionsApiDecodeContractDataRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.staking().unstake(unstakeRequest,\ - \ chainDescriptor, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().decodeContractData(contractDataDecodeRequest,\ + \ contractAddress, baseAssetId, idempotencyKey);" - lang: Python - source: "response = fireblocks.staking.unstake(unstake_request, chain_descriptor,\ - \ idempotency_key);" + source: "response = fireblocks.contract_interactions.decode_contract_data(contract_data_decode_request,\ + \ contract_address, base_asset_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /staking/chains/{chainDescriptor}/withdraw: - post: - description: |- - Withdraws funds that have completed the unbonding period. Typically requires the position to be deactivated first (unstake → unbond → withdraw). Amount and timing vary by chain protocol. - - Partial withdrawal is supported for ETH compounding validators (EIP-7251/Pectra) and Cosmos chains via the optional 'amount' field. For ETH compounding validators, the remaining balance must be at least 32 ETH after the withdrawal. For all other chains, omitting 'amount' withdraws the entire available balance. - operationId: withdraw + /contract_interactions/base_asset_id/{baseAssetId}/tx_hash/{txHash}: + get: + description: Retrieve the contract address by blockchain native asset ID and + transaction hash + operationId: getContractAddress parameters: - - description: "Protocol identifier for the withdraw staking operation (e.g.,\ - \ ATOM_COS/ETH/STETH_ETH)." - explode: false - in: path - name: chainDescriptor - required: true - schema: - $ref: "#/components/schemas/ChainDescriptor" - 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\ @@ -19387,775 +19348,687 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/WithdrawRequest" + - description: The blockchain base assetId + example: ETH_TEST3 + explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple + - description: The transaction hash + example: 0x3b015ca0518c55d7bff4e3f5aa5d0431705771553ba8a95cf20e34cb597f57f6 + explode: false + in: path + name: txHash required: true + schema: + type: string + style: simple responses: - "201": - description: Withdraw request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/ContractAddressResponse" + description: Retrieved The Contract Address Successfully default: $ref: "#/components/responses/Error" - summary: Withdraw staked funds + summary: Get contract address by transaction hash tags: - - Staking - x-rate-limit-category: write + - Contract Interactions + x-rate-limit-category: read x-readme: code-samples: + - language: python + code: "contract_address = fireblocks.get_contract_address(base_asset_id,\ + \ tx_hash)" + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: "const contractAddress = await fireblocks.getContractAddress(baseAssetId,\ + \ txHash);" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);" + code: "const response: Promise>\ + \ = fireblocks.contractInteractions.getContractAddress(contractInteractionsApiGetContractAddressRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.staking().withdraw(withdrawRequest,\ - \ chainDescriptor, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().getContractAddress(baseAssetId,\ + \ txHash, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor,\ - \ idempotency_key);" + code: "response = fireblocks.contract_interactions.get_contract_address(base_asset_id,\ + \ tx_hash, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);" + source: "const response: Promise>\ + \ = fireblocks.contractInteractions.getContractAddress(contractInteractionsApiGetContractAddressRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.staking().withdraw(withdrawRequest,\ - \ chainDescriptor, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.contractInteractions().getContractAddress(baseAssetId, txHash,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.contract_interactions.get_contract_address(base_asset_id,\ + \ tx_hash, idempotency_key);" x-accepts: - application/json - /staking/chains/{chainDescriptor}/claim_rewards: - post: - description: "Claims available staking rewards for the specified chain and vault.\ - \ Supported chains: Solana and Polygon (POL/Matic). Behavior depends on protocol\ - \ reward distribution." - operationId: claimRewards + /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/roles: + get: + description: Returns a list of currently active roles for the specified baseAssetId + and contractAddress. + operationId: getActiveRolesForContract parameters: - - description: "Protocol identifier for the claim rewards staking operation\ - \ (e.g., POL/MATIC/SOL)." - example: SOL + - description: The blockchain base assetId + example: ETH_TEST3 explode: false in: path - name: chainDescriptor + name: baseAssetId required: true schema: - enum: - - SOL - - SOL_TEST - - MATIC - - POL - - POL_TEST type: string 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." + - description: The contract address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: contractAddress + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ClaimRewardsRequest" - required: true responses: - "201": - description: Claim-rewards request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/ActiveRolesResponse-2" + description: Successfully retrieved the list of active roles default: $ref: "#/components/responses/Error" - summary: Claim accrued rewards + summary: List of active roles for a given contract address and base asset ID tags: - - Staking - x-rate-limit-category: write + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getActiveRolesForContract(onchainDataApiGetActiveRolesForContractRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.staking().claimRewards(claimRewardsRequest,\ - \ chainDescriptor, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId,\ + \ contractAddress);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.claim_rewards(claim_rewards_request,\ - \ chain_descriptor, idempotency_key);" + code: "response = fireblocks.onchain_data.get_active_roles_for_contract(base_asset_id,\ + \ contract_address);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getActiveRolesForContract(onchainDataApiGetActiveRolesForContractRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.staking().claimRewards(claimRewardsRequest,\ - \ chainDescriptor, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId,\ + \ contractAddress);" - lang: Python - source: "response = fireblocks.staking.claim_rewards(claim_rewards_request,\ - \ chain_descriptor, idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.onchain_data.get_active_roles_for_contract(base_asset_id,\ + \ contract_address);" x-accepts: - application/json - /staking/chains/{chainDescriptor}/split: - post: - description: "Splits a staking position by creating a new stake account with\ - \ the requested amount, while keeping the original account with the remaining\ - \ balance. Supported chains: Solana (SOL)." - operationId: split + /onchain_data/base_asset_id/{baseAssetId}/access_registry_address/{accessRegistryAddress}/list: + get: + description: Returns the current state of addresses in the specified access + registry. Only addresses that are currently active (added but not removed) + are included. + operationId: getAccessRegistryCurrentState parameters: - - description: "Protocol identifier for the staking operation (e.g., SOL)." - example: SOL + - description: The blockchain base assetId + example: ETH_TEST3 explode: false in: path - name: chainDescriptor + name: baseAssetId required: true schema: - enum: - - SOL - - SOL_TEST type: string 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." + - description: The access registry address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: accessRegistryAddress + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SplitRequest" - required: true + - description: Page cursor to get the next page" + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more then 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). + explode: true + in: query + name: sortBy + required: false + schema: + default: dateAdded + enum: + - dateAdded + - address + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SplitResponse" - description: Split request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/AccessRegistryCurrentStateResponse-2" + description: Access registry current state retrieved successfully default: $ref: "#/components/responses/Error" - summary: Split a staking position + summary: Get the current state of addresses in an access registry tags: - - Staking - x-rate-limit-category: write + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.staking.split(stakingApiSplitRequest);" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getAccessRegistryCurrentState(onchainDataApiGetAccessRegistryCurrentStateRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.staking().split(splitRequest,\ - \ chainDescriptor, idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId,\ + \ accessRegistryAddress, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.split(split_request, chain_descriptor,\ - \ idempotency_key);" + code: "response = fireblocks.onchain_data.get_access_registry_current_state(base_asset_id,\ + \ access_registry_address, page_cursor, page_size, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.split(stakingApiSplitRequest);" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getAccessRegistryCurrentState(onchainDataApiGetAccessRegistryCurrentStateRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.staking().split(splitRequest,\ - \ chainDescriptor, idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId,\ + \ accessRegistryAddress, pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.staking.split(split_request, chain_descriptor,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.onchain_data.get_access_registry_current_state(base_asset_id,\ + \ access_registry_address, page_cursor, page_size, sort_by, order);" x-accepts: - application/json - /staking/chains/{chainDescriptor}/merge: - post: - description: |- - Merges the source stake account into the destination, consolidating the balance into the destination and closing the source account once complete. Both accounts must be from the same validator provider and of same vault account.. Supported chains: Solana (SOL). - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: mergeStakeAccounts + /onchain_data/base_asset_id/{baseAssetId}/access_registry_address/{accessRegistryAddress}/summary: + get: + description: Returns a summary of the current state of the access registry for + the specified baseAssetId and accessRegistryAddress. + operationId: getAccessRegistrySummary parameters: - - description: "Protocol identifier for the merge staking operation (e.g., SOL)." - example: SOL + - description: The blockchain base assetId + example: ETH_TEST3 explode: false in: path - name: chainDescriptor + name: baseAssetId required: true schema: - enum: - - SOL - - SOL_TEST type: string 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." + - description: The access registry address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: accessRegistryAddress + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/MergeStakeAccountsRequest" - required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/MergeStakeAccountsResponse" - description: Merge request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/AccessRegistrySummaryResponse" + description: Successfully retrieved the summary of the access registry state default: $ref: "#/components/responses/Error" - summary: Merge staking positions + summary: Summary of access registry state tags: - - Staking - x-rate-limit-category: write + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.mergeStakeAccounts(stakingApiMergeStakeAccountsRequest);" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getAccessRegistrySummary(onchainDataApiGetAccessRegistrySummaryRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.staking().mergeStakeAccounts(mergeStakeAccountsRequest,\ - \ chainDescriptor, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.onchainData().getAccessRegistrySummary(baseAssetId, accessRegistryAddress);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.merge_stake_accounts(merge_stake_accounts_request,\ - \ chain_descriptor, idempotency_key);" + code: "response = fireblocks.onchain_data.get_access_registry_summary(base_asset_id,\ + \ access_registry_address);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.mergeStakeAccounts(stakingApiMergeStakeAccountsRequest);" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getAccessRegistrySummary(onchainDataApiGetAccessRegistrySummaryRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.staking().mergeStakeAccounts(mergeStakeAccountsRequest, chainDescriptor,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.onchainData().getAccessRegistrySummary(baseAssetId, accessRegistryAddress);" - lang: Python - source: "response = fireblocks.staking.merge_stake_accounts(merge_stake_accounts_request,\ - \ chain_descriptor, idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.onchain_data.get_access_registry_summary(base_asset_id,\ + \ access_registry_address);" x-accepts: - application/json - /staking/chains/{chainDescriptor}/consolidate: - post: - description: |- - Consolidates the source staking position into the destination, merging the balance into the destination and closing the source position once complete. Both positions must be from the same vault account (i.e. same withdrawal credentials). On chain, this translates into a consolidation transaction, where the source validator is consolidated into the destination validator. Supported chains: Ethereum (ETH) only. - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor. - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: consolidate + /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/transactions: + get: + description: "Returns a paginated list of onchain transactions for the specified\ + \ contract address and base asset ID, optionally filtered by date range." + operationId: getOnchainTransactions parameters: - - description: "Protocol identifier for the staking operation (e.g., ETH)." - example: ETH + - description: The blockchain base assetId + example: ETH_TEST3 explode: false in: path - name: chainDescriptor + name: baseAssetId required: true schema: - enum: - - ETH - - ETH_TEST6 - - ETH_TEST_HOODI type: string 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." + - description: The contract address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: contractAddress + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/MergeStakeAccountsRequest" - required: true + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: startDate + required: false + schema: + format: date-time + type: string + style: form + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: endDate + required: false + schema: + format: date-time + type: string + style: form + - description: Page cursor to get the next page" + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more then 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - blockTimestamp + - blockNumber + - transactionHash + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/MergeStakeAccountsResponse" - description: Merge request accepted and created. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/OnchainTransactionsPagedResponse-2" + description: Onchain transactions fetched successfully default: $ref: "#/components/responses/Error" - summary: Consolidate staking positions (ETH validator consolidation) + summary: Fetch onchain transactions for a contract tags: - - Staking - x-rate-limit-category: write + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.consolidate(stakingApiConsolidateRequest);" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getOnchainTransactions(onchainDataApiGetOnchainTransactionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.staking().consolidate(mergeStakeAccountsRequest, chainDescriptor,\ - \ idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.onchainData().getOnchainTransactions(baseAssetId,\ + \ contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.consolidate(merge_stake_accounts_request,\ - \ chain_descriptor, idempotency_key);" + code: "response = fireblocks.onchain_data.get_onchain_transactions(base_asset_id,\ + \ contract_address, start_date, end_date, page_cursor, page_size, sort_by,\ + \ order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.consolidate(stakingApiConsolidateRequest);" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getOnchainTransactions(onchainDataApiGetOnchainTransactionsRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.staking().consolidate(mergeStakeAccountsRequest, chainDescriptor,\ - \ idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.onchainData().getOnchainTransactions(baseAssetId,\ + \ contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.staking.consolidate(merge_stake_accounts_request,\ - \ chain_descriptor, idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.onchain_data.get_onchain_transactions(base_asset_id,\ + \ contract_address, start_date, end_date, page_cursor, page_size, sort_by,\ + \ order);" x-accepts: - application/json - /staking/positions: + /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/total_supply: get: - description: |- - Returns all staking positions with core details: amounts, rewards, status, chain, and vault. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: getAllDelegations + description: Returns the paginated total supply history of the specified contract + with optional date range and interval filtering. + operationId: getContractTotalSupply parameters: - - description: "Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA).\ - \ If omitted, positions across all supported chains are returned." + - description: The blockchain base assetId + example: ETH_TEST3 + explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple + - description: The contract address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + explode: false + in: path + name: contractAddress + required: true + schema: + type: string + style: simple + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z explode: true in: query - name: chainDescriptor + name: startDate required: false schema: - $ref: "#/components/schemas/ChainDescriptor" + format: date-time + type: string style: form - - description: Filter positions by vault account ID. + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z explode: true in: query - name: vaultAccountId + name: endDate required: false schema: - example: "1" - format: numeric + format: date-time + type: string + style: form + - description: Time interval for grouping data + example: day + explode: true + in: query + name: interval + required: false + schema: + default: day + enum: + - hour + - day + - week + - month + type: string + style: form + - description: Page cursor to get the next page" + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more then 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field (enum). Sorting only supported by 'blockTimestamp' + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - blockTimestamp + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC type: string - x-fb-entity: vault_account style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/StakingGetAllDelegationsResponse" - description: Positions retrieved successfully. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/TotalSupplyPagedResponse-2" + description: Successfully retrieved the contract total supply history default: $ref: "#/components/responses/Error" - summary: List staking positions + summary: Get historical total supply data for a contract tags: - - Staking - x-rate-limit-category: query + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getContractTotalSupply(onchainDataApiGetContractTotalSupplyRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>> response = fireblocks.staking().getAllDelegations(chainDescriptor,\ - \ vaultAccountId);" + code: "CompletableFuture> response\ + \ = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress,\ + \ startDate, endDate, interval, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.get_all_delegations(chain_descriptor,\ - \ vault_account_id);" + code: "response = fireblocks.onchain_data.get_contract_total_supply(base_asset_id,\ + \ contract_address, start_date, end_date, interval, page_cursor, page_size,\ + \ sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getContractTotalSupply(onchainDataApiGetContractTotalSupplyRequest);" - lang: Java - source: "CompletableFuture>> response = fireblocks.staking().getAllDelegations(chainDescriptor,\ - \ vaultAccountId);" + source: "CompletableFuture> response\ + \ = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress,\ + \ startDate, endDate, interval, pageCursor, pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.staking.get_all_delegations(chain_descriptor,\ - \ vault_account_id);" + source: "response = fireblocks.onchain_data.get_contract_total_supply(base_asset_id,\ + \ contract_address, start_date, end_date, interval, page_cursor, page_size,\ + \ sort_by, order);" x-accepts: - application/json - /staking/positions_paginated: + /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/account_address/{accountAddress}/balance_history: get: - description: |- - Returns staking positions with core details: amounts, rewards, status, chain, and vault. It supports cursor-based pagination for efficient data retrieval. This endpoint always returns a paginated response with {data, next} structure. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: getPositions + description: Returns the paginated balance history of the specified account + in a contract with optional date range and interval filtering. + operationId: getContractBalanceHistory parameters: - - description: "Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA).\ - \ If omitted, positions across all supported chains are returned." + - description: The blockchain base assetId + example: ETH_TEST3 + explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple + - description: The contract address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + explode: false + in: path + name: contractAddress + required: true + schema: + type: string + style: simple + - description: The account address to get balance history for + explode: false + in: path + name: accountAddress + required: true + schema: + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + style: simple + - description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z explode: true in: query - name: chainDescriptor + name: startDate required: false schema: - $ref: "#/components/schemas/ChainDescriptor" + format: date-time + type: string style: form - - description: "Filter positions by Fireblocks vault account ID. If omitted,\ - \ positions across all vault accounts are returned." - example: "10" + - description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z explode: true in: query - name: vaultAccountId + name: endDate required: false schema: - format: numeric + format: date-time type: string - x-fb-entity: vault_account style: form - - description: "Number of results per page. When provided, the response returns\ - \ a paginated object with {data, next}. If omitted, all results are returned\ - \ as an array." + - description: Time interval for grouping data + example: day + explode: true + in: query + name: interval + required: false + schema: + default: day + enum: + - hour + - day + - week + - month + type: string + style: form + - description: Page cursor to get the next page" + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more then 100\ + \ will return 100 items" + example: 10 explode: true in: query name: pageSize - required: true + required: false schema: - default: 10 - example: 10 - format: int32 maximum: 100 minimum: 1 type: integer style: form - - description: Cursor for the next page of results. Use the value from the 'next' - field in the previous response. + - description: Sorting field (enum). Sorting only supported by 'blockTimestamp' explode: true in: query - name: pageCursor + name: sortBy required: false schema: - example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + default: blockTimestamp + enum: + - blockTimestamp type: string style: form - description: ASC / DESC ordering (default DESC) @@ -20168,7 +20041,6 @@ paths: enum: - ASC - DESC - example: ASC type: string style: form responses: @@ -20176,242 +20048,242 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/StakingPositionsPaginatedResponse" - description: Positions retrieved successfully with pagination. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Bad request: missing/invalid fields, unsupported amount, or\ - \ malformed payload." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/BalanceHistoryPagedResponse-2" + description: Successfully retrieved the contract balance history default: $ref: "#/components/responses/Error" - summary: List staking positions (Paginated) + summary: Get historical balance data for a specific account in a contract tags: - - Staking - x-rate-limit-category: query + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.getPositions(stakingApiGetPositionsRequest);" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getContractBalanceHistory(onchainDataApiGetContractBalanceHistoryRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.staking().getPositions(pageSize, chainDescriptor,\ - \ vaultAccountId, pageCursor, order);" + code: "CompletableFuture> response\ + \ = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress,\ + \ accountAddress, startDate, endDate, interval, pageCursor, pageSize,\ + \ sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.get_positions(page_size, chain_descriptor,\ - \ vault_account_id, page_cursor, order);" + code: "response = fireblocks.onchain_data.get_contract_balance_history(base_asset_id,\ + \ contract_address, account_address, start_date, end_date, interval, page_cursor,\ + \ page_size, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.getPositions(stakingApiGetPositionsRequest);" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getContractBalanceHistory(onchainDataApiGetContractBalanceHistoryRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.staking().getPositions(pageSize, chainDescriptor,\ - \ vaultAccountId, pageCursor, order);" + source: "CompletableFuture> response\ + \ = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress,\ + \ accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy,\ + \ order);" - lang: Python - source: "response = fireblocks.staking.get_positions(page_size, chain_descriptor,\ - \ vault_account_id, page_cursor, order);" + source: "response = fireblocks.onchain_data.get_contract_balance_history(base_asset_id,\ + \ contract_address, account_address, start_date, end_date, interval, page_cursor,\ + \ page_size, sort_by, order);" x-accepts: - application/json - /staking/positions/summary: + /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/summary: get: - description: "Returns an aggregated cross-vault summary: active/inactive counts,\ - \ total staked, and total rewards per chain." - operationId: getSummary + description: Returns the total number of unique addresses holding balances and + the total supply for the specified contract. + operationId: getContractBalancesSummary + parameters: + - description: The blockchain base assetId + example: ETH_TEST3 + explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple + - description: The contract address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + explode: false + in: path + name: contractAddress + required: true + schema: + type: string + style: simple responses: "200": - content: - application/json: - example: - active: - - chainDescriptor: ETH - amount: "64.036604667" - - chainDescriptor: SOL - amount: "0.077345939" - inactive: - - chainDescriptor: ETH - amount: "0" - - chainDescriptor: SOL - amount: "0" - rewardsAmount: - - chainDescriptor: ETH - amount: "0.036604667" - - chainDescriptor: SOL - amount: "0.001345939" - totalStaked: - - chainDescriptor: ETH - amount: "64.036604667" - - chainDescriptor: SOL - amount: "0.077345939" - schema: - $ref: "#/components/schemas/DelegationSummary" - description: Summary across all vaults returned successfully. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "403": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider/validator." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Not found: requested resource does not exist (e.g., position,\ - \ validator, provider, or wallet)." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "429": - content: - application/json: - schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: "Rate limit exceeded: slow down and retry later." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + $ref: "#/components/schemas/TokenContractSummaryResponse" + description: Successfully retrieved the summary for the token contract + default: + $ref: "#/components/responses/Error" + summary: Get summary for the token contract + tags: + - Onchain Data + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.onchainData.getContractBalancesSummary(onchainDataApiGetContractBalancesSummaryRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.onchainData().getContractBalancesSummary(baseAssetId, contractAddress);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.onchain_data.get_contract_balances_summary(base_asset_id,\ + \ contract_address);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.onchainData.getContractBalancesSummary(onchainDataApiGetContractBalancesSummaryRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.onchainData().getContractBalancesSummary(baseAssetId, contractAddress);" + - lang: Python + source: "response = fireblocks.onchain_data.get_contract_balances_summary(base_asset_id,\ + \ contract_address);" + x-accepts: + - application/json + /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/balances: + get: + description: Returns the latest balance for each unique address with support + for numeric balance sorting. The `prev` cursor is reserved for future support. + operationId: getLatestBalancesForContract + parameters: + - description: The blockchain base assetId + example: ETH_TEST3 + explode: false + in: path + name: baseAssetId + required: true + schema: + type: string + style: simple + - description: The contract address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + explode: false + in: path + name: contractAddress + required: true + schema: + type: string + style: simple + - description: Optional filter to get balance for a specific account address + explode: true + in: query + name: accountAddress + required: false + schema: + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + style: form + - description: Page cursor to get the next page" + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of items per page (max 100), requesting more then 100\ + \ will return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sorting field for balances + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - accountAddress + - blockTimestamp + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form + responses: + "200": content: application/json: schema: - $ref: "#/components/schemas/StakingErrorSchema" - description: Internal error while processing the request. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/AddressBalancePagedResponse-2" + description: Successfully retrieved the latest balances for the contract default: $ref: "#/components/responses/Error" - summary: Get positions summary + summary: Get latest balances for all addresses holding tokens from a contract tags: - - Staking - x-rate-limit-category: query + - Onchain Data + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.staking.getSummary();" + code: "const response: Promise>\ + \ = fireblocks.onchainData.getLatestBalancesForContract(onchainDataApiGetLatestBalancesForContractRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.staking().getSummary(); + code: "CompletableFuture> response\ + \ = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId,\ + \ contractAddress, accountAddress, pageCursor, pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.staking.get_summary(); + code: "response = fireblocks.onchain_data.get_latest_balances_for_contract(base_asset_id,\ + \ contract_address, account_address, page_cursor, page_size, sort_by,\ + \ order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.staking.getSummary();" + source: "const response: Promise>\ + \ = fireblocks.onchainData.getLatestBalancesForContract(onchainDataApiGetLatestBalancesForContractRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.staking().getSummary(); + source: "CompletableFuture> response\ + \ = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId, contractAddress,\ + \ accountAddress, pageCursor, pageSize, sortBy, order);" - lang: Python - source: response = fireblocks.staking.get_summary(); + source: "response = fireblocks.onchain_data.get_latest_balances_for_contract(base_asset_id,\ + \ contract_address, account_address, page_cursor, page_size, sort_by, order);" x-accepts: - application/json - /staking/positions/summary/vaults: + /staking/chains: get: - description: "Returns per-vault aggregates: status breakdown, total staked,\ - \ and total rewards per chain." - operationId: getSummaryByVault + description: |- + Returns an alphabetical list of blockchains supported for staking by the current workspace context. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: getChains responses: "200": content: application/json: - example: - "0": - active: - - chainDescriptor: SOL - amount: "0.015202376" - inactive: - - chainDescriptor: SOL - amount: "0" - rewardsAmount: - - chainDescriptor: SOL - amount: "0.000202376" - totalStaked: - - chainDescriptor: SOL - amount: "0.015202376" - "1": - active: - - chainDescriptor: ETH - amount: "64.036604667" - - chainDescriptor: SOL - amount: "0.011191566" - inactive: - - chainDescriptor: ETH - amount: "0" - - chainDescriptor: SOL - amount: "0" - rewardsAmount: - - chainDescriptor: ETH - amount: "0.036604667" - - chainDescriptor: SOL - amount: "0.000191566" - totalStaked: - - chainDescriptor: ETH - amount: "64.036604667" - - chainDescriptor: SOL - amount: "0.011191566" schema: - $ref: "#/components/schemas/StakingGetSummaryByVaultResponse" - description: Per-vault summary returned successfully. + $ref: "#/components/schemas/StakingGetChainsResponse" + description: An array of supported chains was returned successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20455,55 +20327,55 @@ paths: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get positions summary by vault + summary: List supported staking chains tags: - Staking x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.getSummaryByVault();" + code: "const response: Promise>\ + \ = fireblocks.staking.getChains();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.staking().getSummaryByVault(); + code: CompletableFuture>> response = fireblocks.staking().getChains(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.staking.get_summary_by_vault(); + code: response = fireblocks.staking.get_chains(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.getSummaryByVault();" + source: "const response: Promise>\ + \ = fireblocks.staking.getChains();" - lang: Java - source: CompletableFuture> response - = fireblocks.staking().getSummaryByVault(); + source: CompletableFuture>> response = fireblocks.staking().getChains(); - lang: Python - source: response = fireblocks.staking.get_summary_by_vault(); + source: response = fireblocks.staking.get_chains(); x-accepts: - application/json - /staking/positions/{id}: + /staking/chains/{chainDescriptor}/chainInfo: get: - description: "Returns full details for a single staking position: amounts, rewards,\ - \ status, chain, and vault." - operationId: getDelegationById + description: "Returns chain-specific staking information such as epoch/slot\ + \ cadence, lockup or unbonding periods, fee/reward mechanics, and other operational\ + \ constraints." + operationId: getChainInfo parameters: - - description: Unique identifier of the staking position. + - description: "Protocol identifier for the chain info staking operation (e.g.,\ + \ ETH/MATIC/SOL)." explode: false in: path - name: id + name: chainDescriptor required: true schema: - type: string + $ref: "#/components/schemas/ChainDescriptor" style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/Delegation" - description: Position retrieved successfully. + $ref: "#/components/schemas/ChainInfoResponse" + description: Chain-specific staking information returned successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20557,43 +20429,87 @@ paths: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get position details + summary: Get chain-level staking parameters tags: - Staking x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);" + code: "const response: Promise> =\ + \ fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.staking().getDelegationById(id); + code: CompletableFuture> response = fireblocks.staking().getChainInfo(chainDescriptor); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.staking.get_delegation_by_id(id); + code: response = fireblocks.staking.get_chain_info(chain_descriptor); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);" + source: "const response: Promise> =\ + \ fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.staking().getDelegationById(id); + source: CompletableFuture> response = fireblocks.staking().getChainInfo(chainDescriptor); - lang: Python - source: response = fireblocks.staking.get_delegation_by_id(id); + source: response = fireblocks.staking.get_chain_info(chain_descriptor); x-accepts: - application/json - /staking/providers: - get: - description: |- - Returns all available staking providers with metadata such as name, ID, and supported chains. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: getProviders + /staking/chains/{chainDescriptor}/stake: + post: + description: "Creates a new staking position and returns its unique ID. For\ + \ Ethereum compounding validator (EIP-7251): when the 'id' of an existing\ + \ compounding validator position is provided, adds to that position; otherwise\ + \ creates a new position. For Ethereum legacy validator: creates a new position\ + \ regardless of existing delegations. For Cosmos chains and Ethereum liquid\ + \ staking (Lido): automatically add to existing positions for the same validator\ + \ provider and same vault account if one exists, otherwise create a new position.\ + \ For Solana and Polygon (MATIC/POL): always create new positions regardless\ + \ of existing delegations." + operationId: stake + parameters: + - description: "Protocol identifier for the stake staking operation (e.g., ATOM_COS/AXL/CELESTIA)." + explode: false + in: path + name: chainDescriptor + required: true + schema: + $ref: "#/components/schemas/ChainDescriptor" + 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/StakeRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/StakingGetProvidersResponse" - description: Supported providers retrieved successfully. + $ref: "#/components/schemas/StakeResponse" + description: Stake request accepted and created. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20637,45 +20553,48 @@ paths: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: List staking providers + summary: Initiate or add to existing stake tags: - Staking - x-rate-limit-category: query + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.staking.getProviders();" + code: "const response: Promise> = fireblocks.staking.stake(stakingApiStakeRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture>> response = fireblocks.staking().getProviders(); + code: "CompletableFuture> response = fireblocks.staking().stake(stakeRequest,\ + \ chainDescriptor, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.staking.get_providers(); + code: "response = fireblocks.staking.stake(stake_request, chain_descriptor,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.staking.getProviders();" + source: "const response: Promise> = fireblocks.staking.stake(stakingApiStakeRequest);" - lang: Java - source: CompletableFuture>> response = fireblocks.staking().getProviders(); + source: "CompletableFuture> response = fireblocks.staking().stake(stakeRequest,\ + \ chainDescriptor, idempotencyKey);" - lang: Python - source: response = fireblocks.staking.get_providers(); + source: "response = fireblocks.staking.stake(stake_request, chain_descriptor,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /staking/providers/{providerId}/approveTermsOfService: + /staking/chains/{chainDescriptor}/unstake: post: - description: Approves the provider's terms of service. Must be called once before - performing any staking operation with this provider. - operationId: approveTermsOfServiceByProviderId + description: Submits a chain-specific unstake request. + operationId: unstake parameters: - - description: Unique identifier of the staking provider. + - description: "Protocol identifier for the unstake staking operation (e.g.,\ + \ SOL/SOL_TEST/MATIC)." explode: false in: path - name: providerId + name: chainDescriptor required: true schema: - $ref: "#/components/schemas/StakingProvider" + $ref: "#/components/schemas/ChainDescriptor" 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\ @@ -20688,9 +20607,15 @@ paths: schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UnstakeRequest" + required: true responses: "201": - description: Terms of service accepted. + description: Unstake request accepted and created. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20744,93 +20669,82 @@ paths: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Approve provider terms of service + summary: Initiate unstake tags: - Staking x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);" + code: "const response: Promise> = fireblocks.staking.unstake(stakingApiUnstakeRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId,\ - \ idempotencyKey);" + code: "CompletableFuture> response = fireblocks.staking().unstake(unstakeRequest,\ + \ chainDescriptor, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id,\ + code: "response = fireblocks.staking.unstake(unstake_request, chain_descriptor,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);" + source: "const response: Promise> = fireblocks.staking.unstake(stakingApiUnstakeRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId,\ - \ idempotencyKey);" + source: "CompletableFuture> response = fireblocks.staking().unstake(unstakeRequest,\ + \ chainDescriptor, idempotencyKey);" - lang: Python - source: "response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id,\ + source: "response = fireblocks.staking.unstake(unstake_request, chain_descriptor,\ \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /earn/actions: - get: - description: | - Returns a paginated list of lending actions (deposits and withdrawals) for the authenticated tenant. + /staking/chains/{chainDescriptor}/withdraw: + post: + description: |- + Withdraws funds that have completed the unbonding period. Typically requires the position to be deactivated first (unstake → unbond → withdraw). Amount and timing vary by chain protocol. - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: getEarnActions + Partial withdrawal is supported for ETH compounding validators (EIP-7251/Pectra) and Cosmos chains via the optional 'amount' field. For ETH compounding validators, the remaining balance must be at least 32 ETH after the withdrawal. For all other chains, omitting 'amount' withdraws the entire available balance. + operationId: withdraw parameters: - - description: Cursor for the next or previous page of results. - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: "Number of items per page (default 100, max 100)." - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - format: int32 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Field to sort results by. - explode: true - in: query - name: sortBy - required: false + - description: "Protocol identifier for the withdraw staking operation (e.g.,\ + \ ATOM_COS/ETH/STETH_ETH)." + explode: false + in: path + name: chainDescriptor + required: true schema: - enum: - - createdAt - - updatedAt - type: string - style: form - - description: Sort order (ASC or DESC). - explode: true - in: query - name: order + $ref: "#/components/schemas/ChainDescriptor" + 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: - default: DESC - enum: - - ASC - - DESC - example: ASC type: string - style: form + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WithdrawRequest" + required: true responses: - "200": + "201": + description: Withdraw request accepted and created. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": content: application/json: schema: - $ref: "#/components/schemas/GetActionsResponse" - description: OK + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20838,9 +20752,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20848,8 +20762,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "Not found: requested resource does not exist." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20857,7 +20772,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -20866,51 +20781,65 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: List earn lending actions + summary: Withdraw staked funds tags: - - Earn (Beta) - x-rate-limit-category: query + - Staking + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.earnBeta.getEarnActions(earnBetaApiGetEarnActionsRequest);" + code: "const response: Promise> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.earnBeta().getEarnActions(pageCursor,\ - \ pageSize, sortBy, order);" + code: "CompletableFuture> response = fireblocks.staking().withdraw(withdrawRequest,\ + \ chainDescriptor, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.earn_beta.get_earn_actions(page_cursor, page_size,\ - \ sort_by, order);" + code: "response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.earnBeta.getEarnActions(earnBetaApiGetEarnActionsRequest);" + source: "const response: Promise> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.earnBeta().getEarnActions(pageCursor,\ - \ pageSize, sortBy, order);" + source: "CompletableFuture> response = fireblocks.staking().withdraw(withdrawRequest,\ + \ chainDescriptor, idempotencyKey);" - lang: Python - source: "response = fireblocks.earn_beta.get_earn_actions(page_cursor, page_size,\ - \ sort_by, order);" + source: "response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json + /staking/chains/{chainDescriptor}/claim_rewards: post: - description: | - Creates and runs a sequence of on-chain steps for either a deposit into or a withdrawal from an earn - vault/market. Specify the operation with `action` in the request body (`DEPOSIT` or `WITHDRAW`). - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: createEarnAction + description: "Claims available staking rewards for the specified chain and vault.\ + \ Supported chains: Solana and Polygon (POL/Matic). Behavior depends on protocol\ + \ reward distribution." + operationId: claimRewards parameters: + - description: "Protocol identifier for the claim rewards staking operation\ + \ (e.g., POL/MATIC/SOL)." + example: SOL + explode: false + in: path + name: chainDescriptor + required: true + schema: + enum: + - SOL + - SOL_TEST + - MATIC + - POL + - POL_TEST + type: string + 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\ @@ -20926,15 +20855,11 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CreateEarnActionRequest" + $ref: "#/components/schemas/ClaimRewardsRequest" required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/CreateEarnActionResponse" - description: OK + "201": + description: Claim-rewards request accepted and created. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20942,7 +20867,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Bad request: missing/invalid fields, unsupported amount, or\ \ malformed payload." headers: @@ -20952,9 +20877,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted provider." + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20962,9 +20887,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "Not found: requested resource does not exist (e.g., opportunity,\ - \ provider, or wallet)." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -20972,7 +20897,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -20981,68 +20906,95 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Create and execute a lending action (deposit or withdraw) + summary: Claim accrued rewards tags: - - Earn (Beta) + - Staking x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.earnBeta.createEarnAction(earnBetaApiCreateEarnActionRequest);" + code: "const response: Promise> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.earnBeta().createEarnAction(createEarnActionRequest, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.staking().claimRewards(claimRewardsRequest,\ + \ chainDescriptor, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.earn_beta.create_earn_action(create_earn_action_request,\ - \ idempotency_key);" + code: "response = fireblocks.staking.claim_rewards(claim_rewards_request,\ + \ chain_descriptor, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.earnBeta.createEarnAction(earnBetaApiCreateEarnActionRequest);" + source: "const response: Promise> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.earnBeta().createEarnAction(createEarnActionRequest, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.staking().claimRewards(claimRewardsRequest,\ + \ chainDescriptor, idempotencyKey);" - lang: Python - source: "response = fireblocks.earn_beta.create_earn_action(create_earn_action_request,\ - \ idempotency_key);" + source: "response = fireblocks.staking.claim_rewards(claim_rewards_request,\ + \ chain_descriptor, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /earn/actions/{id}: - get: - description: | - Returns one lending action by its action sequence id (tenant-scoped). - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: getEarnAction + /staking/chains/{chainDescriptor}/split: + post: + description: "Splits a staking position by creating a new stake account with\ + \ the requested amount, while keeping the original account with the remaining\ + \ balance. Supported chains: Solana (SOL)." + operationId: split parameters: - - description: Action sequence id (UUID). + - description: "Protocol identifier for the staking operation (e.g., SOL)." + example: SOL explode: false in: path - name: id + name: chainDescriptor required: true schema: - minLength: 1 + enum: + - SOL + - SOL_TEST + type: string + 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/SplitRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/GetActionResponse" - description: OK + $ref: "#/components/schemas/SplitResponse" + description: Split request accepted and created. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21050,9 +21002,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21060,9 +21012,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "Not found: action does not exist or is not visible for this\ - \ tenant." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21070,7 +21022,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -21079,95 +21031,95 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get a single earn lending action + summary: Split a staking position tags: - - Earn (Beta) - x-rate-limit-category: query + - Staking + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.earnBeta.getEarnAction(earnBetaApiGetEarnActionRequest);" + code: "const response: Promise> = fireblocks.staking.split(stakingApiSplitRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.earnBeta().getEarnAction(id); + code: "CompletableFuture> response = fireblocks.staking().split(splitRequest,\ + \ chainDescriptor, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.earn_beta.get_earn_action(id); + code: "response = fireblocks.staking.split(split_request, chain_descriptor,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.earnBeta.getEarnAction(earnBetaApiGetEarnActionRequest);" + source: "const response: Promise> = fireblocks.staking.split(stakingApiSplitRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.earnBeta().getEarnAction(id); + source: "CompletableFuture> response = fireblocks.staking().split(splitRequest,\ + \ chainDescriptor, idempotencyKey);" - lang: Python - source: response = fireblocks.earn_beta.get_earn_action(id); + source: "response = fireblocks.staking.split(split_request, chain_descriptor,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /earn/opportunities: - get: - description: | - Get list of earn opportunities (vaults). - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: getEarnOpportunities + /staking/chains/{chainDescriptor}/merge: + post: + description: |- + Merges the source stake account into the destination, consolidating the balance into the destination and closing the source account once complete. Both accounts must be from the same validator provider and of same vault account.. Supported chains: Solana (SOL). + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: mergeStakeAccounts parameters: - - description: Cursor for the next or previous page of results. - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Number of items per page. - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - format: int32 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Field to sort results by. - explode: true - in: query - name: sortBy - required: false + - description: "Protocol identifier for the merge staking operation (e.g., SOL)." + example: SOL + explode: false + in: path + name: chainDescriptor + required: true schema: + enum: + - SOL + - SOL_TEST type: string - style: form - - description: Sort order (ASC or DESC). - explode: true - in: query - name: order + 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: - default: DESC - enum: - - ASC - - DESC - example: ASC type: string - style: form + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/MergeStakeAccountsRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/GetOpportunitiesResponse" - description: OK + $ref: "#/components/schemas/MergeStakeAccountsResponse" + description: Merge request accepted and created. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21175,9 +21127,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21185,8 +21137,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "Not found: requested resource does not exist." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21194,7 +21147,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -21203,118 +21156,101 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get list of earn opportunities + summary: Merge staking positions tags: - - Earn (Beta) - x-rate-limit-category: query + - Staking + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.earnBeta.getEarnOpportunities(earnBetaApiGetEarnOpportunitiesRequest);" + code: "const response: Promise>\ + \ = fireblocks.staking.mergeStakeAccounts(stakingApiMergeStakeAccountsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.earnBeta().getEarnOpportunities(pageCursor, pageSize, sortBy,\ - \ order);" + code: "CompletableFuture> response\ + \ = fireblocks.staking().mergeStakeAccounts(mergeStakeAccountsRequest,\ + \ chainDescriptor, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.earn_beta.get_earn_opportunities(page_cursor,\ - \ page_size, sort_by, order);" + code: "response = fireblocks.staking.merge_stake_accounts(merge_stake_accounts_request,\ + \ chain_descriptor, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.earnBeta.getEarnOpportunities(earnBetaApiGetEarnOpportunitiesRequest);" + source: "const response: Promise>\ + \ = fireblocks.staking.mergeStakeAccounts(stakingApiMergeStakeAccountsRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.earnBeta().getEarnOpportunities(pageCursor, pageSize, sortBy,\ - \ order);" + source: "CompletableFuture> response\ + \ = fireblocks.staking().mergeStakeAccounts(mergeStakeAccountsRequest, chainDescriptor,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.earn_beta.get_earn_opportunities(page_cursor,\ - \ page_size, sort_by, order);" + source: "response = fireblocks.staking.merge_stake_accounts(merge_stake_accounts_request,\ + \ chain_descriptor, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /earn/positions: - get: - description: "Get list of earn positions for accounts tracked for this workspace.\ - \ \nOptional query parameters filter by chain, provider, and pagination.\n\ - \n**Note:** This endpoint is currently in beta and might be subject to changes.\n" - operationId: getEarnPositions + /staking/chains/{chainDescriptor}/consolidate: + post: + description: |- + Consolidates the source staking position into the destination, merging the balance into the destination and closing the source position once complete. Both positions must be from the same vault account (i.e. same withdrawal credentials). On chain, this translates into a consolidation transaction, where the source validator is consolidated into the destination validator. Supported chains: Ethereum (ETH) only. + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor. + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: consolidate parameters: - - explode: true - in: query - name: chainId - required: false - schema: - format: int32 - type: integer - style: form - - explode: true - in: query - name: providerId - required: false + - description: "Protocol identifier for the staking operation (e.g., ETH)." + example: ETH + explode: false + in: path + name: chainDescriptor + required: true schema: enum: - - MORPHO - - AAVE - type: string - style: form - - description: Cursor for the next or previous page of results. - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Number of items per page. - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - format: int32 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Field to sort results by. - explode: true - in: query - name: sortBy - required: false - schema: + - ETH + - ETH_TEST6 + - ETH_TEST_HOODI type: string - style: form - - description: Sort order (ASC or DESC). - explode: true - in: query - name: order + 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: - default: DESC - enum: - - ASC - - DESC - example: ASC type: string - style: form + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/MergeStakeAccountsRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/GetPositionsResponse" - description: OK + $ref: "#/components/schemas/MergeStakeAccountsResponse" + description: Merge request accepted and created. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21322,9 +21258,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21332,8 +21268,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "Not found: requested resource does not exist." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21341,7 +21278,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -21350,99 +21287,90 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get list of earn positions + summary: Consolidate staking positions (ETH validator consolidation) tags: - - Earn (Beta) - x-rate-limit-category: query + - Staking + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.earnBeta.getEarnPositions(earnBetaApiGetEarnPositionsRequest);" + code: "const response: Promise>\ + \ = fireblocks.staking.consolidate(stakingApiConsolidateRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.earnBeta().getEarnPositions(chainId,\ - \ providerId, pageCursor, pageSize, sortBy, order);" + code: "CompletableFuture> response\ + \ = fireblocks.staking().consolidate(mergeStakeAccountsRequest, chainDescriptor,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.earn_beta.get_earn_positions(chain_id, provider_id,\ - \ page_cursor, page_size, sort_by, order);" + code: "response = fireblocks.staking.consolidate(merge_stake_accounts_request,\ + \ chain_descriptor, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.earnBeta.getEarnPositions(earnBetaApiGetEarnPositionsRequest);" + source: "const response: Promise>\ + \ = fireblocks.staking.consolidate(stakingApiConsolidateRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.earnBeta().getEarnPositions(chainId,\ - \ providerId, pageCursor, pageSize, sortBy, order);" + source: "CompletableFuture> response\ + \ = fireblocks.staking().consolidate(mergeStakeAccountsRequest, chainDescriptor,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.earn_beta.get_earn_positions(chain_id, provider_id,\ - \ page_cursor, page_size, sort_by, order);" + source: "response = fireblocks.staking.consolidate(merge_stake_accounts_request,\ + \ chain_descriptor, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /earn/providers: + /staking/positions: get: - description: | - Get list of earn providers. - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: getEarnProviders + description: |- + Returns all staking positions with core details: amounts, rewards, status, chain, and vault. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: getAllDelegations parameters: - - description: Cursor for the next or previous page of results. + - description: "Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA).\ + \ If omitted, positions across all supported chains are returned." explode: true in: query - name: pageCursor + name: chainDescriptor required: false schema: - type: string + $ref: "#/components/schemas/ChainDescriptor" style: form - - description: Number of items per page. + - description: Filter positions by vault account ID. explode: true in: query - name: pageSize + name: vaultAccountId required: false schema: - default: 100 - format: int32 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Field to sort results by. - explode: true - in: query - name: sortBy - required: false - schema: - type: string - style: form - - description: Sort order (ASC or DESC). - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC - example: ASC - type: string + example: "1" + format: numeric + type: string + x-fb-entity: vault_account style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/GetProvidersResponse" - description: OK + $ref: "#/components/schemas/StakingGetAllDelegationsResponse" + description: Positions retrieved successfully. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21450,9 +21378,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21460,8 +21388,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "Not found: requested resource does not exist." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21469,7 +21398,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -21478,68 +21407,116 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get list of earn providers + summary: List staking positions tags: - - Earn (Beta) + - Staking x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.earnBeta.getEarnProviders(earnBetaApiGetEarnProvidersRequest);" + code: "const response: Promise>\ + \ = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.earnBeta().getEarnProviders(pageCursor,\ - \ pageSize, sortBy, order);" + code: "CompletableFuture>> response = fireblocks.staking().getAllDelegations(chainDescriptor,\ + \ vaultAccountId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.earn_beta.get_earn_providers(page_cursor, page_size,\ - \ sort_by, order);" + code: "response = fireblocks.staking.get_all_delegations(chain_descriptor,\ + \ vault_account_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.earnBeta.getEarnProviders(earnBetaApiGetEarnProvidersRequest);" + source: "const response: Promise>\ + \ = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.earnBeta().getEarnProviders(pageCursor,\ - \ pageSize, sortBy, order);" + source: "CompletableFuture>> response = fireblocks.staking().getAllDelegations(chainDescriptor,\ + \ vaultAccountId);" - lang: Python - source: "response = fireblocks.earn_beta.get_earn_providers(page_cursor, page_size,\ - \ sort_by, order);" + source: "response = fireblocks.staking.get_all_delegations(chain_descriptor,\ + \ vault_account_id);" x-accepts: - application/json - /earn/providers/approve_terms_of_service: - post: - description: | - Approves earn provider terms of service for this workspace (one-time per tenant). - When `isTermsApprovalRequired` is true on a provider (see list providers), - call this once before creating or executing earn actions with providers that require it. - After success, `GET /earn/providers` reflects `isTermsOfServiceApproved`. - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: approveTermsOfService + /staking/positions_paginated: + get: + description: |- + Returns staking positions with core details: amounts, rewards, status, chain, and vault. It supports cursor-based pagination for efficient data retrieval. This endpoint always returns a paginated response with {data, next} structure. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: getPositions 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 + - description: "Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA).\ + \ If omitted, positions across all supported chains are returned." + explode: true + in: query + name: chainDescriptor + required: false + schema: + $ref: "#/components/schemas/ChainDescriptor" + style: form + - description: "Filter positions by Fireblocks vault account ID. If omitted,\ + \ positions across all vault accounts are returned." + example: "10" + explode: true + in: query + name: vaultAccountId required: false schema: + format: numeric type: string - style: simple + x-fb-entity: vault_account + style: form + - description: "Number of results per page. When provided, the response returns\ + \ a paginated object with {data, next}. If omitted, all results are returned\ + \ as an array." + explode: true + in: query + name: pageSize + required: true + schema: + default: 10 + example: 10 + format: int32 + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Cursor for the next page of results. Use the value from the 'next' + field in the previous response. + explode: true + in: query + name: pageCursor + required: false + schema: + example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + type: string + style: form + - description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + example: ASC + type: string + style: form responses: - "204": - description: Terms of service accepted. + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingPositionsPaginatedResponse" + description: Positions retrieved successfully with pagination. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21547,7 +21524,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Bad request: missing/invalid fields, unsupported amount, or\ \ malformed payload." headers: @@ -21557,7 +21534,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ \ restricted provider/validator." headers: @@ -21567,7 +21544,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Not found: requested resource does not exist (e.g., position,\ \ validator, provider, or wallet)." headers: @@ -21577,7 +21554,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: @@ -21586,95 +21563,98 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Approve earn provider terms of service + summary: List staking positions (Paginated) tags: - - Earn (Beta) - x-rate-limit-category: write + - Staking + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.earnBeta.approveTermsOfService(earnBetaApiApproveTermsOfServiceRequest);" + code: "const response: Promise>\ + \ = fireblocks.staking.getPositions(stakingApiGetPositionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.earnBeta().approveTermsOfService(idempotencyKey); + code: "CompletableFuture>\ + \ response = fireblocks.staking().getPositions(pageSize, chainDescriptor,\ + \ vaultAccountId, pageCursor, order);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.earn_beta.approve_terms_of_service(idempotency_key); + code: "response = fireblocks.staking.get_positions(page_size, chain_descriptor,\ + \ vault_account_id, page_cursor, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.earnBeta.approveTermsOfService(earnBetaApiApproveTermsOfServiceRequest);" + source: "const response: Promise>\ + \ = fireblocks.staking.getPositions(stakingApiGetPositionsRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.earnBeta().approveTermsOfService(idempotencyKey); + source: "CompletableFuture>\ + \ response = fireblocks.staking().getPositions(pageSize, chainDescriptor,\ + \ vaultAccountId, pageCursor, order);" - lang: Python - source: response = fireblocks.earn_beta.approve_terms_of_service(idempotency_key); + source: "response = fireblocks.staking.get_positions(page_size, chain_descriptor,\ + \ vault_account_id, page_cursor, order);" x-accepts: - application/json - /trading/providers: + /staking/positions/summary: get: - description: | - Retrieve a list of all available external providers supporting trading activities through the platform. - - **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: getTradingProviders - parameters: - - description: Page size for pagination. - explode: true - in: query - name: pageSize - required: false - schema: - default: 20 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Page cursor for pagination. - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form + description: "Returns an aggregated cross-vault summary: active/inactive counts,\ + \ total staked, and total rewards per chain." + operationId: getSummary responses: "200": content: application/json: + example: + active: + - chainDescriptor: ETH + amount: "64.036604667" + - chainDescriptor: SOL + amount: "0.077345939" + inactive: + - chainDescriptor: ETH + amount: "0" + - chainDescriptor: SOL + amount: "0" + rewardsAmount: + - chainDescriptor: ETH + amount: "0.036604667" + - chainDescriptor: SOL + amount: "0.001345939" + totalStaked: + - chainDescriptor: ETH + amount: "64.036604667" + - chainDescriptor: SOL + amount: "0.077345939" schema: - $ref: "#/components/schemas/ProvidersListResponse" - description: Providers response + $ref: "#/components/schemas/DelegationSummary" + description: Summary across all vaults returned successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "401": + "403": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/StakingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "403": + "404": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21682,90 +21662,95 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get providers + summary: Get positions summary tags: - - Trading (Beta) + - Staking x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tradingBeta.getTradingProviders(tradingBetaApiGetTradingProvidersRequest);" + code: "const response: Promise> =\ + \ fireblocks.staking.getSummary();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tradingBeta().getTradingProviders(pageSize, pageCursor);" + code: CompletableFuture> response = fireblocks.staking().getSummary(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.trading_beta.get_trading_providers(page_size,\ - \ page_cursor);" + code: response = fireblocks.staking.get_summary(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tradingBeta.getTradingProviders(tradingBetaApiGetTradingProvidersRequest);" + source: "const response: Promise> =\ + \ fireblocks.staking.getSummary();" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tradingBeta().getTradingProviders(pageSize, pageCursor);" + source: CompletableFuture> response = fireblocks.staking().getSummary(); - lang: Python - source: "response = fireblocks.trading_beta.get_trading_providers(page_size,\ - \ page_cursor);" + source: response = fireblocks.staking.get_summary(); x-accepts: - application/json - /trading/providers/{providerId}: + /staking/positions/summary/vaults: get: - description: | - Retrieve a single provider by ID. - - **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: getTradingProviderById - parameters: - - description: The unique identifier of the provider. - explode: false - in: path - name: providerId - required: true - schema: - minLength: 1 - type: string - style: simple + description: "Returns per-vault aggregates: status breakdown, total staked,\ + \ and total rewards per chain." + operationId: getSummaryByVault responses: "200": content: application/json: + example: + "0": + active: + - chainDescriptor: SOL + amount: "0.015202376" + inactive: + - chainDescriptor: SOL + amount: "0" + rewardsAmount: + - chainDescriptor: SOL + amount: "0.000202376" + totalStaked: + - chainDescriptor: SOL + amount: "0.015202376" + "1": + active: + - chainDescriptor: ETH + amount: "64.036604667" + - chainDescriptor: SOL + amount: "0.011191566" + inactive: + - chainDescriptor: ETH + amount: "0" + - chainDescriptor: SOL + amount: "0" + rewardsAmount: + - chainDescriptor: ETH + amount: "0.036604667" + - chainDescriptor: SOL + amount: "0.000191566" + totalStaked: + - chainDescriptor: ETH + amount: "64.036604667" + - chainDescriptor: SOL + amount: "0.011191566" schema: - $ref: "#/components/schemas/TradingProvider" - description: Single provider details. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/StakingGetSummaryByVaultResponse" + description: Per-vault summary returned successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21773,9 +21758,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Forbidden - insufficient permissions, disabled feature, or\ - \ restricted access." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21783,8 +21768,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Provider not found. + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21792,85 +21778,71 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Rate limit exceeded - slow down and retry later. + $ref: "#/components/schemas/StakingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get trading provider by ID + summary: Get positions summary by vault tags: - - Trading (Beta) - x-rate-limit-category: read + - Staking + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tradingBeta.getTradingProviderById(tradingBetaApiGetTradingProviderByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.staking.getSummaryByVault();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tradingBeta().getTradingProviderById(providerId); + code: CompletableFuture> response + = fireblocks.staking().getSummaryByVault(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id); + code: response = fireblocks.staking.get_summary_by_vault(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tradingBeta.getTradingProviderById(tradingBetaApiGetTradingProviderByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.staking.getSummaryByVault();" - lang: Java - source: CompletableFuture> response = fireblocks.tradingBeta().getTradingProviderById(providerId); + source: CompletableFuture> response + = fireblocks.staking().getSummaryByVault(); - lang: Python - source: response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id); + source: response = fireblocks.staking.get_summary_by_vault(); x-accepts: - application/json - /trading/rates: - post: - description: |- - Retrieve indicative exchange rate from specified providers for a given asset pair. - Rates are non-executable price signals intended for discovery and display purposes. - - Note: These endpoints are currently in beta and might be subject to changes. - - If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: fetchRates + /staking/positions/{id}: + get: + description: "Returns full details for a single staking position: amounts, rewards,\ + \ status, chain, and vault." + operationId: getDelegationById 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." + - description: Unique identifier of the staking position. explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RatesRequest" - required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/RatesResponse" - description: Rate response + $ref: "#/components/schemas/Delegation" + description: Position retrieved successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21878,29 +21850,29 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Bad request: invalid input parameters, malformed request body,\ - \ or validation failure." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "401": + "403": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/StakingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "403": + "404": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21908,87 +21880,106 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get rates + summary: Get position details tags: - - Trading (Beta) - x-rate-limit-category: external_query + - Staking + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tradingBeta.fetchRates(tradingBetaApiFetchRatesRequest);" + code: "const response: Promise> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tradingBeta().fetchRates(ratesRequest,\ - \ idempotencyKey);" + code: CompletableFuture> response = fireblocks.staking().getDelegationById(id); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.trading_beta.fetch_rates(rates_request, idempotency_key);" + code: response = fireblocks.staking.get_delegation_by_id(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tradingBeta.fetchRates(tradingBetaApiFetchRatesRequest);" + source: "const response: Promise> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tradingBeta().fetchRates(ratesRequest,\ - \ idempotencyKey);" + source: CompletableFuture> response = fireblocks.staking().getDelegationById(id); - lang: Python - source: "response = fireblocks.trading_beta.fetch_rates(rates_request, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.staking.get_delegation_by_id(id); x-accepts: - application/json - /trading/quotes: - post: - description: |- - Generate a time-limited quote for asset conversion, providing exchange rate and amount calculations. - - Note: These endpoints are currently in beta and might be subject to changes. - - If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. - - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: createQuote + /staking/positions/{id}/related_transactions: + get: + description: Returns enriched transaction history for a staking position with + cursor-based pagination. Includes in-flight transactions with status pending. + The in-flight transaction is always returned first; completed and failed history + is ordered by the order parameter. + operationId: getPositionRelatedTransactions 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." + - description: Unique identifier of the staking position. explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: id + required: true schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateQuote" + - description: "Number of results per page (minimum: 1, maximum: 100)." + explode: true + in: query + name: pageSize required: true + schema: + example: 10 + format: int32 + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Cursor for the next page of results. Use the value from the 'next' + field in the previous response. + explode: true + in: query + name: pageCursor + required: false + schema: + example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + type: string + style: form + - description: ASC / DESC ordering for completed/failed history (default DESC). + The in-flight transaction is always returned first. + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + example: ASC + type: string + style: form responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/QuotesResponse" - description: Quote created + $ref: "#/components/schemas/StakingPositionRelatedTransactionsPaginatedResponse" + description: Paginated list of related transactions for the position returned + successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -21996,19 +21987,97 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Bad request: invalid input parameters, malformed request body,\ - \ or validation failure." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "401": + "403": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/StakingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider/validator." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: List related transactions for a position + tags: + - Staking + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.staking.getPositionRelatedTransactions(stakingApiGetPositionRelatedTransactionsRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture>\ + \ response = fireblocks.staking().getPositionRelatedTransactions(id, pageSize,\ + \ pageCursor, order);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.staking.get_position_related_transactions(id,\ + \ page_size, page_cursor, order);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.staking.getPositionRelatedTransactions(stakingApiGetPositionRelatedTransactionsRequest);" + - lang: Java + source: "CompletableFuture>\ + \ response = fireblocks.staking().getPositionRelatedTransactions(id, pageSize,\ + \ pageCursor, order);" + - lang: Python + source: "response = fireblocks.staking.get_position_related_transactions(id,\ + \ page_size, page_cursor, order);" + x-accepts: + - application/json + /staking/providers: + get: + description: |- + Returns all available staking providers with metadata such as name, ID, and supported chains. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: getProviders + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingGetProvidersResponse" + description: Supported providers retrieved successfully. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22016,9 +22085,19 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + \ restricted provider/validator." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22026,68 +22105,62 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Create a quote + summary: List staking providers tags: - - Trading (Beta) - x-rate-limit-category: write + - Staking + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tradingBeta.createQuote(tradingBetaApiCreateQuoteRequest);" + code: "const response: Promise>\ + \ = fireblocks.staking.getProviders();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tradingBeta().createQuote(createQuote,\ - \ idempotencyKey);" + code: CompletableFuture>> response = fireblocks.staking().getProviders(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.trading_beta.create_quote(create_quote, idempotency_key);" + code: response = fireblocks.staking.get_providers(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tradingBeta.createQuote(tradingBetaApiCreateQuoteRequest);" + source: "const response: Promise>\ + \ = fireblocks.staking.getProviders();" - lang: Java - source: "CompletableFuture> response = fireblocks.tradingBeta().createQuote(createQuote,\ - \ idempotencyKey);" + source: CompletableFuture>> response = fireblocks.staking().getProviders(); - lang: Python - source: "response = fireblocks.trading_beta.create_quote(create_quote, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.staking.get_providers(); x-accepts: - application/json - /trading/offers: + /staking/providers/{providerId}/approveTermsOfService: post: - description: |- - Retrieve all available offers across the workspace for a given asset pair. - Always operates in open scope — no provider or account selection required. - Returns a mix of indicative rates and committed quotes as applicable per provider. - - If no slippageBps is provided, it defaults to 50 bps (0.5%). - Slippage and settlement configuration do not affect the returned rate. - - Note: These endpoints are currently in beta and might be subject to changes. - - If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. - - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: fetchAllOffers + description: Approves the provider's terms of service. Must be called once before + performing any staking operation with this provider. + operationId: approveTermsOfServiceByProviderId parameters: + - description: Unique identifier of the staking provider. + explode: false + in: path + name: providerId + required: true + schema: + $ref: "#/components/schemas/StakingProvider" + 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\ @@ -22099,19 +22172,9 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateOffersRequest" - required: true responses: "201": - content: - application/json: - schema: - $ref: "#/components/schemas/OffersResponse" - description: Offers response + description: Terms of service accepted. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22119,29 +22182,29 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Bad request: invalid input parameters, malformed request body,\ - \ or validation failure." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "401": + "403": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/StakingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider/validator." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "403": + "404": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + $ref: "#/components/schemas/StakingErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22149,152 +22212,100 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/StakingErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get all offers + summary: Approve provider terms of service tags: - - Trading (Beta) - x-rate-limit-category: external_query + - Staking + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tradingBeta.fetchAllOffers(tradingBetaApiFetchAllOffersRequest);" + code: "const response: Promise> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tradingBeta().fetchAllOffers(createOffersRequest,\ + code: "CompletableFuture> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.trading_beta.fetch_all_offers(create_offers_request,\ + code: "response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tradingBeta.fetchAllOffers(tradingBetaApiFetchAllOffersRequest);" + source: "const response: Promise> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tradingBeta().fetchAllOffers(createOffersRequest,\ + source: "CompletableFuture> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.trading_beta.fetch_all_offers(create_offers_request,\ + source: "response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id,\ \ idempotency_key);" - x-content-type: application/json x-accepts: - application/json - /trading/orders: + /earn/actions: get: - description: |- - Retrieve a paginated list of orders with optional filtering by account, provider, status, and time range. - - Note:These endpoints are currently in beta and might be subject to changes. - - If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + description: | + Returns a paginated list of lending actions (deposits and withdrawals) for the authenticated tenant. - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: getOrders + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: getEarnActions parameters: - - description: pageSize for pagination. + - description: Cursor for the next or previous page of results. explode: true - in: query - name: pageSize - required: true - schema: - maximum: 100 - minimum: 1 - type: integer - style: form - - explode: true in: query name: pageCursor required: false schema: - minLength: 1 - type: string - style: form - - description: ASC / DESC ordering (default DESC) - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC type: string style: form - - description: Filter by accountId. + - description: "Number of items per page (default 100, max 100)." explode: true in: query - name: accountId + name: pageSize required: false schema: - items: - minLength: 1 - type: string - type: array + default: 100 + format: int32 + maximum: 100 + minimum: 1 + type: integer style: form - - description: Filter by providerId. + - description: Field to sort results by. explode: true in: query - name: providerId + name: sortBy required: false schema: - items: - minLength: 1 - type: string - type: array + enum: + - createdAt + - updatedAt + type: string style: form - - description: Filter by order status. + - description: Sort order (ASC or DESC). explode: true in: query - name: statuses - required: false - schema: - items: - $ref: "#/components/schemas/OrderStatus" - type: array - style: form - - explode: true - in: query - name: startTime - required: false - schema: - minimum: 0 - type: integer - style: form - - explode: true - in: query - name: endTime - required: false - schema: - minimum: 0 - type: integer - style: form - - explode: true - in: query - name: assetConversionType + name: order required: false schema: - description: Filter by asset conversion type. + default: DESC enum: - - DIGITAL_ONLY - - FIAT + - ASC + - DESC + example: ASC type: string style: form responses: @@ -22302,28 +22313,27 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GetOrdersResponse" - description: Orders response + $ref: "#/components/schemas/GetActionsResponse" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "401": + "403": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/ErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "403": + "404": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: requested resource does not exist." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22331,66 +22341,59 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get orders + summary: List earn lending actions tags: - - Trading (Beta) - x-rate-limit-category: read + - Earn (Beta) + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.tradingBeta.getOrders(tradingBetaApiGetOrdersRequest);" + code: "const response: Promise> =\ + \ fireblocks.earnBeta.getEarnActions(earnBetaApiGetEarnActionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tradingBeta().getOrders(pageSize,\ - \ pageCursor, order, accountId, providerId, statuses, startTime, endTime,\ - \ assetConversionType);" + code: "CompletableFuture> response = fireblocks.earnBeta().getEarnActions(pageCursor,\ + \ pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.trading_beta.get_orders(page_size, page_cursor,\ - \ order, account_id, provider_id, statuses, start_time, end_time, asset_conversion_type);" + code: "response = fireblocks.earn_beta.get_earn_actions(page_cursor, page_size,\ + \ sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.tradingBeta.getOrders(tradingBetaApiGetOrdersRequest);" + source: "const response: Promise> =\ + \ fireblocks.earnBeta.getEarnActions(earnBetaApiGetEarnActionsRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tradingBeta().getOrders(pageSize,\ - \ pageCursor, order, accountId, providerId, statuses, startTime, endTime,\ - \ assetConversionType);" + source: "CompletableFuture> response = fireblocks.earnBeta().getEarnActions(pageCursor,\ + \ pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.trading_beta.get_orders(page_size, page_cursor,\ - \ order, account_id, provider_id, statuses, start_time, end_time, asset_conversion_type);" + source: "response = fireblocks.earn_beta.get_earn_actions(page_cursor, page_size,\ + \ sort_by, order);" x-accepts: - application/json post: - description: |- - Create an order to buy or sell an asset. If no source is given, an external source will be use. - - Note: These endpoints are currently in beta and might be subject to changes. - - If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + description: | + Creates and runs a sequence of on-chain steps for either a deposit into or a withdrawal from an earn + vault/market. Specify the operation with `action` in the request body (`DEPOSIT` or `WITHDRAW`). - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: createOrder + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: createEarnAction 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\ @@ -22407,15 +22410,15 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CreateOrderRequest" + $ref: "#/components/schemas/CreateEarnActionRequest" required: true responses: - "202": + "200": content: application/json: schema: - $ref: "#/components/schemas/OrderDetails" - description: Order creation response + $ref: "#/components/schemas/CreateEarnActionResponse" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22423,29 +22426,29 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Bad request: invalid input parameters, malformed request body,\ - \ or validation failure." + $ref: "#/components/schemas/ErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "401": + "403": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/ErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "403": + "404": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Forbidden: insufficient permissions, disabled feature, or\ - \ restricted access." + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: requested resource does not exist (e.g., opportunity,\ + \ provider, or wallet)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22453,69 +22456,65 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Create an order + summary: Create and execute a lending action (deposit or withdraw) tags: - - Trading (Beta) + - Earn (Beta) x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tradingBeta.createOrder(tradingBetaApiCreateOrderRequest);" + code: "const response: Promise>\ + \ = fireblocks.earnBeta.createEarnAction(earnBetaApiCreateEarnActionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tradingBeta().createOrder(createOrderRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.earnBeta().createEarnAction(createEarnActionRequest, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.trading_beta.create_order(create_order_request,\ + code: "response = fireblocks.earn_beta.create_earn_action(create_earn_action_request,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tradingBeta.createOrder(tradingBetaApiCreateOrderRequest);" + source: "const response: Promise>\ + \ = fireblocks.earnBeta.createEarnAction(earnBetaApiCreateEarnActionRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tradingBeta().createOrder(createOrderRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.earnBeta().createEarnAction(createEarnActionRequest, idempotencyKey);" - lang: Python - source: "response = fireblocks.trading_beta.create_order(create_order_request,\ + source: "response = fireblocks.earn_beta.create_earn_action(create_earn_action_request,\ \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /trading/orders/{orderId}: + /earn/actions/{id}: get: - description: |- - Retrieve detailed information about a specific order by its ID. - - Note:These endpoints are currently in beta and might be subject to changes. - - If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. - - Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + description: | + Returns one lending action by its action sequence id (tenant-scoped). - For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). - operationId: getOrder - parameters: - - description: The ID of the order to fetch. + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: getEarnAction + parameters: + - description: Action sequence id (UUID). explode: false in: path - name: orderId + name: id required: true schema: minLength: 1 @@ -22526,18 +22525,8 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/OrderDetails" - description: Order response - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: Unauthorized. Missing / invalid JWT token in Authorization - header. + $ref: "#/components/schemas/GetActionResponse" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22545,7 +22534,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: "Forbidden: insufficient permissions, disabled feature, or\ \ restricted access." headers: @@ -22555,8 +22544,9 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" - description: "Not found: requested resource does not exist (e.g., order)." + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: action does not exist or is not visible for this\ + \ tenant." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -22564,199 +22554,204 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "5XX": + "500": content: application/json: schema: - $ref: "#/components/schemas/TradingErrorSchema" + $ref: "#/components/schemas/ErrorSchema" description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get order details + summary: Get a single earn lending action tags: - - Trading (Beta) - x-rate-limit-category: read + - Earn (Beta) + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tradingBeta.getOrder(tradingBetaApiGetOrderRequest);" + code: "const response: Promise> =\ + \ fireblocks.earnBeta.getEarnAction(earnBetaApiGetEarnActionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tradingBeta().getOrder(orderId); + code: CompletableFuture> response = fireblocks.earnBeta().getEarnAction(id); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.trading_beta.get_order(order_id); + code: response = fireblocks.earn_beta.get_earn_action(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tradingBeta.getOrder(tradingBetaApiGetOrderRequest);" + source: "const response: Promise> =\ + \ fireblocks.earnBeta.getEarnAction(earnBetaApiGetEarnActionRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.tradingBeta().getOrder(orderId); + source: CompletableFuture> response = fireblocks.earnBeta().getEarnAction(id); - lang: Python - source: response = fireblocks.trading_beta.get_order(order_id); - x-accepts: - - application/json - /admin_quorum: - put: - description: Update admin quorum threshold - operationId: setAdminQuorumThreshold - 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/SetAdminQuorumThresholdRequest" - required: true - responses: - "202": - content: - application/json: - schema: - $ref: "#/components/schemas/SetAdminQuorumThresholdResponse" - description: OK - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Update admin quorum threshold - tags: - - Admin Quorum - x-internal: true - x-rate-limit-category: write - x-readme: - code-samples: - - language: python - code: result = fireblocks.set_admin_quorum_threshold(adminQuorumThreshold) - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: const result = await fireblocks.setAdminQuorumThreshold(adminQuorumThreshold) - name: Fireblocks SDK Javascript example - x-content-type: application/json + source: response = fireblocks.earn_beta.get_earn_action(id); x-accepts: - application/json - /nfts/ownership/tokens: + /earn/opportunities: get: description: | - Returns all tokens and their data in your workspace. - operationId: getOwnershipTokens + Get list of earn opportunities (vaults). + + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: getEarnOpportunities parameters: - - description: Blockchain descriptor filter - explode: true - in: query - name: blockchainDescriptor - required: false - schema: - enum: - - ETH - - ETH_TEST3 - - ETH_TEST5 - - ETH_TEST6 - - POLYGON - - POLYGON_TEST_MUMBAI - - AMOY_POLYGON_TEST - - XTZ - - XTZ_TEST - - BASECHAIN_ETH - - BASECHAIN_ETH_TEST3 - - BASECHAIN_ETH_TEST5 - - ETHERLINK - - ETHERLINK_TEST - - MANTLE - - MANTLE_TEST - - GUN_GUNZILLA - - GUN_GUNZILLA_TEST - - ETH_SONEIUM - - SONEIUM_MINATO_TEST - - IOTX_IOTEX - - KLAY_KAIA - - KLAY_KAIA_TEST - - APECHAIN - - APECHAIN_TEST - - CRONOS - - CRONOS_TEST - - ROBINHOOD_CHAIN_TESTNET_TEST - - ARB - type: string - style: form - - description: A comma separated list of Vault Account IDs. Up to 100 are allowed - in a single request. This field will be ignored when walletType=END_USER_WALLET - or ncwId is provided. + - description: Cursor for the next or previous page of results. explode: true in: query - name: vaultAccountIds + name: pageCursor required: false schema: type: string style: form - - description: Tenant's Non-Custodial Wallet ID + - description: Number of items per page. explode: true in: query - name: ncwId + name: pageSize required: false schema: - type: string + default: 100 + format: int32 + maximum: 100 + minimum: 1 + type: integer style: form - - description: A comma separated list of Non-Custodial account IDs. Up to 100 - are allowed in a single request. This field will be ignored when walletType=VAULT_ACCOUNT - or ncwId is not provided. + - description: Field to sort results by. explode: true in: query - name: ncwAccountIds + name: sortBy required: false schema: type: string style: form - - description: "Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`" + - description: Sort order (ASC or DESC). explode: true in: query - name: walletType + name: order required: false schema: - default: VAULT_ACCOUNT + default: DESC enum: - - VAULT_ACCOUNT - - END_USER_WALLET + - ASC + - DESC + example: ASC type: string style: form - - description: A comma separated list of NFT IDs. Up to 100 are allowed in a - single request. - explode: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GetOpportunitiesResponse" + description: OK + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: requested resource does not exist." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get list of earn opportunities + tags: + - Earn (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.earnBeta.getEarnOpportunities(earnBetaApiGetEarnOpportunitiesRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.earnBeta().getEarnOpportunities(pageCursor, pageSize, sortBy,\ + \ order);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.earn_beta.get_earn_opportunities(page_cursor,\ + \ page_size, sort_by, order);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.earnBeta.getEarnOpportunities(earnBetaApiGetEarnOpportunitiesRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.earnBeta().getEarnOpportunities(pageCursor, pageSize, sortBy,\ + \ order);" + - lang: Python + source: "response = fireblocks.earn_beta.get_earn_opportunities(page_cursor,\ + \ page_size, sort_by, order);" + x-accepts: + - application/json + /earn/positions: + get: + description: "Get list of earn positions for accounts tracked for this workspace.\ + \ \nOptional query parameters filter by chain, provider, and pagination.\n\ + \n**Note:** This endpoint is currently in beta and might be subject to changes.\n" + operationId: getEarnPositions + parameters: + - explode: true in: query - name: ids + name: chainId required: false schema: - type: string + format: int32 + type: integer style: form - - description: A comma separated list of collection IDs. Up to 100 are allowed - in a single request. - explode: true + - explode: true in: query - name: collectionIds + name: providerId required: false schema: + enum: + - MORPHO + - AAVE type: string style: form - - description: Page cursor to fetch + - description: Cursor for the next or previous page of results. explode: true in: query name: pageCursor @@ -22764,78 +22759,165 @@ paths: schema: type: string style: form - - description: Items per page (max 100) + - description: Number of items per page. explode: true in: query name: pageSize required: false schema: + default: 100 + format: int32 maximum: 100 minimum: 1 - type: number + type: integer style: form - - description: "Sort by param, it can be one param or a list of params separated\ - \ by comma" + - description: Field to sort results by. explode: true in: query - name: sort + name: sortBy required: false schema: - items: - enum: - - ownershipLastUpdateTime - - name - - collection.name - - blockchainDescriptor - type: string - type: array + type: string style: form - - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ - \ descending" + - description: Sort order (ASC or DESC). explode: true in: query name: order required: false schema: - default: ASC + default: DESC enum: - - DESC - ASC + - DESC + example: ASC type: string style: form - - description: Token ownership status + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GetPositionsResponse" + description: OK + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: requested resource does not exist." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get list of earn positions + tags: + - Earn (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.earnBeta.getEarnPositions(earnBetaApiGetEarnPositionsRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.earnBeta().getEarnPositions(chainId,\ + \ providerId, pageCursor, pageSize, sortBy, order);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.earn_beta.get_earn_positions(chain_id, provider_id,\ + \ page_cursor, page_size, sort_by, order);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.earnBeta.getEarnPositions(earnBetaApiGetEarnPositionsRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.earnBeta().getEarnPositions(chainId,\ + \ providerId, pageCursor, pageSize, sortBy, order);" + - lang: Python + source: "response = fireblocks.earn_beta.get_earn_positions(chain_id, provider_id,\ + \ page_cursor, page_size, sort_by, order);" + x-accepts: + - application/json + /earn/providers: + get: + description: | + Get list of earn providers. + + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: getEarnProviders + parameters: + - description: Cursor for the next or previous page of results. explode: true in: query - name: status + name: pageCursor required: false schema: - default: LISTED - enum: - - LISTED - - ARCHIVED type: string style: form - - description: "Search owned tokens and their collections. Possible criteria\ - \ for search: token name and id within the contract/collection, collection\ - \ name, blockchain descriptor and name." + - description: Number of items per page. explode: true in: query - name: search + name: pageSize required: false schema: + default: 100 + format: int32 maximum: 100 + minimum: 1 + type: integer + style: form + - description: Field to sort results by. + explode: true + in: query + name: sortBy + required: false + schema: type: string style: form - - description: Token ownership spam status. + - description: Sort order (ASC or DESC). explode: true in: query - name: spam + name: order required: false schema: + default: DESC enum: - - "true" - - "false" - - all + - ASC + - DESC + example: ASC type: string style: form responses: @@ -22843,94 +22925,91 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GetOwnershipTokensResponse" - description: "" + $ref: "#/components/schemas/GetProvidersResponse" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: List all owned tokens (paginated) + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: requested resource does not exist." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get list of earn providers tags: - - NFTs + - Earn (Beta) x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.nFTs.getOwnershipTokens(nFTsApiGetOwnershipTokensRequest);" + code: "const response: Promise>\ + \ = fireblocks.earnBeta.getEarnProviders(earnBetaApiGetEarnProvidersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.nFTs().getOwnershipTokens(blockchainDescriptor, vaultAccountIds,\ - \ ncwId, ncwAccountIds, walletType, ids, collectionIds, pageCursor, pageSize,\ - \ sort, order, status, search, spam);" + code: "CompletableFuture> response = fireblocks.earnBeta().getEarnProviders(pageCursor,\ + \ pageSize, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.n_f_ts.get_ownership_tokens(blockchain_descriptor,\ - \ vault_account_ids, ncw_id, ncw_account_ids, wallet_type, ids, collection_ids,\ - \ page_cursor, page_size, sort, order, status, search, spam);" + code: "response = fireblocks.earn_beta.get_earn_providers(page_cursor, page_size,\ + \ sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.nFTs.getOwnershipTokens(nFTsApiGetOwnershipTokensRequest);" + source: "const response: Promise>\ + \ = fireblocks.earnBeta.getEarnProviders(earnBetaApiGetEarnProvidersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.nFTs().getOwnershipTokens(blockchainDescriptor, vaultAccountIds,\ - \ ncwId, ncwAccountIds, walletType, ids, collectionIds, pageCursor, pageSize,\ - \ sort, order, status, search, spam);" + source: "CompletableFuture> response = fireblocks.earnBeta().getEarnProviders(pageCursor,\ + \ pageSize, sortBy, order);" - lang: Python - source: "response = fireblocks.n_f_ts.get_ownership_tokens(blockchain_descriptor,\ - \ vault_account_ids, ncw_id, ncw_account_ids, wallet_type, ids, collection_ids,\ - \ page_cursor, page_size, sort, order, status, search, spam);" + source: "response = fireblocks.earn_beta.get_earn_providers(page_cursor, page_size,\ + \ sort_by, order);" x-accepts: - application/json - put: - description: |- - Updates all tokens and balances per blockchain and vault account. - Learn more about Fireblocks NFT management in the following [guide](https://developers.fireblocks.com/reference/deploy-an-nft-collection). + /earn/providers/approve_terms_of_service: + post: + description: | + Approves earn provider terms of service for this workspace (one-time per tenant). + When `isTermsApprovalRequired` is true on a provider (see list providers), + call this once before creating or executing earn actions with providers that require it. + After success, `GET /earn/providers` reflects `isTermsOfServiceApproved`. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: updateOwnershipTokens + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: approveTermsOfService parameters: - - description: Blockchain descriptor filter - explode: true - in: query - name: blockchainDescriptor - required: true - schema: - enum: - - ETH - - ETH_TEST5 - - ETH_TEST6 - - POLYGON - - POLYGON_TEST_MUMBAI - - AMOY_POLYGON_TEST - - BASECHAIN_ETH - - BASECHAIN_ETH_TEST5 - - ETHERLINK - - ETHERLINK_TEST - - MANTLE - - MANTLE_TEST - - GUN_GUNZILLA - - GUN_GUNZILLA_TEST - - ETH_SONEIUM - - SONEIUM_MINATO_TEST - - IOTX_IOTEX - - KLAY_KAIA - - KLAY_KAIA_TEST - - APECHAIN - - APECHAIN_TEST - - ROBINHOOD_CHAIN_TESTNET_TEST - type: string - style: form - - description: Vault account filter - explode: true - in: query - name: vaultAccountId - required: true - schema: - type: string - style: form - 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\ @@ -22943,140 +23022,114 @@ paths: type: string style: simple responses: - "202": - description: "" + "204": + description: Terms of service accepted. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Refresh vault account tokens + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Bad request: missing/invalid fields, unsupported amount, or\ + \ malformed payload." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted provider/validator." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Not found: requested resource does not exist (e.g., position,\ + \ validator, provider, or wallet)." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Approve earn provider terms of service tags: - - NFTs + - Earn (Beta) x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.nFTs.updateOwnershipTokens(nFTsApiUpdateOwnershipTokensRequest);" + code: "const response: Promise> = fireblocks.earnBeta.approveTermsOfService(earnBetaApiApproveTermsOfServiceRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.nFTs().updateOwnershipTokens(blockchainDescriptor,\ - \ vaultAccountId, idempotencyKey);" + code: CompletableFuture> response = fireblocks.earnBeta().approveTermsOfService(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.n_f_ts.update_ownership_tokens(blockchain_descriptor,\ - \ vault_account_id, idempotency_key);" + code: response = fireblocks.earn_beta.approve_terms_of_service(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.updateOwnershipTokens(nFTsApiUpdateOwnershipTokensRequest);" + source: "const response: Promise> = fireblocks.earnBeta.approveTermsOfService(earnBetaApiApproveTermsOfServiceRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.nFTs().updateOwnershipTokens(blockchainDescriptor,\ - \ vaultAccountId, idempotencyKey);" + source: CompletableFuture> response = fireblocks.earnBeta().approveTermsOfService(idempotencyKey); - lang: Python - source: "response = fireblocks.n_f_ts.update_ownership_tokens(blockchain_descriptor,\ - \ vault_account_id, idempotency_key);" + source: response = fireblocks.earn_beta.approve_terms_of_service(idempotency_key); x-accepts: - application/json - /nfts/ownership/assets: + /trading/providers: get: description: | - Returns all owned distinct tokens (for your tenant) and their data in your workspace. - operationId: listOwnedTokens + Retrieve a list of all available external providers supporting trading activities through the platform. + + **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: getTradingProviders parameters: - - description: Tenant's Non-Custodial Wallet ID - explode: true - in: query - name: ncwId - required: false - schema: - type: string - style: form - - description: "Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`" - explode: true - in: query - name: walletType - required: false - schema: - default: VAULT_ACCOUNT - enum: - - VAULT_ACCOUNT - - END_USER_WALLET - type: string - style: form - - description: Page cursor to fetch - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Items per page (max 100) + - description: Page size for pagination. explode: true in: query name: pageSize required: false schema: + default: 20 maximum: 100 minimum: 1 - type: number - style: form - - description: "Sort by param, it can be one param or a list of params separated\ - \ by comma" - explode: true - in: query - name: sort - required: false - schema: - items: - enum: - - name - type: string - type: array - style: form - - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ - \ descending" - explode: true - in: query - name: order - required: false - schema: - default: ASC - enum: - - DESC - - ASC - type: string - style: form - - description: Token ownership status - explode: true - in: query - name: status - required: false - schema: - default: LISTED - enum: - - LISTED - - ARCHIVED - type: string - style: form - - description: Search owned tokens by token name - explode: true - in: query - name: search - required: false - schema: - maximum: 100 - type: string + type: integer style: form - - description: Token ownership spam status. + - description: Page cursor for pagination. explode: true in: query - name: spam + name: pageCursor required: false schema: - enum: - - "true" - - "false" - - all type: string style: form responses: @@ -23084,190 +23137,100 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ListOwnedTokensResponse" - description: "" + $ref: "#/components/schemas/ProvidersListResponse" + description: Providers response headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: List all distinct owned tokens (paginated) - tags: - - NFTs - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.nFTs.listOwnedTokens(nFTsApiListOwnedTokensRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response\ - \ = fireblocks.nFTs().listOwnedTokens(ncwId, walletType, pageCursor, pageSize,\ - \ sort, order, status, search, spam);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.n_f_ts.list_owned_tokens(ncw_id, wallet_type,\ - \ page_cursor, page_size, sort, order, status, search, spam);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.nFTs.listOwnedTokens(nFTsApiListOwnedTokensRequest);" - - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.nFTs().listOwnedTokens(ncwId, walletType, pageCursor, pageSize,\ - \ sort, order, status, search, spam);" - - lang: Python - source: "response = fireblocks.n_f_ts.list_owned_tokens(ncw_id, wallet_type,\ - \ page_cursor, page_size, sort, order, status, search, spam);" - x-accepts: - - application/json - /nfts/ownership/collections: - get: - description: | - Returns all collections in your workspace - operationId: listOwnedCollections - parameters: - - description: Tenant's Non-Custodial Wallet ID - explode: true - in: query - name: ncwId - required: false - schema: - type: string - style: form - - description: "Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`" - explode: true - in: query - name: walletType - required: false - schema: - default: VAULT_ACCOUNT - enum: - - VAULT_ACCOUNT - - END_USER_WALLET - type: string - style: form - - description: "Search owned collections. Possible criteria for search: collection\ - \ name, collection contract address." - explode: true - in: query - name: search - required: false - schema: - maximum: 100 - type: string - style: form - - description: Page cursor to fetch - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Items per page (max 100) - explode: true - in: query - name: pageSize - required: false - schema: - maximum: 100 - minimum: 1 - type: number - style: form - - description: "Sort by param, it can be one param or a list of params separated\ - \ by comma" - explode: true - in: query - name: sort - required: false - schema: - items: - enum: - - name - type: string - type: array - style: form - - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ - \ descending" - explode: true - in: query - name: order - required: false - schema: - default: ASC - enum: - - DESC - - ASC - type: string - style: form - - description: Token ownership status - explode: true - in: query - name: status - required: false - schema: - default: LISTED - enum: - - LISTED - - ARCHIVED - type: string - style: form - responses: - "200": + "401": content: application/json: schema: - $ref: "#/components/schemas/ListOwnedCollectionsResponse" - description: "" + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: List owned collections (paginated) + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get providers tags: - - NFTs + - Trading (Beta) x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.nFTs.listOwnedCollections(nFTsApiListOwnedCollectionsRequest);" + code: "const response: Promise>\ + \ = fireblocks.tradingBeta.getTradingProviders(tradingBetaApiGetTradingProvidersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.nFTs().listOwnedCollections(ncwId, walletType, search,\ - \ pageCursor, pageSize, sort, order, status);" + code: "CompletableFuture> response =\ + \ fireblocks.tradingBeta().getTradingProviders(pageSize, pageCursor);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.n_f_ts.list_owned_collections(ncw_id, wallet_type,\ - \ search, page_cursor, page_size, sort, order, status);" + code: "response = fireblocks.trading_beta.get_trading_providers(page_size,\ + \ page_cursor);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.nFTs.listOwnedCollections(nFTsApiListOwnedCollectionsRequest);" + source: "const response: Promise>\ + \ = fireblocks.tradingBeta.getTradingProviders(tradingBetaApiGetTradingProvidersRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.nFTs().listOwnedCollections(ncwId, walletType, search, pageCursor,\ - \ pageSize, sort, order, status);" + source: "CompletableFuture> response =\ + \ fireblocks.tradingBeta().getTradingProviders(pageSize, pageCursor);" - lang: Python - source: "response = fireblocks.n_f_ts.list_owned_collections(ncw_id, wallet_type,\ - \ search, page_cursor, page_size, sort, order, status);" + source: "response = fireblocks.trading_beta.get_trading_providers(page_size,\ + \ page_cursor);" x-accepts: - application/json - /nfts/tokens/{id}: + /trading/providers/{providerId}: get: description: | - Returns the requested token data. - operationId: getNFT + Retrieve a single provider by ID. + + **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: getTradingProviderById parameters: - - description: NFT ID - example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd + - description: The unique identifier of the provider. explode: false in: path - name: id + name: providerId required: true schema: + minLength: 1 type: string style: simple responses: @@ -23275,59 +23238,99 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TokenResponse" - description: "" + $ref: "#/components/schemas/TradingProvider" + description: Single provider details. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: List token data by ID + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + 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/TradingErrorSchema" + description: "Forbidden - insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Provider not found. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Rate limit exceeded - slow down and retry later. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get trading provider by ID tags: - - NFTs - x-rate-limit-category: query + - Trading (Beta) + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.nFTs.getNFT(nFTsApiGetNFTRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.getTradingProviderById(tradingBetaApiGetTradingProviderByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.nFTs().getNFT(id); + code: CompletableFuture> response = fireblocks.tradingBeta().getTradingProviderById(providerId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.n_f_ts.get_n_f_t(id); + code: response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.getNFT(nFTsApiGetNFTRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.getTradingProviderById(tradingBetaApiGetTradingProviderByIdRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.nFTs().getNFT(id); + source: CompletableFuture> response = fireblocks.tradingBeta().getTradingProviderById(providerId); - lang: Python - source: response = fireblocks.n_f_ts.get_n_f_t(id); + source: response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id); x-accepts: - application/json - put: - description: | - Updates the latest token metadata. - operationId: refreshNFTMetadata + /trading/rates: + post: + description: |- + Retrieve indicative exchange rate from specified providers for a given asset pair. + Rates are non-executable price signals intended for discovery and display purposes. + + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: fetchRates parameters: - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - style: simple - - description: NFT ID - example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd - explode: false - in: path - name: id - required: true - schema: - type: string - 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\ @@ -23339,231 +23342,113 @@ paths: schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RatesRequest" + required: true responses: - "202": - description: "" + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/RatesResponse" + description: Rate response headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Refresh token metadata - tags: - - NFTs - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.nFTs.refreshNFTMetadata(nFTsApiRefreshNFTMetadataRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response = fireblocks.nFTs().refreshNFTMetadata(id,\ - \ xEndUserWalletId, idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.n_f_ts.refresh_n_f_t_metadata(id, x_end_user_wallet_id,\ - \ idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.refreshNFTMetadata(nFTsApiRefreshNFTMetadataRequest);" - - lang: Java - source: "CompletableFuture> response = fireblocks.nFTs().refreshNFTMetadata(id,\ - \ xEndUserWalletId, idempotencyKey);" - - lang: Python - source: "response = fireblocks.n_f_ts.refresh_n_f_t_metadata(id, x_end_user_wallet_id,\ - \ idempotency_key);" - x-accepts: - - application/json - /nfts/tokens: - get: - description: | - Returns the requested tokens data. - operationId: getNFTs - parameters: - - description: A comma separated list of NFT IDs. Up to 100 are allowed in a - single request. - explode: true - in: query - name: ids - required: true - schema: - type: string - style: form - - description: Page cursor to fetch - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Items per page (max 100) - explode: true - in: query - name: pageSize - required: false - schema: - maximum: 100 - minimum: 1 - type: number - style: form - - description: "Sort by param, it can be one param or a list of params separated\ - \ by comma" - explode: true - in: query - name: sort - required: false - schema: - items: - enum: - - collection.name - - name - - blockchainDescriptor - type: string - type: array - style: form - - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ - \ descending" - explode: true - in: query - name: order - required: false - schema: - default: ASC - enum: - - DESC - - ASC - type: string - style: form - responses: - "200": + "400": content: application/json: schema: - $ref: "#/components/schemas/GetNFTsResponse" - description: "" + $ref: "#/components/schemas/TradingErrorSchema" + description: "Bad request: invalid input parameters, malformed request body,\ + \ or validation failure." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: List tokens by IDs - tags: - - NFTs - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.nFTs.getNFTs(nFTsApiGetNFTsRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response = fireblocks.nFTs().getNFTs(ids,\ - \ pageCursor, pageSize, sort, order);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.n_f_ts.get_n_f_ts(ids, page_cursor, page_size,\ - \ sort, order);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.getNFTs(nFTsApiGetNFTsRequest);" - - lang: Java - source: "CompletableFuture> response = fireblocks.nFTs().getNFTs(ids,\ - \ pageCursor, pageSize, sort, order);" - - lang: Python - source: "response = fireblocks.n_f_ts.get_n_f_ts(ids, page_cursor, page_size,\ - \ sort, order);" - x-accepts: - - application/json - /nfts/ownership/tokens/{id}/status: - put: - description: | - Updates token status for a tenant, in all tenant vaults. - operationId: updateTokenOwnershipStatus - parameters: - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - style: simple - - description: NFT ID - example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd - explode: false - in: path - name: id - required: true - schema: - type: string - 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/UpdateTokenOwnershipStatusDto" - required: true - responses: - "200": - description: "" + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Update token ownership status + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get rates tags: - - NFTs - x-rate-limit-category: write + - Trading (Beta) + x-rate-limit-category: external_query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.nFTs.updateTokenOwnershipStatus(nFTsApiUpdateTokenOwnershipStatusRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.fetchRates(tradingBetaApiFetchRatesRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.nFTs().updateTokenOwnershipStatus(updateTokenOwnershipStatusDto,\ - \ id, xEndUserWalletId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.tradingBeta().fetchRates(ratesRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.n_f_ts.update_token_ownership_status(update_token_ownership_status_dto,\ - \ id, x_end_user_wallet_id, idempotency_key);" + code: "response = fireblocks.trading_beta.fetch_rates(rates_request, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.updateTokenOwnershipStatus(nFTsApiUpdateTokenOwnershipStatusRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.fetchRates(tradingBetaApiFetchRatesRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.nFTs().updateTokenOwnershipStatus(updateTokenOwnershipStatusDto,\ - \ id, xEndUserWalletId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.tradingBeta().fetchRates(ratesRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.n_f_ts.update_token_ownership_status(update_token_ownership_status_dto,\ - \ id, x_end_user_wallet_id, idempotency_key);" + source: "response = fireblocks.trading_beta.fetch_rates(rates_request, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /nfts/ownership/tokens/status: - put: - description: "Updates tokens status for a tenant, in all tenant vaults." - operationId: updateTokensOwnershipStatus + /trading/quotes: + post: + description: |- + Generate a time-limited quote for asset conversion, providing exchange rate and amount calculations. + + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: createQuote parameters: - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - 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\ @@ -23579,69 +23464,114 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateTokensOwnershipStatusRequest" + $ref: "#/components/schemas/CreateQuote" required: true responses: - "200": - description: All token statuses have been updated + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/QuotesResponse" + description: Quote created headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "400": - description: Invalid data sent + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Bad request: invalid input parameters, malformed request body,\ + \ or validation failure." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "404": - description: When ownership for token ID is not found + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Update tokens ownership status + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Create a quote tags: - - NFTs + - Trading (Beta) x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipStatus(nFTsApiUpdateTokensOwnershipStatusRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.createQuote(tradingBetaApiCreateQuoteRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipStatus(tokenOwnershipStatusUpdatePayload,\ - \ xEndUserWalletId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.tradingBeta().createQuote(createQuote,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.n_f_ts.update_tokens_ownership_status(token_ownership_status_update_payload,\ - \ x_end_user_wallet_id, idempotency_key);" + code: "response = fireblocks.trading_beta.create_quote(create_quote, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipStatus(nFTsApiUpdateTokensOwnershipStatusRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.createQuote(tradingBetaApiCreateQuoteRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipStatus(tokenOwnershipStatusUpdatePayload,\ - \ xEndUserWalletId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.tradingBeta().createQuote(createQuote,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.n_f_ts.update_tokens_ownership_status(token_ownership_status_update_payload,\ - \ x_end_user_wallet_id, idempotency_key);" + source: "response = fireblocks.trading_beta.create_quote(create_quote, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /nfts/ownership/tokens/spam: - put: - description: "Updates tokens spam property for a tenant's token ownerships,\ - \ in all tenant vaults." - operationId: updateTokensOwnershipSpam + /trading/offers: + post: + description: |- + Retrieve all available offers across the workspace for a given asset pair. + Always operates in open scope — no provider or account selection required. + Returns a mix of indicative rates and committed quotes as applicable per provider. + + If no slippageBps is provided, it defaults to 50 bps (0.5%). + Slippage and settlement configuration do not affect the returned rate. + + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: fetchAllOffers parameters: - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - 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\ @@ -23657,140 +23587,198 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateTokensOwnershipSpamRequest" + $ref: "#/components/schemas/CreateOffersRequest" required: true responses: - "200": - description: All token spam properties have been updated + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/OffersResponse" + description: Offers response headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "400": - description: Invalid data sent + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Bad request: invalid input parameters, malformed request body,\ + \ or validation failure." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "404": - description: When ownership for token ID is not found + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Update tokens ownership spam property + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get all offers tags: - - NFTs - x-rate-limit-category: write + - Trading (Beta) + x-rate-limit-category: external_query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipSpam(nFTsApiUpdateTokensOwnershipSpamRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.fetchAllOffers(tradingBetaApiFetchAllOffersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipSpam(tokenOwnershipSpamUpdatePayload,\ - \ xEndUserWalletId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.tradingBeta().fetchAllOffers(createOffersRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.n_f_ts.update_tokens_ownership_spam(token_ownership_spam_update_payload,\ - \ x_end_user_wallet_id, idempotency_key);" + code: "response = fireblocks.trading_beta.fetch_all_offers(create_offers_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipSpam(nFTsApiUpdateTokensOwnershipSpamRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.fetchAllOffers(tradingBetaApiFetchAllOffersRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipSpam(tokenOwnershipSpamUpdatePayload,\ - \ xEndUserWalletId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.tradingBeta().fetchAllOffers(createOffersRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.n_f_ts.update_tokens_ownership_spam(token_ownership_spam_update_payload,\ - \ x_end_user_wallet_id, idempotency_key);" + source: "response = fireblocks.trading_beta.fetch_all_offers(create_offers_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /connections: + /trading/orders: get: - description: Get open Web3 connections. - operationId: get + description: |- + Retrieve a paginated list of orders with optional filtering by account, provider, status, and time range. + + Note:These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: getOrders parameters: - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id + - description: pageSize for pagination. + explode: true + in: query + name: pageSize + required: true + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + - explode: true + in: query + name: pageCursor required: false schema: - format: uuid + minLength: 1 type: string - style: simple - - description: List order; ascending or descending. + style: form + - description: ASC / DESC ordering (default DESC) explode: true in: query name: order required: false schema: - default: ASC + default: DESC enum: - ASC - DESC type: string style: form - - description: Parsed filter object - examples: - object: - description: "" - summary: The filter object - value: - id: string - userId: string - vaultAccountId: number - connectionMethod: string - feeLevel: string - appUrl: string - appName: string - stringified: - description: |- - About stringified parsed objects: - - * Each key-value pair is separated by '=', and each pair is separated by ',' (you can use [`qs`](https://www.npmjs.com/package/qs) package for this) - summary: The stringified parsed object - value: "id=string,userId=string,vaultAccountId=number,connectionMethod=string,feeLevel=string,appUrl=string,appName=string" + - description: Filter by accountId. explode: true in: query - name: filter + name: accountId required: false schema: - $ref: "#/components/schemas/get_filter_parameter" + items: + minLength: 1 + type: string + type: array style: form - - description: Property to sort Web3 connections by. + - description: Filter by providerId. explode: true in: query - name: sort + name: providerId required: false schema: - default: createdAt - enum: - - id - - userId - - vaultAccountId - - createdAt - - feeLevel - - appUrl - - appName - type: string + items: + minLength: 1 + type: string + type: array style: form - - description: Amount of results to return in the next page. + - description: Filter by order status. explode: true in: query - name: pageSize + name: statuses required: false schema: - default: 10 - maximum: 50 - type: number + items: + $ref: "#/components/schemas/OrderStatus" + type: array style: form - - description: Cursor to the next page - explode: true + - explode: true in: query - name: next + name: startTime + required: false + schema: + minimum: 0 + type: integer + style: form + - explode: true + in: query + name: endTime + required: false + schema: + minimum: 0 + type: integer + style: form + - explode: true + in: query + name: assetConversionType required: false schema: + description: Filter by asset conversion type. + enum: + - DIGITAL_ONLY + - FIAT type: string style: form responses: @@ -23798,60 +23786,95 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GetConnectionsResponse" - description: "" + $ref: "#/components/schemas/GetOrdersResponse" + description: Orders response headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "400": - description: Query parameters were invalid + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "500": - description: Something went wrong + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: List all open Web3 connections. + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get orders tags: - - Web3 connections - x-rate-limit-category: query + - Trading (Beta) + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.web3Connections.get(web3ConnectionsApiGetRequest);" + code: "const response: Promise> =\ + \ fireblocks.tradingBeta.getOrders(tradingBetaApiGetOrdersRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.web3Connections().get(order, filter, sort, pageSize, next,\ - \ xEndUserWalletId);" + code: "CompletableFuture> response = fireblocks.tradingBeta().getOrders(pageSize,\ + \ pageCursor, order, accountId, providerId, statuses, startTime, endTime,\ + \ assetConversionType);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.web3_connections.get(order, filter, sort, page_size,\ - \ next, x_end_user_wallet_id);" + code: "response = fireblocks.trading_beta.get_orders(page_size, page_cursor,\ + \ order, account_id, provider_id, statuses, start_time, end_time, asset_conversion_type);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.web3Connections.get(web3ConnectionsApiGetRequest);" + source: "const response: Promise> =\ + \ fireblocks.tradingBeta.getOrders(tradingBetaApiGetOrdersRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.web3Connections().get(order, filter, sort, pageSize, next,\ - \ xEndUserWalletId);" + source: "CompletableFuture> response = fireblocks.tradingBeta().getOrders(pageSize,\ + \ pageCursor, order, accountId, providerId, statuses, startTime, endTime,\ + \ assetConversionType);" - lang: Python - source: "response = fireblocks.web3_connections.get(order, filter, sort, page_size,\ - \ next, x_end_user_wallet_id);" + source: "response = fireblocks.trading_beta.get_orders(page_size, page_cursor,\ + \ order, account_id, provider_id, statuses, start_time, end_time, asset_conversion_type);" x-accepts: - application/json - /connections/wc: post: description: |- - Initiate a new Web3 connection. + Create an order to buy or sell an asset. If no source is given, an external source will be use. - * Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection. - operationId: create + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: createOrder 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\ @@ -23864,247 +23887,233 @@ paths: schema: type: string style: simple - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/CreateConnectionRequest" + $ref: "#/components/schemas/CreateOrderRequest" required: true responses: - "201": + "202": content: application/json: schema: - $ref: "#/components/schemas/CreateConnectionResponse" - description: Web3 connection initiated successfully + $ref: "#/components/schemas/OrderDetails" + description: Order creation response headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "400": - description: Invalid data sent + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Bad request: invalid input parameters, malformed request body,\ + \ or validation failure." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "500": - description: Something went wrong + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Create a new Web3 connection. - tags: - - Web3 connections - x-rate-limit-category: high_compute - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.web3Connections.create(web3ConnectionsApiCreateRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response\ - \ = fireblocks.web3Connections().create(createConnectionRequest, idempotencyKey,\ - \ xEndUserWalletId);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.web3_connections.create(create_connection_request,\ - \ idempotency_key, x_end_user_wallet_id);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.web3Connections.create(web3ConnectionsApiCreateRequest);" - - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.web3Connections().create(createConnectionRequest, idempotencyKey,\ - \ xEndUserWalletId);" - - lang: Python - source: "response = fireblocks.web3_connections.create(create_connection_request,\ - \ idempotency_key, x_end_user_wallet_id);" - x-content-type: application/json - x-accepts: - - application/json - /connections/wc/{id}: - delete: - description: Remove a Web3 connection - operationId: remove - parameters: - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - style: simple - - description: The ID of the existing Web3 connection to remove. - explode: false - in: path - name: id - required: true - schema: - type: string - style: simple - responses: - "200": - description: Connection removed successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "404": - description: Connection not found + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "500": - description: Something went wrong + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Remove an existing Web3 connection. + default: + $ref: "#/components/responses/Error" + summary: Create an order tags: - - Web3 connections - x-rate-limit-category: high_compute + - Trading (Beta) + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.web3Connections.remove(web3ConnectionsApiRemoveRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.createOrder(tradingBetaApiCreateOrderRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.web3Connections().remove(id,\ - \ xEndUserWalletId);" + code: "CompletableFuture> response = fireblocks.tradingBeta().createOrder(createOrderRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.web3_connections.remove(id, x_end_user_wallet_id);" + code: "response = fireblocks.trading_beta.create_order(create_order_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.web3Connections.remove(web3ConnectionsApiRemoveRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.createOrder(tradingBetaApiCreateOrderRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.web3Connections().remove(id,\ - \ xEndUserWalletId);" + source: "CompletableFuture> response = fireblocks.tradingBeta().createOrder(createOrderRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.web3_connections.remove(id, x_end_user_wallet_id);" + source: "response = fireblocks.trading_beta.create_order(create_order_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - put: + /trading/orders/{orderId}: + get: description: |- - Submit a response to *approve* or *reject* an initiated Web3 connection. - * Note: This call is used to complete your `POST /v1/connections/wc/` request. + Retrieve detailed information about a specific order by its ID. - After this succeeds, your new Web3 connection is created and functioning. - operationId: submit + Note:These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: getOrder parameters: - - description: The ID of the initiated Web3 connection to approve. + - description: The ID of the order to fetch. explode: false in: path - name: id + name: orderId required: true schema: + minLength: 1 type: string 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 - - description: Unique ID of the End-User wallet to the API request. Required - for end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: false - schema: - format: uuid - type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RespondToConnectionRequest" - required: true responses: "200": - description: Connection submitted successfully + content: + application/json: + schema: + $ref: "#/components/schemas/OrderDetails" + description: Order response headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "400": - description: Invalid data sent + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + 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/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "404": - description: Connection not found + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Not found: requested resource does not exist (e.g., order)." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "500": - description: Something went wrong + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Respond to a pending Web3 connection request. + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get order details tags: - - Web3 connections - x-rate-limit-category: high_compute + - Trading (Beta) + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.web3Connections.submit(web3ConnectionsApiSubmitRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.getOrder(tradingBetaApiGetOrderRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.web3Connections().submit(respondToConnectionRequest,\ - \ id, idempotencyKey, xEndUserWalletId);" + code: CompletableFuture> response = fireblocks.tradingBeta().getOrder(orderId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.web3_connections.submit(respond_to_connection_request,\ - \ id, idempotency_key, x_end_user_wallet_id);" + code: response = fireblocks.trading_beta.get_order(order_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.web3Connections.submit(web3ConnectionsApiSubmitRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.getOrder(tradingBetaApiGetOrderRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.web3Connections().submit(respondToConnectionRequest,\ - \ id, idempotencyKey, xEndUserWalletId);" + source: CompletableFuture> response = fireblocks.tradingBeta().getOrder(orderId); - lang: Python - source: "response = fireblocks.web3_connections.submit(respond_to_connection_request,\ - \ id, idempotency_key, x_end_user_wallet_id);" - x-content-type: application/json + source: response = fireblocks.trading_beta.get_order(order_id); x-accepts: - application/json - /address_registry/legal_entities/{address}: + /trading/orders/{orderId}/requirement: get: - description: "Returns legal entity information for the given blockchain address\ - \ (verification status, LEI, Travel Rule providers, contact email, and related\ - \ fields — see response schema). URL-encode `{address}` when required." - operationId: getLegalEntityForAddress + description: |- + Fetch order requirement details for an order that is in `AWAITING_INFORMATION` status. + + The response includes `requirementId` and `dueBy` metadata, a + `requiredData` JSON Schema (Draft-7) describing the shape of the `data` object expected on + `POST /trading/orders/{orderId}/requirement/data`, and `requiredFiles` descriptors for any files the + provider requires (uploaded via `POST /trading/orders/{orderId}/requirement/file`). + + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: getOrderRequirements parameters: - - description: Blockchain address to look up + - description: The ID of the order for which the order requirement is issued. explode: false in: path - name: address + name: orderId required: true schema: - example: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0 + minLength: 1 type: string style: simple responses: @@ -24112,158 +24121,115 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryLegalEntity" - description: Legal entity found + $ref: "#/components/schemas/OrderRequirementDetails" + description: Order requirement details headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "400": + "401": 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/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "404": + "403": 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/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Look up legal entity by blockchain address - tags: - - Compliance - x-rate-limit-category: high_compute - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getLegalEntityForAddress(complianceApiGetLegalEntityForAddressRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response - = fireblocks.compliance().getLegalEntityForAddress(address); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.get_legal_entity_for_address(address); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getLegalEntityForAddress(complianceApiGetLegalEntityForAddressRequest);" - - lang: Java - source: CompletableFuture> response - = fireblocks.compliance().getLegalEntityForAddress(address); - - lang: Python - source: response = fireblocks.compliance.get_legal_entity_for_address(address); - x-accepts: - - application/json - /address_registry/tenant: - delete: - description: Opts the workspace out. No request body. Response uses the same - JSON shape as GET; status is OPTED_OUT. - operationId: optOutAddressRegistryTenant - responses: - "200": + "404": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryTenantRegistryResponse" - description: Success; response body includes status OPTED_OUT + $ref: "#/components/schemas/TradingErrorSchema" + description: "Not found: the order does not exist." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Opt the workspace out of the address registry - tags: - - Compliance - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.optOutAddressRegistryTenant();" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().optOutAddressRegistryTenant(); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.opt_out_address_registry_tenant(); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.optOutAddressRegistryTenant();" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().optOutAddressRegistryTenant(); - - lang: Python - source: response = fireblocks.compliance.opt_out_address_registry_tenant(); - x-accepts: - - application/json - get: - description: Returns whether the workspace is `OPTED_IN` or `OPTED_OUT` of the - address registry. - operationId: getAddressRegistryTenantParticipationStatus - responses: - "200": + "409": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryTenantRegistryResponse" - description: Participation status in the response body + $ref: "#/components/schemas/TradingErrorSchema" + description: "Conflict: the order exists but does not have an active order\ + \ requirement (e.g., the order is not in `AWAITING_INFORMATION`)." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get address registry participation status for the authenticated workspace + summary: Get order requirement details for an order tags: - - Compliance + - Trading (Beta) x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getAddressRegistryTenantParticipationStatus();" + code: "const response: Promise>\ + \ = fireblocks.tradingBeta.getOrderRequirements(tradingBetaApiGetOrderRequirementsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> - response = fireblocks.compliance().getAddressRegistryTenantParticipationStatus(); + code: CompletableFuture> response = + fireblocks.tradingBeta().getOrderRequirements(orderId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_address_registry_tenant_participation_status(); + code: response = fireblocks.trading_beta.get_order_requirements(order_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getAddressRegistryTenantParticipationStatus();" + source: "const response: Promise>\ + \ = fireblocks.tradingBeta.getOrderRequirements(tradingBetaApiGetOrderRequirementsRequest);" - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().getAddressRegistryTenantParticipationStatus(); + source: CompletableFuture> response = + fireblocks.tradingBeta().getOrderRequirements(orderId); - lang: Python - source: response = fireblocks.compliance.get_address_registry_tenant_participation_status(); + source: response = fireblocks.trading_beta.get_order_requirements(order_id); x-accepts: - application/json + /trading/orders/{orderId}/requirement/data: post: - description: Opts the workspace in. No request body. Response uses the same - JSON shape as GET; status is OPTED_IN. - operationId: optInAddressRegistryTenant + description: |- + Submit the user's textual response to an order requirement on an order that is in `AWAITING_INFORMATION` status. + + The request body carries `data` — a free-form object conforming to the `requiredData` JSON Schema + returned by the GET endpoint. Any required files are uploaded separately via + `POST /trading/orders/{orderId}/requirement/file`. + + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: submitOrderRequirements 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\ @@ -24276,187 +24242,145 @@ paths: schema: type: string style: simple + - description: The ID of the order to submit the order requirement response + for. + explode: false + in: path + name: orderId + required: true + schema: + minLength: 1 + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SubmitOrderRequirementRequest" + required: true responses: - "200": + "202": + description: Order requirement submission accepted for processing. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryTenantRegistryResponse" - description: Success; response body includes status OPTED_IN + $ref: "#/components/schemas/TradingErrorSchema" + description: "Bad request: invalid input parameters, malformed request body,\ + \ or validation failure." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Opt the workspace in to the address registry - tags: - - Compliance - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.optInAddressRegistryTenant(complianceApiOptInAddressRegistryTenantRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().optInAddressRegistryTenant(idempotencyKey); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.optInAddressRegistryTenant(complianceApiOptInAddressRegistryTenantRequest);" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().optInAddressRegistryTenant(idempotencyKey); - - lang: Python - source: response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key); - x-accepts: - - application/json - /address_registry/vaults: - delete: - description: Removes all vault accounts from the workspace opt-out list. - operationId: removeAllAddressRegistryVaultOptOuts - responses: - "200": + "401": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryRemoveAllVaultOptOutsResponse" - description: All opt-outs cleared; response body includes `removedCount`. + $ref: "#/components/schemas/TradingErrorSchema" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Remove all vault-level address registry opt-outs for the workspace - tags: - - Compliance - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.removeAllAddressRegistryVaultOptOuts();" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().removeAllAddressRegistryVaultOptOuts(); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs(); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.removeAllAddressRegistryVaultOptOuts();" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().removeAllAddressRegistryVaultOptOuts(); - - lang: Python - source: response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs(); - x-accepts: - - application/json - get: - description: "Lists vault accounts that are opted out of the address registry\ - \ for this workspace. Pagination uses `next` and `prev` cursors from the response.\ - \ If `pageSize` is omitted, **50** items are returned per page; allowed range\ - \ is **1–100** per request." - operationId: listAddressRegistryVaultOptOuts - parameters: - - description: Opaque cursor from a previous response (`next` or `prev`). Omit - for the first page. - explode: true - in: query - name: pageCursor - required: false - schema: - example: eyJvZmZzZXQiOjAsInBhZ2VTaXplIjoxMH0 - type: string - style: form - - description: Page size. Default **50** if omitted; must be between **1** and - **100**. - explode: true - in: query - name: pageSize - required: false - schema: - default: 50 - example: 50 - format: int32 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Sort direction by vault account id. Omit for ascending; use the - enum value for descending. - explode: true - in: query - name: order - required: false - schema: - $ref: "#/components/schemas/AddressRegistryVaultListOrder" - style: form - responses: - "200": + "403": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryListVaultOptOutsResponse" - description: Page of vault opt-out rows + $ref: "#/components/schemas/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "400": + "404": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryError" - description: Validation error (e.g. invalid or malformed pageCursor) + $ref: "#/components/schemas/TradingErrorSchema" + description: "Not found: the order does not exist." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Conflict: the order exists but does not have an active order\ + \ requirement (e.g., the order is not in `AWAITING_INFORMATION`)." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: List vault-level address registry opt-outs (paginated) + summary: Submit a response to an order requirement tags: - - Compliance - x-rate-limit-category: read + - Trading (Beta) + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.listAddressRegistryVaultOptOuts(complianceApiListAddressRegistryVaultOptOutsRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.submitOrderRequirements(tradingBetaApiSubmitOrderRequirementsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.compliance().listAddressRegistryVaultOptOuts(pageCursor,\ - \ pageSize, order);" + code: "CompletableFuture> response = fireblocks.tradingBeta().submitOrderRequirements(submitOrderRequirementRequest,\ + \ orderId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor,\ - \ page_size, order);" + code: "response = fireblocks.trading_beta.submit_order_requirements(submit_order_requirement_request,\ + \ order_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.listAddressRegistryVaultOptOuts(complianceApiListAddressRegistryVaultOptOutsRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.submitOrderRequirements(tradingBetaApiSubmitOrderRequirementsRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.compliance().listAddressRegistryVaultOptOuts(pageCursor,\ - \ pageSize, order);" + source: "CompletableFuture> response = fireblocks.tradingBeta().submitOrderRequirements(submitOrderRequirementRequest,\ + \ orderId, idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor,\ - \ page_size, order);" + source: "response = fireblocks.trading_beta.submit_order_requirements(submit_order_requirement_request,\ + \ order_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json + /trading/orders/{orderId}/requirement/file: post: - description: Adds one or more vault account ids to the workspace opt-out list - for the address registry. - operationId: addAddressRegistryVaultOptOuts + description: |- + Upload a single file (multipart/form-data) in response to an order requirement on an order that is in + `AWAITING_INFORMATION` status. Call this endpoint once per required file. + + Send `fileKey` (matching a `fileKey` from `requiredFiles` on the GET response) and the binary `file`. Its type + must be one of the supported file formats. Fireblocks encrypts each file and uploads it individually to the + underlying provider. The textual response is submitted separately via + `POST /trading/orders/{orderId}/requirement/data`. + + Note: These endpoints are currently in beta and might be subject to changes. + + If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. + + Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + + For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + operationId: uploadOrderRequirementFile 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\ @@ -24469,470 +24393,357 @@ paths: schema: type: string style: simple + - description: The ID of the order to upload the order requirement file for. + explode: false + in: path + name: orderId + required: true + schema: + minLength: 1 + type: string + style: simple requestBody: content: - application/json: + multipart/form-data: schema: - $ref: "#/components/schemas/AddressRegistryAddVaultOptOutsRequest" + $ref: "#/components/schemas/OrderRequirementFileUpload" required: true responses: - "200": + "202": + description: File accepted for processing. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryAddVaultOptOutsResponse" - description: Opt-outs recorded; response body includes `acceptedCount`. + $ref: "#/components/schemas/TradingErrorSchema" + description: "Bad request: unsupported file type, missing fileKey, malformed\ + \ request, or validation failure." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "400": + "401": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryError" - description: Validation error (e.g. empty list or invalid vault ids) + $ref: "#/components/schemas/TradingErrorSchema" + 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/TradingErrorSchema" + description: "Forbidden: insufficient permissions, disabled feature, or\ + \ restricted access." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Not found: the order does not exist." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Conflict: the order exists but does not have an active order\ + \ requirement (e.g., the order is not in `AWAITING_INFORMATION`)." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "429": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: "Rate limit exceeded: slow down and retry later." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/TradingErrorSchema" + description: Internal error while processing the request. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Add vault accounts to the address registry opt-out list + summary: Upload a file for an order requirement tags: - - Compliance + - Trading (Beta) x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.addAddressRegistryVaultOptOuts(complianceApiAddAddressRegistryVaultOptOutsRequest);" + code: "const response: Promise> = fireblocks.tradingBeta.uploadOrderRequirementFile(tradingBetaApiUploadOrderRequirementFileRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.compliance().addAddressRegistryVaultOptOuts(addressRegistryAddVaultOptOutsRequest,\ + code: "CompletableFuture> response = fireblocks.tradingBeta().uploadOrderRequirementFile(orderId,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request,\ + code: "response = fireblocks.trading_beta.upload_order_requirement_file(order_id,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.addAddressRegistryVaultOptOuts(complianceApiAddAddressRegistryVaultOptOutsRequest);" + source: "const response: Promise> = fireblocks.tradingBeta.uploadOrderRequirementFile(tradingBetaApiUploadOrderRequirementFileRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.compliance().addAddressRegistryVaultOptOuts(addressRegistryAddVaultOptOutsRequest,\ + source: "CompletableFuture> response = fireblocks.tradingBeta().uploadOrderRequirementFile(orderId,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request,\ + source: "response = fireblocks.trading_beta.upload_order_requirement_file(order_id,\ \ idempotency_key);" - x-content-type: application/json + x-content-type: multipart/form-data x-accepts: - application/json - /address_registry/vaults/{vaultAccountId}: - delete: - description: "Removes this vault account id from the workspace opt-out list\ - \ if it is present; otherwise the call still succeeds. Response body matches\ - \ GET (`optedOut` is `false` after success). To clear the whole list, use\ - \ `DELETE /v1/address_registry/vaults`." - operationId: removeAddressRegistryVaultOptOut + /admin_quorum: + put: + description: Update admin quorum threshold + operationId: setAdminQuorumThreshold parameters: - - description: Vault account id (non-negative integer). + - 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: path - name: vaultAccountId - required: true + in: header + name: Idempotency-Key + required: false schema: - example: 10001 - format: int32 - minimum: 0 - type: integer + type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SetAdminQuorumThresholdRequest" + required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/AddressRegistryRemoveVaultOptOutResponse" - description: Success; `optedOut` is false (list entry removed if it existed) - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": + "202": content: application/json: schema: - $ref: "#/components/schemas/AddressRegistryError" - description: Invalid path parameter (e.g. negative or out-of-range vault - account id) + $ref: "#/components/schemas/SetAdminQuorumThresholdResponse" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Remove a single vault account from the address registry opt-out list + summary: Update admin quorum threshold tags: - - Compliance + - Admin Quorum + x-internal: true x-rate-limit-category: write x-readme: code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.removeAddressRegistryVaultOptOut(complianceApiRemoveAddressRegistryVaultOptOutRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().removeAddressRegistryVaultOptOut(vaultAccountId); - name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.removeAddressRegistryVaultOptOut(complianceApiRemoveAddressRegistryVaultOptOutRequest);" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().removeAddressRegistryVaultOptOut(vaultAccountId); - - lang: Python - source: response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id); + code: result = fireblocks.set_admin_quorum_threshold(adminQuorumThreshold) + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: const result = await fireblocks.setAdminQuorumThreshold(adminQuorumThreshold) + name: Fireblocks SDK Javascript example + x-content-type: application/json x-accepts: - application/json + /nfts/ownership/tokens: get: - description: "Returns whether this vault account is on the workspace opt-out\ - \ list (`optedOut` true or false). List, add, and clear-all are available\ - \ on `/v1/address_registry/vaults`; this path reads or removes one vault." - operationId: getAddressRegistryVaultOptOut + description: | + Returns all tokens and their data in your workspace. + operationId: getOwnershipTokens parameters: - - description: Vault account id (non-negative integer). - explode: false - in: path - name: vaultAccountId - required: true + - description: Blockchain descriptor filter + explode: true + in: query + name: blockchainDescriptor + required: false schema: - example: 10001 - format: int32 - minimum: 0 - type: integer - style: simple - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/AddressRegistryGetVaultOptOutResponse" - description: Current opt-out flag for the vault - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/AddressRegistryError" - description: Invalid path parameter (e.g. negative or out-of-range vault - account id) - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get whether a vault account is opted out of the address registry - tags: - - Compliance - x-rate-limit-category: read - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getAddressRegistryVaultOptOut(complianceApiGetAddressRegistryVaultOptOutRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().getAddressRegistryVaultOptOut(vaultAccountId); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getAddressRegistryVaultOptOut(complianceApiGetAddressRegistryVaultOptOutRequest);" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().getAddressRegistryVaultOptOut(vaultAccountId); - - lang: Python - source: response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id); - x-accepts: - - application/json - /screening/travel_rule/transaction/validate: - post: - description: |- - Validate Travel Rule transactions. - Checks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction. - **Deprecation Notice** This endpoint will be deprecated soon in favor of the [validate full](https://developers.fireblocks.com/reference/validatefulltravelruletransaction) endpoint. Please update your integrations to use the [validate full](https://developers.fireblocks.com/reference/validatefulltravelruletransaction) endpoint to ensure compatibility with future releases. - Checks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction. - Learn more about Fireblocks Travel Rule management in the following [guide](https://developers.fireblocks.com/docs/define-travel-rule-policies). - - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: validateTravelRuleTransaction - parameters: - - description: |- - Specifies the notation of the transaction. Possible values are: - `notabene`: Uses Notabene notation (default behavior). - `fireblocks`: Uses Fireblocks notation, with automatic translation of asset tickers and amounts. - ``: Defaults to `notabene` for backward compatibility. - **Note:** The default value for the `notation` parameter will change from `notabene` to `fireblocks` Update your integrations accordingly. + enum: + - ETH + - ETH_TEST3 + - ETH_TEST5 + - ETH_TEST6 + - POLYGON + - POLYGON_TEST_MUMBAI + - AMOY_POLYGON_TEST + - XTZ + - XTZ_TEST + - BASECHAIN_ETH + - BASECHAIN_ETH_TEST3 + - BASECHAIN_ETH_TEST5 + - ETHERLINK + - ETHERLINK_TEST + - MANTLE + - MANTLE_TEST + - GUN_GUNZILLA + - GUN_GUNZILLA_TEST + - ETH_SONEIUM + - SONEIUM_MINATO_TEST + - IOTX_IOTEX + - KLAY_KAIA + - KLAY_KAIA_TEST + - APECHAIN + - APECHAIN_TEST + - CRONOS + - CRONOS_TEST + - ROBINHOOD_CHAIN_TESTNET_TEST + - ARB + type: string + style: form + - description: A comma separated list of Vault Account IDs. Up to 100 are allowed + in a single request. This field will be ignored when walletType=END_USER_WALLET + or ncwId is provided. explode: true in: query - name: notation + name: vaultAccountIds required: false schema: - $ref: "#/components/schemas/TravelRuleNotationEnum" + type: string style: form - - 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 + - description: Tenant's Non-Custodial Wallet ID + explode: true + in: query + name: ncwId required: false schema: type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleValidateTransactionRequest" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleValidateTransactionResponse" - description: Transaction validated successfully - default: - $ref: "#/components/responses/Error" - summary: Validate Travel Rule Transaction - tags: - - Travel Rule - x-internal: true - x-rate-limit-category: write - x-content-type: application/json - x-accepts: - - application/json - /screening/travel_rule/transaction/validate/full: - post: - description: |- - Validate Full Travel Rule transactions. - - Checks for all required information on the originator and beneficiary VASPs. - operationId: validateFullTravelRuleTransaction - parameters: - - description: |- - Specifies the notation of the transaction. Possible values are: - `notabene`: Uses Notabene notation (default behavior). - `fireblocks`: Uses Fireblocks notation, with automatic translation of asset tickers and amounts. - ``: Defaults to `notabene` for backward compatibility. - **Note:** The default value for the `notation` parameter will change from `notabene` to `fireblocks` Update your integrations accordingly. + style: form + - description: A comma separated list of Non-Custodial account IDs. Up to 100 + are allowed in a single request. This field will be ignored when walletType=VAULT_ACCOUNT + or ncwId is not provided. explode: true in: query - name: notation + name: ncwAccountIds required: false schema: - $ref: "#/components/schemas/TravelRuleNotationEnum" + type: string style: form - - 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 + - description: "Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`" + explode: true + in: query + name: walletType required: false schema: + default: VAULT_ACCOUNT + enum: + - VAULT_ACCOUNT + - END_USER_WALLET type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleValidateFullTransactionRequest" - required: true - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleValidateTransactionResponse" - description: Transaction validated successfully - default: - $ref: "#/components/responses/Error" - summary: Validate Full Travel Rule Transaction - tags: - - Travel Rule - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.validateFullTravelRuleTransaction(travelRuleApiValidateFullTravelRuleTransactionRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture>\ - \ response = fireblocks.travelRule().validateFullTravelRuleTransaction(travelRuleValidateFullTransactionRequest,\ - \ notation, idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.travel_rule.validate_full_travel_rule_transaction(travel_rule_validate_full_transaction_request,\ - \ notation, idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.validateFullTravelRuleTransaction(travelRuleApiValidateFullTravelRuleTransactionRequest);" - - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.travelRule().validateFullTravelRuleTransaction(travelRuleValidateFullTransactionRequest,\ - \ notation, idempotencyKey);" - - lang: Python - source: "response = fireblocks.travel_rule.validate_full_travel_rule_transaction(travel_rule_validate_full_transaction_request,\ - \ notation, idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /screening/travel_rule/vasp/{did}: - get: - description: |- - Get VASP Details. - - Returns information about a VASP that has the specified DID. - operationId: getVASPByDID - parameters: - - explode: false - in: path - name: did - required: true + style: form + - description: A comma separated list of NFT IDs. Up to 100 are allowed in a + single request. + explode: true + in: query + name: ids + required: false schema: type: string - style: simple - - description: "A CSV of fields to return. Choose from the following options:" + style: form + - description: A comma separated list of collection IDs. Up to 100 are allowed + in a single request. explode: true in: query - name: fields + name: collectionIds required: false schema: - $ref: "#/components/schemas/TravelRuleFieldsEnum" + type: string style: form - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleVASP" - description: Transaction validated successfully - "400": - description: Invalid request body - "500": - description: Internal server error - summary: Get VASP details - tags: - - Travel Rule - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.travelRule.getVASPByDID(travelRuleApiGetVASPByDIDRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response = fireblocks.travelRule().getVASPByDID(did,\ - \ fields);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.travel_rule.get_v_a_s_p_by_d_i_d(did, fields);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.travelRule.getVASPByDID(travelRuleApiGetVASPByDIDRequest);" - - lang: Java - source: "CompletableFuture> response = fireblocks.travelRule().getVASPByDID(did,\ - \ fields);" - - lang: Python - source: "response = fireblocks.travel_rule.get_v_a_s_p_by_d_i_d(did, fields);" - x-accepts: - - application/json - /screening/travel_rule/vasp: - get: - description: |- - Get All VASPs. - - Returns a list of VASPs. VASPs can be searched and sorted. - operationId: getVASPs - parameters: - - description: Field to order by - example: ASC + - description: Page cursor to fetch explode: true in: query - name: order + name: pageCursor required: false schema: - enum: - - ASC - - DESC type: string style: form - - description: Records per page - example: 10 + - description: Items per page (max 100) explode: true in: query name: pageSize required: false schema: - default: 500 - maximum: 1000 - minimum: 100 + maximum: 100 + minimum: 1 type: number style: form - - description: "CSV of fields to return (all, \"blank\" or see list of all field\ - \ names below)" + - description: "Sort by param, it can be one param or a list of params separated\ + \ by comma" explode: true in: query - name: fields + name: sort required: false schema: - $ref: "#/components/schemas/TravelRuleFieldsEnum" + items: + enum: + - ownershipLastUpdateTime + - name + - collection.name + - blockchainDescriptor + type: string + type: array style: form - - description: Search query - example: Fireblocks + - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ + \ descending" explode: true in: query - name: search + name: order required: false schema: + default: ASC + enum: + - DESC + - ASC type: string style: form - - description: "Filter by the VASP's review status. Possible values include:\ - \ \"TRUSTED\", \"BLOCKED\", \"MANUAL\", or \"NULL\". When provided, only\ - \ VASPs that match the specified reviewValue will be returned (i.e., VASPs\ - \ that have already been reviewed to this status)." - example: TRUSTED + - description: Token ownership status explode: true in: query - name: reviewValue + name: status required: false schema: + default: LISTED enum: - - TRUSTED - - BLOCKED - - MANUAL - - null + - LISTED + - ARCHIVED type: string style: form - - description: "Cursor for pagination. When provided, the response will include\ - \ the next page of results." - example: 100 + - description: "Search owned tokens and their collections. Possible criteria\ + \ for search: token name and id within the contract/collection, collection\ + \ name, blockchain descriptor and name." explode: true in: query - name: pageCursor + name: search + required: false + schema: + maximum: 100 + type: string + style: form + - description: Token ownership spam status. + explode: true + in: query + name: spam required: false schema: + enum: + - "true" + - "false" + - all type: string style: form responses: @@ -24940,50 +24751,94 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TravelRuleGetAllVASPsResponse" - description: Get all VASPs - default: - $ref: "#/components/responses/Error" - summary: Get All VASPs + $ref: "#/components/schemas/GetOwnershipTokensResponse" + description: "" + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: List all owned tokens (paginated) tags: - - Travel Rule + - NFTs x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.getVASPs(travelRuleApiGetVASPsRequest);" + code: "const response: Promise>\ + \ = fireblocks.nFTs.getOwnershipTokens(nFTsApiGetOwnershipTokensRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.travelRule().getVASPs(order, pageSize, fields, search,\ - \ reviewValue, pageCursor);" + code: "CompletableFuture> response\ + \ = fireblocks.nFTs().getOwnershipTokens(blockchainDescriptor, vaultAccountIds,\ + \ ncwId, ncwAccountIds, walletType, ids, collectionIds, pageCursor, pageSize,\ + \ sort, order, status, search, spam);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.travel_rule.get_v_a_s_ps(order, page_size,\ - \ fields, search, review_value, page_cursor);" + code: "response = fireblocks.n_f_ts.get_ownership_tokens(blockchain_descriptor,\ + \ vault_account_ids, ncw_id, ncw_account_ids, wallet_type, ids, collection_ids,\ + \ page_cursor, page_size, sort, order, status, search, spam);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.getVASPs(travelRuleApiGetVASPsRequest);" + source: "const response: Promise>\ + \ = fireblocks.nFTs.getOwnershipTokens(nFTsApiGetOwnershipTokensRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.travelRule().getVASPs(order, pageSize, fields, search, reviewValue,\ - \ pageCursor);" + source: "CompletableFuture> response\ + \ = fireblocks.nFTs().getOwnershipTokens(blockchainDescriptor, vaultAccountIds,\ + \ ncwId, ncwAccountIds, walletType, ids, collectionIds, pageCursor, pageSize,\ + \ sort, order, status, search, spam);" - lang: Python - source: "response = fireblocks.travel_rule.get_v_a_s_ps(order, page_size,\ - \ fields, search, review_value, page_cursor);" + source: "response = fireblocks.n_f_ts.get_ownership_tokens(blockchain_descriptor,\ + \ vault_account_ids, ncw_id, ncw_account_ids, wallet_type, ids, collection_ids,\ + \ page_cursor, page_size, sort, order, status, search, spam);" x-accepts: - application/json - /screening/travel_rule/vasp/update: put: description: |- - Update VASP Details. + Updates all tokens and balances per blockchain and vault account. + Learn more about Fireblocks NFT management in the following [guide](https://developers.fireblocks.com/reference/deploy-an-nft-collection). - Updates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene. - operationId: updateVasp + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: updateOwnershipTokens parameters: + - description: Blockchain descriptor filter + explode: true + in: query + name: blockchainDescriptor + required: true + schema: + enum: + - ETH + - ETH_TEST5 + - ETH_TEST6 + - POLYGON + - POLYGON_TEST_MUMBAI + - AMOY_POLYGON_TEST + - BASECHAIN_ETH + - BASECHAIN_ETH_TEST5 + - ETHERLINK + - ETHERLINK_TEST + - MANTLE + - MANTLE_TEST + - GUN_GUNZILLA + - GUN_GUNZILLA_TEST + - ETH_SONEIUM + - SONEIUM_MINATO_TEST + - IOTX_IOTEX + - KLAY_KAIA + - KLAY_KAIA_TEST + - APECHAIN + - APECHAIN_TEST + - ROBINHOOD_CHAIN_TESTNET_TEST + type: string + style: form + - description: Vault account filter + explode: true + in: query + name: vaultAccountId + required: true + schema: + type: string + style: form - 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\ @@ -24995,320 +24850,392 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleUpdateVASPDetails" - required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleUpdateVASPDetails" - description: VASP updated successfully - "400": - description: Invalid request body - "500": - description: Internal server error - summary: Add jsonDidKey to VASP details + "202": + description: "" + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Refresh vault account tokens tags: - - Travel Rule + - NFTs x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.updateVasp(travelRuleApiUpdateVaspRequest);" + code: "const response: Promise> = fireblocks.nFTs.updateOwnershipTokens(nFTsApiUpdateOwnershipTokensRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.travelRule().updateVasp(travelRuleUpdateVASPDetails, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.nFTs().updateOwnershipTokens(blockchainDescriptor,\ + \ vaultAccountId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.travel_rule.update_vasp(travel_rule_update_v_a_s_p_details,\ - \ idempotency_key);" + code: "response = fireblocks.n_f_ts.update_ownership_tokens(blockchain_descriptor,\ + \ vault_account_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.updateVasp(travelRuleApiUpdateVaspRequest);" + source: "const response: Promise> = fireblocks.nFTs.updateOwnershipTokens(nFTsApiUpdateOwnershipTokensRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.travelRule().updateVasp(travelRuleUpdateVASPDetails, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.nFTs().updateOwnershipTokens(blockchainDescriptor,\ + \ vaultAccountId, idempotencyKey);" - lang: Python - source: "response = fireblocks.travel_rule.update_vasp(travel_rule_update_v_a_s_p_details,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.n_f_ts.update_ownership_tokens(blockchain_descriptor,\ + \ vault_account_id, idempotency_key);" x-accepts: - application/json - /screening/travel_rule/vault/{vaultAccountId}/vasp: + /nfts/ownership/assets: get: - description: Get assigned VASP Did for a specific vault. Returns empty string - vaspDid value in response if none assigned. - operationId: getVaspForVault + description: | + Returns all owned distinct tokens (for your tenant) and their data in your workspace. + operationId: listOwnedTokens parameters: - - description: The ID of the vault account - example: 1 - explode: false - in: path - name: vaultAccountId - required: true + - description: Tenant's Non-Custodial Wallet ID + explode: true + in: query + name: ncwId + required: false schema: - format: numeric type: string - x-fb-entity: vault_account - style: simple + style: form + - description: "Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`" + explode: true + in: query + name: walletType + required: false + schema: + default: VAULT_ACCOUNT + enum: + - VAULT_ACCOUNT + - END_USER_WALLET + type: string + style: form + - description: Page cursor to fetch + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Items per page (max 100) + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: number + style: form + - description: "Sort by param, it can be one param or a list of params separated\ + \ by comma" + explode: true + in: query + name: sort + required: false + schema: + items: + enum: + - name + type: string + type: array + style: form + - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ + \ descending" + explode: true + in: query + name: order + required: false + schema: + default: ASC + enum: + - DESC + - ASC + type: string + style: form + - description: Token ownership status + explode: true + in: query + name: status + required: false + schema: + default: LISTED + enum: + - LISTED + - ARCHIVED + type: string + style: form + - description: Search owned tokens by token name + explode: true + in: query + name: search + required: false + schema: + maximum: 100 + type: string + style: form + - description: Token ownership spam status. + explode: true + in: query + name: spam + required: false + schema: + enum: + - "true" + - "false" + - all + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TravelRuleVaspForVault" - description: OK + $ref: "#/components/schemas/ListOwnedTokensResponse" + description: "" headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get assigned VASP to vault + summary: List all distinct owned tokens (paginated) tags: - - Travel Rule - x-rate-limit-category: read + - NFTs + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: const vaultAsset = await fireblocks.getVaspForVault(vaultAccountId); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.getVaspForVault(travelRuleApiGetVaspForVaultRequest);" + code: "const response: Promise>\ + \ = fireblocks.nFTs.listOwnedTokens(nFTsApiListOwnedTokensRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.travelRule().getVaspForVault(vaultAccountId); + code: "CompletableFuture> response\ + \ = fireblocks.nFTs().listOwnedTokens(ncwId, walletType, pageCursor, pageSize,\ + \ sort, order, status, search, spam);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.travel_rule.get_vasp_for_vault(vault_account_id); + code: "response = fireblocks.n_f_ts.list_owned_tokens(ncw_id, wallet_type,\ + \ page_cursor, page_size, sort, order, status, search, spam);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.getVaspForVault(travelRuleApiGetVaspForVaultRequest);" + source: "const response: Promise>\ + \ = fireblocks.nFTs.listOwnedTokens(nFTsApiListOwnedTokensRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.travelRule().getVaspForVault(vaultAccountId); + source: "CompletableFuture> response\ + \ = fireblocks.nFTs().listOwnedTokens(ncwId, walletType, pageCursor, pageSize,\ + \ sort, order, status, search, spam);" - lang: Python - source: response = fireblocks.travel_rule.get_vasp_for_vault(vault_account_id); + source: "response = fireblocks.n_f_ts.list_owned_tokens(ncw_id, wallet_type,\ + \ page_cursor, page_size, sort, order, status, search, spam);" x-accepts: - application/json - post: - description: Sets the VASP Did for a specific vault. Pass empty string to remove - existing one. - operationId: setVaspForVault + /nfts/ownership/collections: + get: + description: | + Returns all collections in your workspace + operationId: listOwnedCollections parameters: - - description: The ID of the vault account - explode: false - in: path - name: vaultAccountId - required: true + - description: Tenant's Non-Custodial Wallet ID + explode: true + in: query + name: ncwId + required: false schema: - format: numeric type: string - x-fb-entity: vault_account - 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 + style: form + - description: "Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`" + explode: true + in: query + name: walletType required: false schema: + default: VAULT_ACCOUNT + enum: + - VAULT_ACCOUNT + - END_USER_WALLET type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TravelRuleVaspForVault" - required: true + style: form + - description: "Search owned collections. Possible criteria for search: collection\ + \ name, collection contract address." + explode: true + in: query + name: search + required: false + schema: + maximum: 100 + type: string + style: form + - description: Page cursor to fetch + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Items per page (max 100) + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: number + style: form + - description: "Sort by param, it can be one param or a list of params separated\ + \ by comma" + explode: true + in: query + name: sort + required: false + schema: + items: + enum: + - name + type: string + type: array + style: form + - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ + \ descending" + explode: true + in: query + name: order + required: false + schema: + default: ASC + enum: + - DESC + - ASC + type: string + style: form + - description: Token ownership status + explode: true + in: query + name: status + required: false + schema: + default: LISTED + enum: + - LISTED + - ARCHIVED + type: string + style: form responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/TravelRuleVaspForVault" - description: OK + $ref: "#/components/schemas/ListOwnedCollectionsResponse" + description: "" headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Assign VASP to vault - tags: - - Travel Rule - x-rate-limit-category: write - x-readme: - code-samples: - - language: javascript - code: "const vaultAsset = await fireblocks.setVaspForVault(vaultAccountId,\ - \ vaspDid);" - name: Fireblocks SDK Javascript example - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.setVaspForVault(travelRuleApiSetVaspForVaultRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response =\ - \ fireblocks.travelRule().setVaspForVault(travelRuleVaspForVault, vaultAccountId,\ - \ idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.travel_rule.set_vasp_for_vault(travel_rule_vasp_for_vault,\ - \ vault_account_id, idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.setVaspForVault(travelRuleApiSetVaspForVaultRequest);" - - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.travelRule().setVaspForVault(travelRuleVaspForVault, vaultAccountId,\ - \ idempotencyKey);" - - lang: Python - source: "response = fireblocks.travel_rule.set_vasp_for_vault(travel_rule_vasp_for_vault,\ - \ vault_account_id, idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /screening/travel_rule/post_screening_policy: - get: - description: Get the post-screening policy for Travel Rule. - operationId: getPostScreeningPolicy - parameters: [] - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningPolicyResponse" - description: Post-screening policy retrieved successfully. - summary: Travel Rule - View Post-Screening Policy + summary: List owned collections (paginated) tags: - - Compliance + - NFTs x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getPostScreeningPolicy();" + code: "const response: Promise>\ + \ = fireblocks.nFTs.listOwnedCollections(nFTsApiListOwnedCollectionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.compliance().getPostScreeningPolicy(); + code: "CompletableFuture> response\ + \ = fireblocks.nFTs().listOwnedCollections(ncwId, walletType, search,\ + \ pageCursor, pageSize, sort, order, status);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_post_screening_policy(); + code: "response = fireblocks.n_f_ts.list_owned_collections(ncw_id, wallet_type,\ + \ search, page_cursor, page_size, sort, order, status);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getPostScreeningPolicy();" + source: "const response: Promise>\ + \ = fireblocks.nFTs.listOwnedCollections(nFTsApiListOwnedCollectionsRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.compliance().getPostScreeningPolicy(); + source: "CompletableFuture> response\ + \ = fireblocks.nFTs().listOwnedCollections(ncwId, walletType, search, pageCursor,\ + \ pageSize, sort, order, status);" - lang: Python - source: response = fireblocks.compliance.get_post_screening_policy(); + source: "response = fireblocks.n_f_ts.list_owned_collections(ncw_id, wallet_type,\ + \ search, page_cursor, page_size, sort, order, status);" x-accepts: - application/json - /screening/travel_rule/screening_policy: + /nfts/tokens/{id}: get: - description: Get the screening policy for Travel Rule. - operationId: getScreeningPolicy - parameters: [] + description: | + Returns the requested token data. + operationId: getNFT + parameters: + - description: NFT ID + example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd + explode: false + in: path + name: id + required: true + schema: + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ScreeningProviderRulesConfigurationResponse" - description: Screening policy retrieved successfully. - summary: Travel Rule - View Screening Policy + $ref: "#/components/schemas/TokenResponse" + description: "" + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: List token data by ID tags: - - Compliance + - NFTs x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getScreeningPolicy();" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().getScreeningPolicy(); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.get_screening_policy(); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getScreeningPolicy();" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().getScreeningPolicy(); - - lang: Python - source: response = fireblocks.compliance.get_screening_policy(); - x-accepts: - - application/json - /screening/travel_rule/policy_configuration: - get: - description: Retrieves the configuration for Travel Rule screening policy. - operationId: getScreeningConfiguration - parameters: [] - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningConfigurationsRequest" - description: Screening policy configuration retrieved successfully. - summary: Get Travel Rule Screening Policy Configuration - tags: - - Compliance Screening Configuration - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.complianceScreeningConfiguration.getScreeningConfiguration();" + code: "const response: Promise> = fireblocks.nFTs.getNFT(nFTsApiGetNFTRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.complianceScreeningConfiguration().getScreeningConfiguration(); + code: CompletableFuture> response = fireblocks.nFTs().getNFT(id); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance_screening_configuration.get_screening_configuration(); + code: response = fireblocks.n_f_ts.get_n_f_t(id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.complianceScreeningConfiguration.getScreeningConfiguration();" + source: "const response: Promise> = fireblocks.nFTs.getNFT(nFTsApiGetNFTRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.complianceScreeningConfiguration().getScreeningConfiguration(); + source: CompletableFuture> response = fireblocks.nFTs().getNFT(id); - lang: Python - source: response = fireblocks.compliance_screening_configuration.get_screening_configuration(); + source: response = fireblocks.n_f_ts.get_n_f_t(id); x-accepts: - application/json put: - description: "Updates bypass screening, inbound delay, or outbound delay configurations\ - \ for Travel Rule." - operationId: updateTravelRuleConfig + description: | + Updates the latest token metadata. + operationId: refreshNFTMetadata parameters: + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: false + schema: + format: uuid + type: string + style: simple + - description: NFT ID + example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd + explode: false + in: path + name: id + required: true + schema: + type: string + 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\ @@ -25321,208 +25248,163 @@ paths: type: string style: simple responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningConfigurationsRequest" - description: Configuration updated successfully. - summary: Update Travel Rule Configuration + "202": + description: "" + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Refresh token metadata tags: - - Compliance + - NFTs x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.updateTravelRuleConfig(complianceApiUpdateTravelRuleConfigRequest);" + code: "const response: Promise> = fireblocks.nFTs.refreshNFTMetadata(nFTsApiRefreshNFTMetadataRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.compliance().updateTravelRuleConfig(idempotencyKey); + code: "CompletableFuture> response = fireblocks.nFTs().refreshNFTMetadata(id,\ + \ xEndUserWalletId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.update_travel_rule_config(idempotency_key); + code: "response = fireblocks.n_f_ts.refresh_n_f_t_metadata(id, x_end_user_wallet_id,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.updateTravelRuleConfig(complianceApiUpdateTravelRuleConfigRequest);" + source: "const response: Promise> = fireblocks.nFTs.refreshNFTMetadata(nFTsApiRefreshNFTMetadataRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.compliance().updateTravelRuleConfig(idempotencyKey); + source: "CompletableFuture> response = fireblocks.nFTs().refreshNFTMetadata(id,\ + \ xEndUserWalletId, idempotencyKey);" - lang: Python - source: response = fireblocks.compliance.update_travel_rule_config(idempotency_key); + source: "response = fireblocks.n_f_ts.refresh_n_f_t_metadata(id, x_end_user_wallet_id,\ + \ idempotency_key);" x-accepts: - application/json - /screening/travel_rule/providers/trust/proof_of_address: - post: - description: Creates a cryptographic proof of address ownership for TRUST network. - operationId: createTrustProofOfAddress + /nfts/tokens: + get: + description: | + Returns the requested tokens data. + operationId: getNFTs 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 + - description: A comma separated list of NFT IDs. Up to 100 are allowed in a + single request. + explode: true + in: query + name: ids + required: true + schema: + type: string + style: form + - description: Page cursor to fetch + explode: true + in: query + name: pageCursor required: false schema: type: string - style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TrustProofOfAddressRequest" - required: true + style: form + - description: Items per page (max 100) + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: number + style: form + - description: "Sort by param, it can be one param or a list of params separated\ + \ by comma" + explode: true + in: query + name: sort + required: false + schema: + items: + enum: + - collection.name + - name + - blockchainDescriptor + type: string + type: array + style: form + - description: "Order direction, it can be `ASC` for ascending or `DESC` for\ + \ descending" + explode: true + in: query + name: order + required: false + schema: + default: ASC + enum: + - DESC + - ASC + type: string + style: form responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/TrustProofOfAddressCreateResponse" - description: Proof of address transaction created successfully + $ref: "#/components/schemas/GetNFTsResponse" + description: "" headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Create Trust Network Proof of Address + summary: List tokens by IDs tags: - - Travel Rule - x-rate-limit-category: async + - NFTs + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.createTrustProofOfAddress(travelRuleApiCreateTrustProofOfAddressRequest);" + code: "const response: Promise> = fireblocks.nFTs.getNFTs(nFTsApiGetNFTsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.travelRule().createTrustProofOfAddress(trustProofOfAddressRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response = fireblocks.nFTs().getNFTs(ids,\ + \ pageCursor, pageSize, sort, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.travel_rule.create_trust_proof_of_address(trust_proof_of_address_request,\ - \ idempotency_key);" + code: "response = fireblocks.n_f_ts.get_n_f_ts(ids, page_cursor, page_size,\ + \ sort, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.createTrustProofOfAddress(travelRuleApiCreateTrustProofOfAddressRequest);" + source: "const response: Promise> = fireblocks.nFTs.getNFTs(nFTsApiGetNFTsRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.travelRule().createTrustProofOfAddress(trustProofOfAddressRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response = fireblocks.nFTs().getNFTs(ids,\ + \ pageCursor, pageSize, sort, order);" - lang: Python - source: "response = fireblocks.travel_rule.create_trust_proof_of_address(trust_proof_of_address_request,\ - \ idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.n_f_ts.get_n_f_ts(ids, page_cursor, page_size,\ + \ sort, order);" x-accepts: - application/json - /screening/travel_rule/providers/trust/proof_of_address/{transactionId}: - get: - description: Retrieves the TRUST-compatible encoded signature for a proof of - address transaction. Send this signature directly to TRUST for verification. - operationId: getTrustProofOfAddress + /nfts/ownership/tokens/{id}/status: + put: + description: | + Updates token status for a tenant, in all tenant vaults. + operationId: updateTokenOwnershipStatus parameters: - - description: Fireblocks transaction ID (UUID format) - example: 550e8400-e29b-41d4-a716-446655440000 + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: false + schema: + format: uuid + type: string + style: simple + - description: NFT ID + example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd explode: false in: path - name: transactionId + name: id required: true schema: - format: uuid type: string style: simple - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/TrustProofOfAddressResponse" - description: Encoded signature retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Retrieve Trust Network Proof of Address Signature - tags: - - Travel Rule - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.travelRule.getTrustProofOfAddress(travelRuleApiGetTrustProofOfAddressRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response - = fireblocks.travelRule().getTrustProofOfAddress(transactionId); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.travel_rule.get_trust_proof_of_address(transaction_id); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.travelRule.getTrustProofOfAddress(travelRuleApiGetTrustProofOfAddressRequest);" - - lang: Java - source: CompletableFuture> response - = fireblocks.travelRule().getTrustProofOfAddress(transactionId); - - lang: Python - source: response = fireblocks.travel_rule.get_trust_proof_of_address(transaction_id); - x-accepts: - - application/json - /screening/aml/policy_configuration: - get: - description: Retrieves the configuration for Travel Rule screening policy. - operationId: getAmlScreeningConfiguration - parameters: [] - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningConfigurationsRequest" - description: Screening policy configuration retrieved successfully. - summary: Get AML Screening Policy Configuration - tags: - - Compliance Screening Configuration - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.complianceScreeningConfiguration.getAmlScreeningConfiguration();" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response - = fireblocks.complianceScreeningConfiguration().getAmlScreeningConfiguration(); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance_screening_configuration.get_aml_screening_configuration(); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.complianceScreeningConfiguration.getAmlScreeningConfiguration();" - - lang: Java - source: CompletableFuture> response - = fireblocks.complianceScreeningConfiguration().getAmlScreeningConfiguration(); - - lang: Python - source: response = fireblocks.compliance_screening_configuration.get_aml_screening_configuration(); - x-accepts: - - application/json - put: - description: "Updates bypass screening, inbound delay, or outbound delay configurations\ - \ for AML." - operationId: updateAmlScreeningConfiguration - 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\ @@ -25534,126 +25416,62 @@ paths: schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateTokenOwnershipStatusDto" + required: true responses: "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningConfigurationsRequest" - description: Configuration updated successfully. - summary: Update AML Configuration + description: "" + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Update token ownership status tags: - - Compliance + - NFTs x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.updateAmlScreeningConfiguration(complianceApiUpdateAmlScreeningConfigurationRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response - = fireblocks.compliance().updateAmlScreeningConfiguration(idempotencyKey); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.update_aml_screening_configuration(idempotency_key); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.updateAmlScreeningConfiguration(complianceApiUpdateAmlScreeningConfigurationRequest);" - - lang: Java - source: CompletableFuture> response - = fireblocks.compliance().updateAmlScreeningConfiguration(idempotencyKey); - - lang: Python - source: response = fireblocks.compliance.update_aml_screening_configuration(idempotency_key); - x-accepts: - - application/json - /screening/aml/screening_policy: - get: - description: Get the screening policy for AML. - operationId: getAmlScreeningPolicy - parameters: [] - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningProviderRulesConfigurationResponse" - description: Screening policy retrieved successfully. - summary: AML - View Screening Policy - tags: - - Compliance - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getAmlScreeningPolicy();" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> - response = fireblocks.compliance().getAmlScreeningPolicy(); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.compliance.get_aml_screening_policy(); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getAmlScreeningPolicy();" - - lang: Java - source: CompletableFuture> - response = fireblocks.compliance().getAmlScreeningPolicy(); - - lang: Python - source: response = fireblocks.compliance.get_aml_screening_policy(); - x-accepts: - - application/json - /screening/aml/post_screening_policy: - get: - description: Get the post-screening policy for AML. - operationId: getAmlPostScreeningPolicy - parameters: [] - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningPolicyResponse" - description: Post-screening policy retrieved successfully. - summary: AML - View Post-Screening Policy - tags: - - Compliance - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getAmlPostScreeningPolicy();" + code: "const response: Promise> = fireblocks.nFTs.updateTokenOwnershipStatus(nFTsApiUpdateTokenOwnershipStatusRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.compliance().getAmlPostScreeningPolicy(); + code: "CompletableFuture> response = fireblocks.nFTs().updateTokenOwnershipStatus(updateTokenOwnershipStatusDto,\ + \ id, xEndUserWalletId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_aml_post_screening_policy(); + code: "response = fireblocks.n_f_ts.update_token_ownership_status(update_token_ownership_status_dto,\ + \ id, x_end_user_wallet_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getAmlPostScreeningPolicy();" + source: "const response: Promise> = fireblocks.nFTs.updateTokenOwnershipStatus(nFTsApiUpdateTokenOwnershipStatusRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.compliance().getAmlPostScreeningPolicy(); + source: "CompletableFuture> response = fireblocks.nFTs().updateTokenOwnershipStatus(updateTokenOwnershipStatusDto,\ + \ id, xEndUserWalletId, idempotencyKey);" - lang: Python - source: response = fireblocks.compliance.get_aml_post_screening_policy(); + source: "response = fireblocks.n_f_ts.update_token_ownership_status(update_token_ownership_status_dto,\ + \ id, x_end_user_wallet_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /screening/configurations: + /nfts/ownership/tokens/status: put: - description: Update tenant screening configuration. - operationId: updateScreeningConfiguration + description: "Updates tokens status for a tenant, in all tenant vaults." + operationId: updateTokensOwnershipStatus parameters: + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: false + schema: + format: uuid + type: string + 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\ @@ -25669,62 +25487,67 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ScreeningUpdateConfigurations" + $ref: "#/components/schemas/UpdateTokensOwnershipStatusRequest" required: true responses: "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ScreeningUpdateConfigurations" - description: Tenant Screening configuration updated successfully. - summary: Tenant - Screening Configuration + description: All token statuses have been updated + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + description: Invalid data sent + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + description: When ownership for token ID is not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Update tokens ownership status tags: - - Compliance + - NFTs x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.updateScreeningConfiguration(complianceApiUpdateScreeningConfigurationRequest);" + code: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipStatus(nFTsApiUpdateTokensOwnershipStatusRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.compliance().updateScreeningConfiguration(screeningUpdateConfigurations,\ - \ idempotencyKey);" + code: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipStatus(tokenOwnershipStatusUpdatePayload,\ + \ xEndUserWalletId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.update_screening_configuration(screening_update_configurations,\ - \ idempotency_key);" + code: "response = fireblocks.n_f_ts.update_tokens_ownership_status(token_ownership_status_update_payload,\ + \ x_end_user_wallet_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.updateScreeningConfiguration(complianceApiUpdateScreeningConfigurationRequest);" + source: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipStatus(nFTsApiUpdateTokensOwnershipStatusRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.compliance().updateScreeningConfiguration(screeningUpdateConfigurations,\ - \ idempotencyKey);" + source: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipStatus(tokenOwnershipStatusUpdatePayload,\ + \ xEndUserWalletId, idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.update_screening_configuration(screening_update_configurations,\ - \ idempotency_key);" + source: "response = fireblocks.n_f_ts.update_tokens_ownership_status(token_ownership_status_update_payload,\ + \ x_end_user_wallet_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /screening/transaction/{txId}/bypass_screening_policy: - post: - description: "Triggers a new transaction, with the API user as the initiator,\ - \ bypassing the screening policy checks. This endpoint is restricted to Admin\ - \ API users and is only applicable to outgoing transactions." - operationId: retryRejectedTransactionBypassScreeningChecks + /nfts/ownership/tokens/spam: + put: + description: "Updates tokens spam property for a tenant's token ownerships,\ + \ in all tenant vaults." + operationId: updateTokensOwnershipSpam parameters: - - description: The transaction id that was rejected by screening checks - example: 550e8400-e29b-41d4-a716-446655440000 + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. explode: false - in: path - name: txId - required: true + in: header + name: X-End-User-Wallet-Id + required: false schema: + format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -25738,112 +25561,205 @@ paths: schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateTokensOwnershipSpamRequest" + required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/CreateTransactionResponse" - description: A transaction object + "200": + description: All token spam properties have been updated headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Bypass Screening Policy + "400": + description: Invalid data sent + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + description: When ownership for token ID is not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Update tokens ownership spam property tags: - - Compliance + - NFTs x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.retryRejectedTransactionBypassScreeningChecks(complianceApiRetryRejectedTransactionBypassScreeningChecksRequest);" + code: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipSpam(nFTsApiUpdateTokensOwnershipSpamRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.compliance().retryRejectedTransactionBypassScreeningChecks(txId,\ - \ idempotencyKey);" + code: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipSpam(tokenOwnershipSpamUpdatePayload,\ + \ xEndUserWalletId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.retry_rejected_transaction_bypass_screening_checks(tx_id,\ - \ idempotency_key);" + code: "response = fireblocks.n_f_ts.update_tokens_ownership_spam(token_ownership_spam_update_payload,\ + \ x_end_user_wallet_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.retryRejectedTransactionBypassScreeningChecks(complianceApiRetryRejectedTransactionBypassScreeningChecksRequest);" + source: "const response: Promise> = fireblocks.nFTs.updateTokensOwnershipSpam(nFTsApiUpdateTokensOwnershipSpamRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.compliance().retryRejectedTransactionBypassScreeningChecks(txId,\ - \ idempotencyKey);" + source: "CompletableFuture> response = fireblocks.nFTs().updateTokensOwnershipSpam(tokenOwnershipSpamUpdatePayload,\ + \ xEndUserWalletId, idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.retry_rejected_transaction_bypass_screening_checks(tx_id,\ - \ idempotency_key);" + source: "response = fireblocks.n_f_ts.update_tokens_ownership_spam(token_ownership_spam_update_payload,\ + \ x_end_user_wallet_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /screening/transaction/{txId}: + /connections: get: - description: Provides all the compliance details for the given screened transaction. - operationId: getScreeningFullDetails + description: Get open Web3 connections. + operationId: get parameters: - - description: Fireblocks transaction ID of the screened transaction - example: 550e8400-e29b-41d4-a716-446655440000 + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. explode: false - in: path - name: txId - required: true + in: header + name: X-End-User-Wallet-Id + required: false schema: + format: uuid type: string style: simple - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ComplianceResultFullPayload" - description: A compliance object - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Provides all the compliance details for the given screened transaction. - tags: - - Compliance - x-rate-limit-category: query + - description: List order; ascending or descending. + explode: true + in: query + name: order + required: false + schema: + default: ASC + enum: + - ASC + - DESC + type: string + style: form + - description: Parsed filter object + examples: + object: + description: "" + summary: The filter object + value: + id: string + userId: string + vaultAccountId: number + connectionMethod: string + feeLevel: string + appUrl: string + appName: string + stringified: + description: |- + About stringified parsed objects: + + * Each key-value pair is separated by '=', and each pair is separated by ',' (you can use [`qs`](https://www.npmjs.com/package/qs) package for this) + summary: The stringified parsed object + value: "id=string,userId=string,vaultAccountId=number,connectionMethod=string,feeLevel=string,appUrl=string,appName=string" + explode: true + in: query + name: filter + required: false + schema: + $ref: "#/components/schemas/get_filter_parameter" + style: form + - description: Property to sort Web3 connections by. + explode: true + in: query + name: sort + required: false + schema: + default: createdAt + enum: + - id + - userId + - vaultAccountId + - createdAt + - feeLevel + - appUrl + - appName + type: string + style: form + - description: Amount of results to return in the next page. + explode: true + in: query + name: pageSize + required: false + schema: + default: 10 + maximum: 50 + type: number + style: form + - description: Cursor to the next page + explode: true + in: query + name: next + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GetConnectionsResponse" + description: "" + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + description: Query parameters were invalid + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + description: Something went wrong + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: List all open Web3 connections. + tags: + - Web3 connections + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getScreeningFullDetails(complianceApiGetScreeningFullDetailsRequest);" + code: "const response: Promise>\ + \ = fireblocks.web3Connections.get(web3ConnectionsApiGetRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.compliance().getScreeningFullDetails(txId); + code: "CompletableFuture> response =\ + \ fireblocks.web3Connections().get(order, filter, sort, pageSize, next,\ + \ xEndUserWalletId);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_screening_full_details(tx_id); + code: "response = fireblocks.web3_connections.get(order, filter, sort, page_size,\ + \ next, x_end_user_wallet_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getScreeningFullDetails(complianceApiGetScreeningFullDetailsRequest);" + source: "const response: Promise>\ + \ = fireblocks.web3Connections.get(web3ConnectionsApiGetRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.compliance().getScreeningFullDetails(txId); + source: "CompletableFuture> response =\ + \ fireblocks.web3Connections().get(order, filter, sort, pageSize, next,\ + \ xEndUserWalletId);" - lang: Python - source: response = fireblocks.compliance.get_screening_full_details(tx_id); + source: "response = fireblocks.web3_connections.get(order, filter, sort, page_size,\ + \ next, x_end_user_wallet_id);" x-accepts: - application/json - /screening/aml/verdict/manual: + /connections/wc: post: - description: "Set AML verdict for incoming transactions when **BYORK Super Light**\ - \ (Manual Screening Verdict) is enabled. This endpoint is for Super Light\ - \ only. For **BYORK Light**, use POST /screening/byork/verdict instead. When\ - \ Super Light is retired, this endpoint will be deprecated; use the BYORK\ - \ Light verdict API for new integrations." - operationId: setAmlVerdict + description: |- + Initiate a new Web3 connection. + + * Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection. + operationId: create 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\ @@ -25856,171 +25772,156 @@ paths: schema: type: string style: simple + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: false + schema: + format: uuid + type: string + style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/AmlVerdictManualRequest" + $ref: "#/components/schemas/CreateConnectionRequest" required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/AmlVerdictManualResponse" - description: AML verdict set successfully. - "400": + "201": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Feature not enabled for tenant. + $ref: "#/components/schemas/CreateConnectionResponse" + description: Web3 connection initiated successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "425": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: Too Early - transaction not yet in pending screening. + "400": + description: Invalid data sent headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "500": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: Internal server error. + description: Something went wrong headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Set AML Verdict (BYORK Super Light) + summary: Create a new Web3 connection. tags: - - Compliance - x-rate-limit-category: write + - Web3 connections + x-rate-limit-category: high_compute x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.setAmlVerdict(complianceApiSetAmlVerdictRequest);" + code: "const response: Promise>\ + \ = fireblocks.web3Connections.create(web3ConnectionsApiCreateRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.compliance().setAmlVerdict(amlVerdictManualRequest, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.web3Connections().create(createConnectionRequest, idempotencyKey,\ + \ xEndUserWalletId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.set_aml_verdict(aml_verdict_manual_request,\ - \ idempotency_key);" + code: "response = fireblocks.web3_connections.create(create_connection_request,\ + \ idempotency_key, x_end_user_wallet_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.setAmlVerdict(complianceApiSetAmlVerdictRequest);" + source: "const response: Promise>\ + \ = fireblocks.web3Connections.create(web3ConnectionsApiCreateRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.compliance().setAmlVerdict(amlVerdictManualRequest, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.web3Connections().create(createConnectionRequest, idempotencyKey,\ + \ xEndUserWalletId);" - lang: Python - source: "response = fireblocks.compliance.set_aml_verdict(aml_verdict_manual_request,\ - \ idempotency_key);" + source: "response = fireblocks.web3_connections.create(create_connection_request,\ + \ idempotency_key, x_end_user_wallet_id);" x-content-type: application/json x-accepts: - application/json - /screening/byork/verdict: - get: - description: "Returns the current BYORK verdict and status for a transaction.\ - \ Status can be PRE_ACCEPTED, PENDING, RECEIVED (verdict is final but processing\ - \ not yet complete), or COMPLETED. Requires BYORK Light to be enabled for\ - \ the tenant. Returns 404 if no BYORK verdict is found for the transaction." - operationId: getByorkVerdict + /connections/wc/{id}: + delete: + description: Remove a Web3 connection + operationId: remove parameters: - - description: Transaction ID - explode: true - in: query - name: txId + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: false + schema: + format: uuid + type: string + style: simple + - description: The ID of the existing Web3 connection to remove. + explode: false + in: path + name: id required: true schema: - example: 550e8400-e29b-41d4-a716-446655440000 type: string - style: form + style: simple responses: "200": - content: - application/json: - schema: - $ref: "#/components/schemas/GetByorkVerdictResponse" - description: Current verdict and status. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: BYORK Light not enabled for tenant or txId missing. + description: Connection removed successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: No BYORK verdict found for this transaction. + description: Connection not found headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "500": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: Internal server error. + description: Something went wrong headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get BYORK Light verdict + summary: Remove an existing Web3 connection. tags: - - Compliance - x-rate-limit-category: read + - Web3 connections + x-rate-limit-category: high_compute x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getByorkVerdict(complianceApiGetByorkVerdictRequest);" + code: "const response: Promise> = fireblocks.web3Connections.remove(web3ConnectionsApiRemoveRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.compliance().getByorkVerdict(txId); + code: "CompletableFuture> response = fireblocks.web3Connections().remove(id,\ + \ xEndUserWalletId);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_byork_verdict(tx_id); + code: "response = fireblocks.web3_connections.remove(id, x_end_user_wallet_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getByorkVerdict(complianceApiGetByorkVerdictRequest);" + source: "const response: Promise> = fireblocks.web3Connections.remove(web3ConnectionsApiRemoveRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.compliance().getByorkVerdict(txId); + source: "CompletableFuture> response = fireblocks.web3Connections().remove(id,\ + \ xEndUserWalletId);" - lang: Python - source: response = fireblocks.compliance.get_byork_verdict(tx_id); + source: "response = fireblocks.web3_connections.remove(id, x_end_user_wallet_id);" x-accepts: - application/json - post: - description: "Submit verdict (ACCEPT or REJECT) for a transaction in the BYORK\ - \ Light flow. If the transaction is awaiting your decision, the verdict is\ - \ applied immediately (response status COMPLETED). If processing has not yet\ - \ reached that point, the verdict is stored and applied when it does (response\ - \ status PRE_ACCEPTED). Requires BYORK Light to be enabled for the tenant." - operationId: setByorkVerdict + put: + description: |- + Submit a response to *approve* or *reject* an initiated Web3 connection. + * Note: This call is used to complete your `POST /v1/connections/wc/` request. + + After this succeeds, your new Web3 connection is created and functioning. + operationId: submit parameters: + - description: The ID of the initiated Web3 connection to approve. + explode: false + in: path + name: id + required: true + schema: + type: string + 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\ @@ -26032,105 +25933,95 @@ paths: schema: type: string style: simple + - description: Unique ID of the End-User wallet to the API request. Required + for end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: false + schema: + format: uuid + type: string + style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/ByorkVerdictRequest" + $ref: "#/components/schemas/RespondToConnectionRequest" required: true responses: "200": - content: - application/json: - schema: - $ref: "#/components/schemas/ByorkVerdictResponse" - description: Verdict applied (COMPLETED) or pre-accepted (PRE_ACCEPTED). + description: Connection submitted successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: BYORK Light not enabled for tenant or invalid verdict. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "409": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: "BYORK decision already final, screening already completed,\ - \ or state inconsistent." + description: Invalid data sent headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "425": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: Too Early - transaction not found (screening not started yet). + "404": + description: Connection not found headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "500": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: Internal server error. + description: Something went wrong headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Set BYORK Light verdict + summary: Respond to a pending Web3 connection request. tags: - - Compliance - x-rate-limit-category: write + - Web3 connections + x-rate-limit-category: high_compute x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.setByorkVerdict(complianceApiSetByorkVerdictRequest);" + code: "const response: Promise> = fireblocks.web3Connections.submit(web3ConnectionsApiSubmitRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.compliance().setByorkVerdict(byorkVerdictRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response = fireblocks.web3Connections().submit(respondToConnectionRequest,\ + \ id, idempotencyKey, xEndUserWalletId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.set_byork_verdict(byork_verdict_request,\ - \ idempotency_key);" + code: "response = fireblocks.web3_connections.submit(respond_to_connection_request,\ + \ id, idempotency_key, x_end_user_wallet_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.setByorkVerdict(complianceApiSetByorkVerdictRequest);" + source: "const response: Promise> = fireblocks.web3Connections.submit(web3ConnectionsApiSubmitRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.compliance().setByorkVerdict(byorkVerdictRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response = fireblocks.web3Connections().submit(respondToConnectionRequest,\ + \ id, idempotencyKey, xEndUserWalletId);" - lang: Python - source: "response = fireblocks.compliance.set_byork_verdict(byork_verdict_request,\ - \ idempotency_key);" + source: "response = fireblocks.web3_connections.submit(respond_to_connection_request,\ + \ id, idempotency_key, x_end_user_wallet_id);" x-content-type: application/json x-accepts: - application/json - /screening/byork/config: + /address_registry/legal_entities/{address}: get: - description: "Retrieves BYORK Light configuration for the authenticated tenant\ - \ (timeouts, active flag, allowed timeout ranges). Returns default config\ - \ when none exists. Requires BYORK Light to be enabled for the tenant." - operationId: getByorkConfig + description: "Returns legal entity information for the given blockchain address\ + \ (verification status, LEI, Travel Rule providers, contact email, and related\ + \ fields — see response schema). URL-encode `{address}` when required." + operationId: getLegalEntityForAddress + parameters: + - description: Blockchain address to look up + explode: false + in: path + name: address + required: true + schema: + example: 0x742d35cc6634c0532925a3b844bc9e7595f0beb0 + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ByorkConfigResponse" - description: BYORK configuration (or default). + $ref: "#/components/schemas/AddressRegistryLegalEntity" + description: Legal entity found headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -26138,178 +26029,149 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: BYORK Light not enabled for tenant. + $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." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + 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." headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get BYORK Light configuration + summary: Look up legal entity by blockchain address tags: - Compliance - x-rate-limit-category: read + x-rate-limit-category: high_compute x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getByorkConfig();" + code: "const response: Promise>\ + \ = fireblocks.compliance.getLegalEntityForAddress(complianceApiGetLegalEntityForAddressRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.compliance().getByorkConfig(); + code: CompletableFuture> response + = fireblocks.compliance().getLegalEntityForAddress(address); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_byork_config(); + code: response = fireblocks.compliance.get_legal_entity_for_address(address); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getByorkConfig();" + source: "const response: Promise>\ + \ = fireblocks.compliance.getLegalEntityForAddress(complianceApiGetLegalEntityForAddressRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.compliance().getByorkConfig(); + source: CompletableFuture> response + = fireblocks.compliance().getLegalEntityForAddress(address); - lang: Python - source: response = fireblocks.compliance.get_byork_config(); + source: response = fireblocks.compliance.get_legal_entity_for_address(address); x-accepts: - application/json - /screening/byork/config/activate: - post: - description: "Activates BYORK Light for the authenticated tenant (sets config.active\ - \ to true). Once activated, BYORK screening applies to matching transactions.\ - \ Requires BYORK Light to be enabled for the tenant (contact your CSM to enable)." - operationId: activateByorkConfig - 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 + /address_registry/tenant: + delete: + description: Opts the workspace out. No request body. Response uses the same + JSON shape as GET; status is OPTED_OUT. + operationId: optOutAddressRegistryTenant responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ByorkConfigResponse" - description: BYORK configuration activated. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: BYORK Light not enabled for tenant. + $ref: "#/components/schemas/AddressRegistryTenantRegistryResponse" + description: Success; response body includes status OPTED_OUT headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Activate BYORK Light + summary: Opt the workspace out of the address registry tags: - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.activateByorkConfig(complianceApiActivateByorkConfigRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.optOutAddressRegistryTenant();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.compliance().activateByorkConfig(idempotencyKey); + code: CompletableFuture> + response = fireblocks.compliance().optOutAddressRegistryTenant(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.activate_byork_config(idempotency_key); + code: response = fireblocks.compliance.opt_out_address_registry_tenant(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.activateByorkConfig(complianceApiActivateByorkConfigRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.optOutAddressRegistryTenant();" - lang: Java - source: CompletableFuture> response = fireblocks.compliance().activateByorkConfig(idempotencyKey); + source: CompletableFuture> + response = fireblocks.compliance().optOutAddressRegistryTenant(); - lang: Python - source: response = fireblocks.compliance.activate_byork_config(idempotency_key); + source: response = fireblocks.compliance.opt_out_address_registry_tenant(); x-accepts: - application/json - /screening/byork/config/deactivate: - post: - description: "Deactivates BYORK Light for the authenticated tenant (sets config.active\ - \ to false). Once deactivated, BYORK screening no longer applies until activated\ - \ again. Requires BYORK Light to be enabled for the tenant (contact your CSM\ - \ to enable)." - operationId: deactivateByorkConfig - 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 + get: + description: Returns whether the workspace is `OPTED_IN` or `OPTED_OUT` of the + address registry. + operationId: getAddressRegistryTenantParticipationStatus responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ByorkConfigResponse" - description: BYORK configuration deactivated. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: BYORK Light not enabled for tenant. + $ref: "#/components/schemas/AddressRegistryTenantRegistryResponse" + description: Participation status in the response body headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Deactivate BYORK Light + summary: Get address registry participation status for the authenticated workspace tags: - Compliance - x-rate-limit-category: write + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.deactivateByorkConfig(complianceApiDeactivateByorkConfigRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getAddressRegistryTenantParticipationStatus();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.compliance().deactivateByorkConfig(idempotencyKey); + code: CompletableFuture> + response = fireblocks.compliance().getAddressRegistryTenantParticipationStatus(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.deactivate_byork_config(idempotency_key); + code: response = fireblocks.compliance.get_address_registry_tenant_participation_status(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.deactivateByorkConfig(complianceApiDeactivateByorkConfigRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getAddressRegistryTenantParticipationStatus();" - lang: Java - source: CompletableFuture> response = fireblocks.compliance().deactivateByorkConfig(idempotencyKey); + source: CompletableFuture> + response = fireblocks.compliance().getAddressRegistryTenantParticipationStatus(); - lang: Python - source: response = fireblocks.compliance.deactivate_byork_config(idempotency_key); + source: response = fireblocks.compliance.get_address_registry_tenant_participation_status(); x-accepts: - application/json - /screening/byork/config/timeouts: - put: - description: "Updates timeout values for BYORK wait-for-response (incoming and/or\ - \ outgoing). At least one of incomingTimeoutSeconds or outgoingTimeoutSeconds\ - \ is required. Values must be within the ranges returned in GET config (timeoutRangeIncoming\ - \ for incomingTimeoutSeconds, timeoutRangeOutgoing for outgoingTimeoutSeconds).\ - \ Requires BYORK Light to be enabled for the tenant (contact your CSM to enable)." - operationId: setByorkTimeouts + post: + description: Opts the workspace in. No request body. Response uses the same + JSON shape as GET; status is OPTED_IN. + operationId: optInAddressRegistryTenant 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\ @@ -26322,90 +26184,137 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ByorkSetTimeoutsRequest" - required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ByorkConfigResponse" - description: Timeouts updated. + $ref: "#/components/schemas/AddressRegistryTenantRegistryResponse" + description: Success; response body includes status OPTED_IN headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - "400": + default: + $ref: "#/components/responses/Error" + summary: Opt the workspace in to the address registry + tags: + - Compliance + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.optInAddressRegistryTenant(complianceApiOptInAddressRegistryTenantRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> + response = fireblocks.compliance().optInAddressRegistryTenant(idempotencyKey); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.optInAddressRegistryTenant(complianceApiOptInAddressRegistryTenantRequest);" + - lang: Java + source: CompletableFuture> + response = fireblocks.compliance().optInAddressRegistryTenant(idempotencyKey); + - lang: Python + source: response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key); + x-accepts: + - application/json + /address_registry/vaults: + delete: + description: Removes all vault accounts from the workspace opt-out list. + operationId: removeAllAddressRegistryVaultOptOuts + responses: + "200": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: "BYORK Light not enabled, or timeout value out of range, or\ - \ missing both timeouts." + $ref: "#/components/schemas/AddressRegistryRemoveAllVaultOptOutsResponse" + description: All opt-outs cleared; response body includes `removedCount`. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Set BYORK Light timeouts + summary: Remove all vault-level address registry opt-outs for the workspace tags: - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.setByorkTimeouts(complianceApiSetByorkTimeoutsRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.removeAllAddressRegistryVaultOptOuts();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.compliance().setByorkTimeouts(byorkSetTimeoutsRequest,\ - \ idempotencyKey);" + code: CompletableFuture> + response = fireblocks.compliance().removeAllAddressRegistryVaultOptOuts(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.set_byork_timeouts(byork_set_timeouts_request,\ - \ idempotency_key);" + code: response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.setByorkTimeouts(complianceApiSetByorkTimeoutsRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.removeAllAddressRegistryVaultOptOuts();" - lang: Java - source: "CompletableFuture> response = fireblocks.compliance().setByorkTimeouts(byorkSetTimeoutsRequest,\ - \ idempotencyKey);" + source: CompletableFuture> + response = fireblocks.compliance().removeAllAddressRegistryVaultOptOuts(); - lang: Python - source: "response = fireblocks.compliance.set_byork_timeouts(byork_set_timeouts_request,\ - \ idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs(); x-accepts: - application/json - /screening/ars/config/activate: - post: - description: "Activates ARS (Address Registry Screening) for the authenticated\ - \ tenant (sets config.active to true). Once activated, ARS screening applies\ - \ to matching transactions." - operationId: activateArsConfig + get: + description: "Lists vault accounts that are opted out of the address registry\ + \ for this workspace. Pagination uses `next` and `prev` cursors from the response.\ + \ If `pageSize` is omitted, **50** items are returned per page; allowed range\ + \ is **1–100** per request." + operationId: listAddressRegistryVaultOptOuts 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 + - description: Opaque cursor from a previous response (`next` or `prev`). Omit + for the first page. + explode: true + in: query + name: pageCursor required: false schema: + example: eyJvZmZzZXQiOjAsInBhZ2VTaXplIjoxMH0 type: string - style: simple + style: form + - description: Page size. Default **50** if omitted; must be between **1** and + **100**. + explode: true + in: query + name: pageSize + required: false + schema: + default: 50 + example: 50 + format: int32 + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Sort direction by vault account id. Omit for ascending; use the + enum value for descending. + explode: true + in: query + name: order + required: false + schema: + $ref: "#/components/schemas/AddressRegistryVaultListOrder" + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ArsConfigResponse" - description: ARS configuration activated. + $ref: "#/components/schemas/AddressRegistryListVaultOptOutsResponse" + description: Page of vault opt-out rows headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -26413,45 +26322,49 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Tenant not opted-in for address registry. + $ref: "#/components/schemas/AddressRegistryError" + description: Validation error (e.g. invalid or malformed pageCursor) headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Activate ARS (Address Registry Screening) + summary: List vault-level address registry opt-outs (paginated) tags: - Compliance - x-rate-limit-category: write + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.compliance.activateArsConfig(complianceApiActivateArsConfigRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.listAddressRegistryVaultOptOuts(complianceApiListAddressRegistryVaultOptOutsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.compliance().activateArsConfig(idempotencyKey); + code: "CompletableFuture>\ + \ response = fireblocks.compliance().listAddressRegistryVaultOptOuts(pageCursor,\ + \ pageSize, order);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.activate_ars_config(idempotency_key); + code: "response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor,\ + \ page_size, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.compliance.activateArsConfig(complianceApiActivateArsConfigRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.listAddressRegistryVaultOptOuts(complianceApiListAddressRegistryVaultOptOutsRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.compliance().activateArsConfig(idempotencyKey); + source: "CompletableFuture>\ + \ response = fireblocks.compliance().listAddressRegistryVaultOptOuts(pageCursor,\ + \ pageSize, order);" - lang: Python - source: response = fireblocks.compliance.activate_ars_config(idempotency_key); + source: "response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor,\ + \ page_size, order);" x-accepts: - application/json - /screening/ars/config/deactivate: post: - description: "Deactivates ARS (Address Registry Screening) for the authenticated\ - \ tenant (sets config.active to false). Once deactivated, ARS screening no\ - \ longer applies until activated again." - operationId: deactivateArsConfig + description: Adds one or more vault account ids to the workspace opt-out list + for the address registry. + operationId: addAddressRegistryVaultOptOuts 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\ @@ -26464,13 +26377,19 @@ paths: schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AddressRegistryAddVaultOptOutsRequest" + required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ArsConfigResponse" - description: ARS configuration deactivated. + $ref: "#/components/schemas/AddressRegistryAddVaultOptOutsResponse" + description: Opt-outs recorded; response body includes `acceptedCount`. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" @@ -26478,136 +26397,204 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Tenant not opted-in for address registry. + $ref: "#/components/schemas/AddressRegistryError" + description: Validation error (e.g. empty list or invalid vault ids) headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Deactivate ARS (Address Registry Screening) + summary: Add vault accounts to the address registry opt-out list tags: - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.compliance.deactivateArsConfig(complianceApiDeactivateArsConfigRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.addAddressRegistryVaultOptOuts(complianceApiAddAddressRegistryVaultOptOutsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.compliance().deactivateArsConfig(idempotencyKey); + code: "CompletableFuture>\ + \ response = fireblocks.compliance().addAddressRegistryVaultOptOuts(addressRegistryAddVaultOptOutsRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.deactivate_ars_config(idempotency_key); + code: "response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.compliance.deactivateArsConfig(complianceApiDeactivateArsConfigRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.addAddressRegistryVaultOptOuts(complianceApiAddAddressRegistryVaultOptOutsRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.compliance().deactivateArsConfig(idempotencyKey); + source: "CompletableFuture>\ + \ response = fireblocks.compliance().addAddressRegistryVaultOptOuts(addressRegistryAddVaultOptOutsRequest,\ + \ idempotencyKey);" - lang: Python - source: response = fireblocks.compliance.deactivate_ars_config(idempotency_key); + source: "response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /screening/trlink/partners: - get: - description: "Retrieves a list of all available Travel Rule Support integration\ - \ partners. Partners provide Travel Rule compliance services such as VASP\ - \ discovery, TRM exchange, and PII encryption." - operationId: getTRLinkPartners + /address_registry/vaults/{vaultAccountId}: + delete: + description: "Removes this vault account id from the workspace opt-out list\ + \ if it is present; otherwise the call still succeeds. Response body matches\ + \ GET (`optedOut` is `false` after success). To clear the whole list, use\ + \ `DELETE /v1/address_registry/vaults`." + operationId: removeAddressRegistryVaultOptOut + parameters: + - description: Vault account id (non-negative integer). + explode: false + in: path + name: vaultAccountId + required: true + schema: + example: 10001 + format: int32 + minimum: 0 + type: integer + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkPartnersListResponse" - description: List of partners retrieved successfully + $ref: "#/components/schemas/AddressRegistryRemoveVaultOptOutResponse" + description: Success; `optedOut` is false (list entry removed if it existed) + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/AddressRegistryError" + description: Invalid path parameter (e.g. negative or out-of-range vault + account id) headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: List available TRSupport partners + summary: Remove a single vault account from the address registry opt-out list tags: - - TRLink - x-rate-limit-category: query + - Compliance + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkPartners();" + code: "const response: Promise>\ + \ = fireblocks.compliance.removeAddressRegistryVaultOptOut(complianceApiRemoveAddressRegistryVaultOptOutRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture>> response - = fireblocks.tRLink().getTRLinkPartners(); + code: CompletableFuture> + response = fireblocks.compliance().removeAddressRegistryVaultOptOut(vaultAccountId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.get_t_r_link_partners(); + code: response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkPartners();" + source: "const response: Promise>\ + \ = fireblocks.compliance.removeAddressRegistryVaultOptOut(complianceApiRemoveAddressRegistryVaultOptOutRequest);" - lang: Java - source: CompletableFuture>> response - = fireblocks.tRLink().getTRLinkPartners(); + source: CompletableFuture> + response = fireblocks.compliance().removeAddressRegistryVaultOptOut(vaultAccountId); - lang: Python - source: response = fireblocks.t_r_link.get_t_r_link_partners(); + source: response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id); x-accepts: - application/json - /screening/trlink/customers: get: - description: Retrieves all customers associated with the authenticated tenant. - Returns a list of legal entities configured for Travel Rule compliance. - operationId: getTRLinkCustomers + description: "Returns whether this vault account is on the workspace opt-out\ + \ list (`optedOut` true or false). List, add, and clear-all are available\ + \ on `/v1/address_registry/vaults`; this path reads or removes one vault." + operationId: getAddressRegistryVaultOptOut + parameters: + - description: Vault account id (non-negative integer). + explode: false + in: path + name: vaultAccountId + required: true + schema: + example: 10001 + format: int32 + minimum: 0 + type: integer + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomersListResponse" - description: Customers retrieved successfully + $ref: "#/components/schemas/AddressRegistryGetVaultOptOutResponse" + description: Current opt-out flag for the vault + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/AddressRegistryError" + description: Invalid path parameter (e.g. negative or out-of-range vault + account id) headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get all customers + summary: Get whether a vault account is opted out of the address registry tags: - - TRLink - x-rate-limit-category: query + - Compliance + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomers();" + code: "const response: Promise>\ + \ = fireblocks.compliance.getAddressRegistryVaultOptOut(complianceApiGetAddressRegistryVaultOptOutRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture>> response - = fireblocks.tRLink().getTRLinkCustomers(); + code: CompletableFuture> + response = fireblocks.compliance().getAddressRegistryVaultOptOut(vaultAccountId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.get_t_r_link_customers(); + code: response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomers();" + source: "const response: Promise>\ + \ = fireblocks.compliance.getAddressRegistryVaultOptOut(complianceApiGetAddressRegistryVaultOptOutRequest);" - lang: Java - source: CompletableFuture>> response - = fireblocks.tRLink().getTRLinkCustomers(); + source: CompletableFuture> + response = fireblocks.compliance().getAddressRegistryVaultOptOut(vaultAccountId); - lang: Python - source: response = fireblocks.t_r_link.get_t_r_link_customers(); + source: response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id); x-accepts: - application/json + /screening/travel_rule/transaction/validate: post: - description: Creates a new customer (legal entity/VASP) for TRSupport Travel - Rule compliance operations. The customer represents your organization in the - Travel Rule network and contains IVMS101-compliant identity information. - operationId: createTRLinkCustomer + description: |- + Validate Travel Rule transactions. + Checks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction. + **Deprecation Notice** This endpoint will be deprecated soon in favor of the [validate full](https://developers.fireblocks.com/reference/validatefulltravelruletransaction) endpoint. Please update your integrations to use the [validate full](https://developers.fireblocks.com/reference/validatefulltravelruletransaction) endpoint to ensure compatibility with future releases. + Checks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction. + Learn more about Fireblocks Travel Rule management in the following [guide](https://developers.fireblocks.com/docs/define-travel-rule-policies). + + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: validateTravelRuleTransaction parameters: + - description: |- + Specifies the notation of the transaction. Possible values are: - `notabene`: Uses Notabene notation (default behavior). - `fireblocks`: Uses Fireblocks notation, with automatic translation of asset tickers and amounts. - ``: Defaults to `notabene` for backward compatibility. + **Note:** The default value for the `notation` parameter will change from `notabene` to `fireblocks` Update your integrations accordingly. + explode: true + in: query + name: notation + required: false + schema: + $ref: "#/components/schemas/TravelRuleNotationEnum" + style: form - 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\ @@ -26623,171 +26610,288 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkCreateCustomerRequest" + $ref: "#/components/schemas/TravelRuleValidateTransactionRequest" required: true responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomerResponse" - description: Customer created successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/TravelRuleValidateTransactionResponse" + description: Transaction validated successfully default: $ref: "#/components/responses/Error" - summary: Create customer + summary: Validate Travel Rule Transaction tags: - - TRLink + - Travel Rule + x-internal: true + x-rate-limit-category: write + x-content-type: application/json + x-accepts: + - application/json + /screening/travel_rule/transaction/validate/full: + post: + description: |- + Validate Full Travel Rule transactions. + + Checks for all required information on the originator and beneficiary VASPs. + operationId: validateFullTravelRuleTransaction + parameters: + - description: |- + Specifies the notation of the transaction. Possible values are: - `notabene`: Uses Notabene notation (default behavior). - `fireblocks`: Uses Fireblocks notation, with automatic translation of asset tickers and amounts. - ``: Defaults to `notabene` for backward compatibility. + **Note:** The default value for the `notation` parameter will change from `notabene` to `fireblocks` Update your integrations accordingly. + explode: true + in: query + name: notation + required: false + schema: + $ref: "#/components/schemas/TravelRuleNotationEnum" + style: form + - 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/TravelRuleValidateFullTransactionRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TravelRuleValidateTransactionResponse" + description: Transaction validated successfully + default: + $ref: "#/components/responses/Error" + summary: Validate Full Travel Rule Transaction + tags: + - Travel Rule x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkCustomer(tRLinkApiCreateTRLinkCustomerRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.validateFullTravelRuleTransaction(travelRuleApiValidateFullTravelRuleTransactionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().createTRLinkCustomer(tRLinkCreateCustomerRequest,\ - \ idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.travelRule().validateFullTravelRuleTransaction(travelRuleValidateFullTransactionRequest,\ + \ notation, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.create_t_r_link_customer(t_r_link_create_customer_request,\ - \ idempotency_key);" + code: "response = fireblocks.travel_rule.validate_full_travel_rule_transaction(travel_rule_validate_full_transaction_request,\ + \ notation, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkCustomer(tRLinkApiCreateTRLinkCustomerRequest);" - - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().createTRLinkCustomer(tRLinkCreateCustomerRequest,\ - \ idempotencyKey);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.validateFullTravelRuleTransaction(travelRuleApiValidateFullTravelRuleTransactionRequest);" + - lang: Java + source: "CompletableFuture>\ + \ response = fireblocks.travelRule().validateFullTravelRuleTransaction(travelRuleValidateFullTransactionRequest,\ + \ notation, idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.create_t_r_link_customer(t_r_link_create_customer_request,\ - \ idempotency_key);" + source: "response = fireblocks.travel_rule.validate_full_travel_rule_transaction(travel_rule_validate_full_transaction_request,\ + \ notation, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /screening/trlink/customers/{customerId}: - delete: - description: Deletes a customer and all associated integrations. This action - cannot be undone. - operationId: deleteTRLinkCustomer + /screening/travel_rule/vasp/{did}: + get: + description: |- + Get VASP Details. + + Returns information about a VASP that has the specified DID. + operationId: getVASPByDID parameters: - - description: Customer unique identifier - example: 550e8400-e29b-41d4-a716-446655440001 - explode: false + - explode: false in: path - name: customerId + name: did required: true schema: - format: uuid type: string style: simple + - description: "A CSV of fields to return. Choose from the following options:" + explode: true + in: query + name: fields + required: false + schema: + $ref: "#/components/schemas/TravelRuleFieldsEnum" + style: form responses: - "204": - description: Customer deleted successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Delete customer + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TravelRuleVASP" + description: Transaction validated successfully + "400": + description: Invalid request body + "500": + description: Internal server error + summary: Get VASP details tags: - - TRLink - x-rate-limit-category: write + - Travel Rule + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tRLink.deleteTRLinkCustomer(tRLinkApiDeleteTRLinkCustomerRequest);" + code: "const response: Promise> = fireblocks.travelRule.getVASPByDID(travelRuleApiGetVASPByDIDRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tRLink().deleteTRLinkCustomer(customerId); + code: "CompletableFuture> response = fireblocks.travelRule().getVASPByDID(did,\ + \ fields);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.delete_t_r_link_customer(customer_id); + code: "response = fireblocks.travel_rule.get_v_a_s_p_by_d_i_d(did, fields);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tRLink.deleteTRLinkCustomer(tRLinkApiDeleteTRLinkCustomerRequest);" + source: "const response: Promise> = fireblocks.travelRule.getVASPByDID(travelRuleApiGetVASPByDIDRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.tRLink().deleteTRLinkCustomer(customerId); + source: "CompletableFuture> response = fireblocks.travelRule().getVASPByDID(did,\ + \ fields);" - lang: Python - source: response = fireblocks.t_r_link.delete_t_r_link_customer(customer_id); + source: "response = fireblocks.travel_rule.get_v_a_s_p_by_d_i_d(did, fields);" x-accepts: - application/json + /screening/travel_rule/vasp: get: - description: Retrieves detailed information about a specific customer by their - unique identifier. - operationId: getTRLinkCustomerById + description: |- + Get All VASPs. + + Returns a list of VASPs. VASPs can be searched and sorted. + operationId: getVASPs parameters: - - description: Customer unique identifier - example: 550e8400-e29b-41d4-a716-446655440001 - explode: false - in: path - name: customerId - required: true + - description: Field to order by + example: ASC + explode: true + in: query + name: order + required: false schema: - format: uuid + enum: + - ASC + - DESC type: string - style: simple + style: form + - description: Records per page + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + default: 500 + maximum: 1000 + minimum: 100 + type: number + style: form + - description: "CSV of fields to return (all, \"blank\" or see list of all field\ + \ names below)" + explode: true + in: query + name: fields + required: false + schema: + $ref: "#/components/schemas/TravelRuleFieldsEnum" + style: form + - description: Search query + example: Fireblocks + explode: true + in: query + name: search + required: false + schema: + type: string + style: form + - description: "Filter by the VASP's review status. Possible values include:\ + \ \"TRUSTED\", \"BLOCKED\", \"MANUAL\", or \"NULL\". When provided, only\ + \ VASPs that match the specified reviewValue will be returned (i.e., VASPs\ + \ that have already been reviewed to this status)." + example: TRUSTED + explode: true + in: query + name: reviewValue + required: false + schema: + enum: + - TRUSTED + - BLOCKED + - MANUAL + - null + type: string + style: form + - description: "Cursor for pagination. When provided, the response will include\ + \ the next page of results." + example: 100 + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomerResponse" - description: Customer retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/TravelRuleGetAllVASPsResponse" + description: Get all VASPs default: $ref: "#/components/responses/Error" - summary: Get customer by ID + summary: Get All VASPs tags: - - TRLink - x-rate-limit-category: read + - Travel Rule + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomerById(tRLinkApiGetTRLinkCustomerByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.getVASPs(travelRuleApiGetVASPsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.tRLink().getTRLinkCustomerById(customerId); + code: "CompletableFuture> response\ + \ = fireblocks.travelRule().getVASPs(order, pageSize, fields, search,\ + \ reviewValue, pageCursor);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.get_t_r_link_customer_by_id(customer_id); + code: "response = fireblocks.travel_rule.get_v_a_s_ps(order, page_size,\ + \ fields, search, review_value, page_cursor);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomerById(tRLinkApiGetTRLinkCustomerByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.getVASPs(travelRuleApiGetVASPsRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.tRLink().getTRLinkCustomerById(customerId); + source: "CompletableFuture> response\ + \ = fireblocks.travelRule().getVASPs(order, pageSize, fields, search, reviewValue,\ + \ pageCursor);" - lang: Python - source: response = fireblocks.t_r_link.get_t_r_link_customer_by_id(customer_id); + source: "response = fireblocks.travel_rule.get_v_a_s_ps(order, page_size,\ + \ fields, search, review_value, page_cursor);" x-accepts: - application/json + /screening/travel_rule/vasp/update: put: - description: Updates an existing customer's information. All fields are optional - - only provided fields will be updated. - operationId: updateTRLinkCustomer + description: |- + Update VASP Details. + + Updates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene. + operationId: updateVasp parameters: - - description: Customer unique identifier - example: 550e8400-e29b-41d4-a716-446655440001 - explode: false - in: path - name: customerId - required: true - schema: - format: uuid - type: string - 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\ @@ -26803,187 +26907,125 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkUpdateCustomerRequest" + $ref: "#/components/schemas/TravelRuleUpdateVASPDetails" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomerResponse" - description: Customer updated successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Update customer + $ref: "#/components/schemas/TravelRuleUpdateVASPDetails" + description: VASP updated successfully + "400": + description: Invalid request body + "500": + description: Internal server error + summary: Add jsonDidKey to VASP details tags: - - TRLink + - Travel Rule x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.updateTRLinkCustomer(tRLinkApiUpdateTRLinkCustomerRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.updateVasp(travelRuleApiUpdateVaspRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().updateTRLinkCustomer(tRLinkUpdateCustomerRequest,\ - \ customerId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.travelRule().updateVasp(travelRuleUpdateVASPDetails, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.update_t_r_link_customer(t_r_link_update_customer_request,\ - \ customer_id, idempotency_key);" + code: "response = fireblocks.travel_rule.update_vasp(travel_rule_update_v_a_s_p_details,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.updateTRLinkCustomer(tRLinkApiUpdateTRLinkCustomerRequest);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.updateVasp(travelRuleApiUpdateVaspRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().updateTRLinkCustomer(tRLinkUpdateCustomerRequest,\ - \ customerId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.travelRule().updateVasp(travelRuleUpdateVASPDetails, idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.update_t_r_link_customer(t_r_link_update_customer_request,\ - \ customer_id, idempotency_key);" + source: "response = fireblocks.travel_rule.update_vasp(travel_rule_update_v_a_s_p_details,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /screening/trlink/customers/{customerId}/integrations: + /screening/travel_rule/vault/{vaultAccountId}/vasp: get: - description: Retrieves all TRSupport integrations for a specific customer. Returns - a list of partner integrations configured for Travel Rule compliance. - operationId: getTRLinkCustomerIntegrations + description: Get assigned VASP Did for a specific vault. Returns empty string + vaspDid value in response if none assigned. + operationId: getVaspForVault parameters: - - description: Customer unique identifier - example: 550e8400-e29b-41d4-a716-446655440001 + - description: The ID of the vault account + example: 1 explode: false in: path - name: customerId + name: vaultAccountId required: true schema: - format: uuid + format: numeric type: string + x-fb-entity: vault_account style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomerIntegrationsListResponse" - description: Customer integrations retrieved successfully + $ref: "#/components/schemas/TravelRuleVaspForVault" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get customer integrations + summary: Get assigned VASP to vault tags: - - TRLink - x-rate-limit-category: query + - Travel Rule + x-rate-limit-category: read x-readme: code-samples: + - language: javascript + code: const vaultAsset = await fireblocks.getVaspForVault(vaultAccountId); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomerIntegrations(tRLinkApiGetTRLinkCustomerIntegrationsRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.getVaspForVault(travelRuleApiGetVaspForVaultRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture>> - response = fireblocks.tRLink().getTRLinkCustomerIntegrations(customerId); + code: CompletableFuture> response = + fireblocks.travelRule().getVaspForVault(vaultAccountId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.get_t_r_link_customer_integrations(customer_id); + code: response = fireblocks.travel_rule.get_vasp_for_vault(vault_account_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomerIntegrations(tRLinkApiGetTRLinkCustomerIntegrationsRequest);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.getVaspForVault(travelRuleApiGetVaspForVaultRequest);" - lang: Java - source: CompletableFuture>> - response = fireblocks.tRLink().getTRLinkCustomerIntegrations(customerId); + source: CompletableFuture> response = + fireblocks.travelRule().getVaspForVault(vaultAccountId); - lang: Python - source: response = fireblocks.t_r_link.get_t_r_link_customer_integrations(customer_id); + source: response = fireblocks.travel_rule.get_vasp_for_vault(vault_account_id); x-accepts: - application/json - /screening/trlink/customers/{customerId}/integrations/{customerIntegrationId}: - get: - description: Retrieves detailed information about a specific customer integration. - operationId: getTRLinkCustomerIntegrationById + post: + description: Sets the VASP Did for a specific vault. Pass empty string to remove + existing one. + operationId: setVaspForVault parameters: - - description: Customer unique identifier - example: 550e8400-e29b-41d4-a716-446655440001 - explode: false - in: path - name: customerId - required: true - schema: - format: uuid - type: string - style: simple - - description: Customer integration unique identifier - example: 123e4567-e89b-12d3-a456-426614174000 + - description: The ID of the vault account explode: false in: path - name: customerIntegrationId + name: vaultAccountId required: true schema: - format: uuid + format: numeric type: string + x-fb-entity: vault_account style: simple - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/TRLinkCustomerIntegrationResponse" - description: Customer integration retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get customer integration by ID - tags: - - TRLink - x-rate-limit-category: read - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomerIntegrationById(tRLinkApiGetTRLinkCustomerIntegrationByIdRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tRLink().getTRLinkCustomerIntegrationById(customerId,\ - \ customerIntegrationId);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.t_r_link.get_t_r_link_customer_integration_by_id(customer_id,\ - \ customer_integration_id);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkCustomerIntegrationById(tRLinkApiGetTRLinkCustomerIntegrationByIdRequest);" - - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tRLink().getTRLinkCustomerIntegrationById(customerId,\ - \ customerIntegrationId);" - - lang: Python - source: "response = fireblocks.t_r_link.get_t_r_link_customer_integration_by_id(customer_id,\ - \ customer_integration_id);" - x-accepts: - - application/json - /screening/trlink/customers/integration: - post: - description: Creates a new TRSupport integration for a customer. This establishes - a connection placeholder between a customer and a Travel Rule partner. Use - the connect endpoint to provide credentials after creation. You may optionally - supply `customerIntegrationId` in the request body when your tenant is enabled - for client-provided integration ids. - operationId: createTRLinkIntegration - 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\ @@ -26999,255 +27041,182 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkCreateIntegrationRequest" + $ref: "#/components/schemas/TravelRuleVaspForVault" required: true responses: "201": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomerIntegrationResponse" - description: Customer integration created successfully + $ref: "#/components/schemas/TravelRuleVaspForVault" + description: OK headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Create customer integration + summary: Assign VASP to vault tags: - - TRLink + - Travel Rule x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: "const vaultAsset = await fireblocks.setVaspForVault(vaultAccountId,\ + \ vaspDid);" + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkIntegration(tRLinkApiCreateTRLinkIntegrationRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.setVaspForVault(travelRuleApiSetVaspForVaultRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tRLink().createTRLinkIntegration(tRLinkCreateIntegrationRequest,\ + code: "CompletableFuture> response =\ + \ fireblocks.travelRule().setVaspForVault(travelRuleVaspForVault, vaultAccountId,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.create_t_r_link_integration(t_r_link_create_integration_request,\ - \ idempotency_key);" + code: "response = fireblocks.travel_rule.set_vasp_for_vault(travel_rule_vasp_for_vault,\ + \ vault_account_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkIntegration(tRLinkApiCreateTRLinkIntegrationRequest);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.setVaspForVault(travelRuleApiSetVaspForVaultRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tRLink().createTRLinkIntegration(tRLinkCreateIntegrationRequest,\ + source: "CompletableFuture> response =\ + \ fireblocks.travelRule().setVaspForVault(travelRuleVaspForVault, vaultAccountId,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.create_t_r_link_integration(t_r_link_create_integration_request,\ - \ idempotency_key);" + source: "response = fireblocks.travel_rule.set_vasp_for_vault(travel_rule_vasp_for_vault,\ + \ vault_account_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}: - delete: - description: "Disconnects the integration for the authenticated workspace (tenant):\ - \ removes stored credentials and deletes this tenant's integration record.\ - \ The operation is scoped to the caller's tenant; it does not remove partner-side\ - \ state for other workspaces that reuse the same logical customer integration.\ - \ The record cannot be recovered after delete." - operationId: disconnectTRLinkIntegration - parameters: - - description: Customer integration unique identifier - example: 123e4567-e89b-12d3-a456-426614174000 - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple + /screening/travel_rule/post_screening_policy: + get: + description: Get the post-screening policy for Travel Rule. + operationId: getPostScreeningPolicy + parameters: [] responses: - "204": - description: Customer integration disconnected successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Disconnect customer integration + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ScreeningPolicyResponse" + description: Post-screening policy retrieved successfully. + summary: Travel Rule - View Post-Screening Policy tags: - - TRLink - x-rate-limit-category: write + - Compliance + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tRLink.disconnectTRLinkIntegration(tRLinkApiDisconnectTRLinkIntegrationRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getPostScreeningPolicy();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tRLink().disconnectTRLinkIntegration(customerIntegrationId); + code: CompletableFuture> response = + fireblocks.compliance().getPostScreeningPolicy(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.disconnect_t_r_link_integration(customer_integration_id); + code: response = fireblocks.compliance.get_post_screening_policy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tRLink.disconnectTRLinkIntegration(tRLinkApiDisconnectTRLinkIntegrationRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getPostScreeningPolicy();" - lang: Java - source: CompletableFuture> response = fireblocks.tRLink().disconnectTRLinkIntegration(customerIntegrationId); + source: CompletableFuture> response = + fireblocks.compliance().getPostScreeningPolicy(); - lang: Python - source: response = fireblocks.t_r_link.disconnect_t_r_link_integration(customer_integration_id); + source: response = fireblocks.compliance.get_post_screening_policy(); x-accepts: - application/json - put: - description: Connects a customer integration by providing API credentials. Stores - encrypted credentials and enables the integration for use. - operationId: connectTRLinkIntegration - parameters: - - description: Customer integration unique identifier - example: 123e4567-e89b-12d3-a456-426614174000 - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - 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/TRLinkConnectIntegrationRequest" - required: true + /screening/travel_rule/screening_policy: + get: + description: Get the screening policy for Travel Rule. + operationId: getScreeningPolicy + parameters: [] responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkCustomerIntegrationResponse" - description: Customer integration connected successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Connect customer integration + $ref: "#/components/schemas/ScreeningProviderRulesConfigurationResponse" + description: Screening policy retrieved successfully. + summary: Travel Rule - View Screening Policy tags: - - TRLink - x-rate-limit-category: write + - Compliance + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.connectTRLinkIntegration(tRLinkApiConnectTRLinkIntegrationRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getScreeningPolicy();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tRLink().connectTRLinkIntegration(tRLinkConnectIntegrationRequest,\ - \ customerIntegrationId, idempotencyKey);" + code: CompletableFuture> + response = fireblocks.compliance().getScreeningPolicy(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.connect_t_r_link_integration(t_r_link_connect_integration_request,\ - \ customer_integration_id, idempotency_key);" + code: response = fireblocks.compliance.get_screening_policy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.connectTRLinkIntegration(tRLinkApiConnectTRLinkIntegrationRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getScreeningPolicy();" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tRLink().connectTRLinkIntegration(tRLinkConnectIntegrationRequest,\ - \ customerIntegrationId, idempotencyKey);" + source: CompletableFuture> + response = fireblocks.compliance().getScreeningPolicy(); - lang: Python - source: "response = fireblocks.t_r_link.connect_t_r_link_integration(t_r_link_connect_integration_request,\ - \ customer_integration_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.get_screening_policy(); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/public_key: + /screening/travel_rule/policy_configuration: get: - description: Retrieves the partner's public key in JWK format for encrypting - PII data in Travel Rule Messages. Use this key to encrypt sensitive originator - and beneficiary information before sending Travel Rule messages. - operationId: getTRLinkIntegrationPublicKey - parameters: - - description: Customer integration unique identifier - example: 123e4567-e89b-12d3-a456-426614174000 - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple + description: Retrieves the configuration for Travel Rule screening policy. + operationId: getScreeningConfiguration + parameters: [] responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkPublicKeyResponse" - description: Public key retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get public key for PII encryption + $ref: "#/components/schemas/ScreeningConfigurationsRequest" + description: Screening policy configuration retrieved successfully. + summary: Get Travel Rule Screening Policy Configuration tags: - - TRLink - x-rate-limit-category: read + - Compliance Screening Configuration + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkIntegrationPublicKey(tRLinkApiGetTRLinkIntegrationPublicKeyRequest);" + code: "const response: Promise>\ + \ = fireblocks.complianceScreeningConfiguration.getScreeningConfiguration();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.tRLink().getTRLinkIntegrationPublicKey(customerIntegrationId); + code: CompletableFuture> response + = fireblocks.complianceScreeningConfiguration().getScreeningConfiguration(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.get_t_r_link_integration_public_key(customer_integration_id); + code: response = fireblocks.compliance_screening_configuration.get_screening_configuration(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkIntegrationPublicKey(tRLinkApiGetTRLinkIntegrationPublicKeyRequest);" + source: "const response: Promise>\ + \ = fireblocks.complianceScreeningConfiguration.getScreeningConfiguration();" - lang: Java - source: CompletableFuture> response = - fireblocks.tRLink().getTRLinkIntegrationPublicKey(customerIntegrationId); + source: CompletableFuture> response + = fireblocks.complianceScreeningConfiguration().getScreeningConfiguration(); - lang: Python - source: response = fireblocks.t_r_link.get_t_r_link_integration_public_key(customer_integration_id); + source: response = fireblocks.compliance_screening_configuration.get_screening_configuration(); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/test_connection: - post: - description: Tests the connection to a customer integration by validating stored - credentials and attempting communication with the Travel Rule partner. Returns - connection status and any error messages. - operationId: testTRLinkIntegrationConnection + put: + description: "Updates bypass screening, inbound delay, or outbound delay configurations\ + \ for Travel Rule." + operationId: updateTravelRuleConfig parameters: - - description: Customer integration unique identifier - example: 123e4567-e89b-12d3-a456-426614174000 - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - 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\ @@ -27264,286 +27233,212 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkTestConnectionResponse" - description: Connection test completed (success or failure details in response - body) - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Test connection + $ref: "#/components/schemas/ScreeningConfigurationsRequest" + description: Configuration updated successfully. + summary: Update Travel Rule Configuration tags: - - TRLink + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.testTRLinkIntegrationConnection(tRLinkApiTestTRLinkIntegrationConnectionRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.updateTravelRuleConfig(complianceApiUpdateTravelRuleConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tRLink().testTRLinkIntegrationConnection(customerIntegrationId,\ - \ idempotencyKey);" + code: CompletableFuture> response + = fireblocks.compliance().updateTravelRuleConfig(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.test_t_r_link_integration_connection(customer_integration_id,\ - \ idempotency_key);" + code: response = fireblocks.compliance.update_travel_rule_config(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.testTRLinkIntegrationConnection(tRLinkApiTestTRLinkIntegrationConnectionRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.updateTravelRuleConfig(complianceApiUpdateTravelRuleConfigRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tRLink().testTRLinkIntegrationConnection(customerIntegrationId,\ - \ idempotencyKey);" + source: CompletableFuture> response + = fireblocks.compliance().updateTravelRuleConfig(idempotencyKey); - lang: Python - source: "response = fireblocks.t_r_link.test_t_r_link_integration_connection(customer_integration_id,\ - \ idempotency_key);" + source: response = fireblocks.compliance.update_travel_rule_config(idempotency_key); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/vasps: - get: - description: Retrieves a paginated list of VASPs (Virtual Asset Service Providers) - available through the partner integration. Supports cursor-based pagination. - operationId: listTRLinkVasps + /screening/travel_rule/providers/trust/proof_of_address: + post: + description: Creates a cryptographic proof of address ownership for TRUST network. + operationId: createTrustProofOfAddress parameters: - - description: Customer integration unique identifier + - 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: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Number of results per page (max 100) - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Cursor for pagination (from previous response) - explode: true - in: query - name: pageCursor + in: header + name: Idempotency-Key required: false schema: type: string - style: form + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TrustProofOfAddressRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/TRLinkAPIPagedResponse" - description: VASPs retrieved successfully + $ref: "#/components/schemas/TrustProofOfAddressCreateResponse" + description: Proof of address transaction created successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: List VASPs + summary: Create Trust Network Proof of Address tags: - - TRLink - x-rate-limit-category: query + - Travel Rule + x-rate-limit-category: async x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.listTRLinkVasps(tRLinkApiListTRLinkVaspsRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.createTrustProofOfAddress(travelRuleApiCreateTrustProofOfAddressRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().listTRLinkVasps(customerIntegrationId, pageSize,\ - \ pageCursor);" + code: "CompletableFuture>\ + \ response = fireblocks.travelRule().createTrustProofOfAddress(trustProofOfAddressRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.list_t_r_link_vasps(customer_integration_id,\ - \ page_size, page_cursor);" + code: "response = fireblocks.travel_rule.create_trust_proof_of_address(trust_proof_of_address_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.listTRLinkVasps(tRLinkApiListTRLinkVaspsRequest);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.createTrustProofOfAddress(travelRuleApiCreateTrustProofOfAddressRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().listTRLinkVasps(customerIntegrationId, pageSize, pageCursor);" + source: "CompletableFuture>\ + \ response = fireblocks.travelRule().createTrustProofOfAddress(trustProofOfAddressRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.list_t_r_link_vasps(customer_integration_id,\ - \ page_size, page_cursor);" + source: "response = fireblocks.travel_rule.create_trust_proof_of_address(trust_proof_of_address_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/vasps/{vaspId}: + /screening/travel_rule/providers/trust/proof_of_address/{transactionId}: get: - description: Retrieves detailed information about a specific VASP by its unique - identifier. Returns VASP details including public key if available. - operationId: getTRLinkVaspById + description: Retrieves the TRUST-compatible encoded signature for a proof of + address transaction. Send this signature directly to TRUST for verification. + operationId: getTrustProofOfAddress parameters: - - description: Customer integration unique identifier + - description: Fireblocks transaction ID (UUID format) + example: 550e8400-e29b-41d4-a716-446655440000 explode: false in: path - name: customerIntegrationId + name: transactionId required: true schema: format: uuid type: string style: simple - - description: VASP unique identifier (DID format) - explode: false - in: path - name: vaspId - required: true - schema: - type: string - style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkVaspDto" - description: VASP retrieved successfully + $ref: "#/components/schemas/TrustProofOfAddressResponse" + description: Encoded signature retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get VASP by ID + summary: Retrieve Trust Network Proof of Address Signature tags: - - TRLink - x-rate-limit-category: read + - Travel Rule + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> = fireblocks.tRLink.getTRLinkVaspById(tRLinkApiGetTRLinkVaspByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.travelRule.getTrustProofOfAddress(travelRuleApiGetTrustProofOfAddressRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tRLink().getTRLinkVaspById(customerIntegrationId,\ - \ vaspId);" + code: CompletableFuture> response + = fireblocks.travelRule().getTrustProofOfAddress(transactionId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.get_t_r_link_vasp_by_id(customer_integration_id,\ - \ vasp_id);" + code: response = fireblocks.travel_rule.get_trust_proof_of_address(transaction_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tRLink.getTRLinkVaspById(tRLinkApiGetTRLinkVaspByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.travelRule.getTrustProofOfAddress(travelRuleApiGetTrustProofOfAddressRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tRLink().getTRLinkVaspById(customerIntegrationId,\ - \ vaspId);" + source: CompletableFuture> response + = fireblocks.travelRule().getTrustProofOfAddress(transactionId); - lang: Python - source: "response = fireblocks.t_r_link.get_t_r_link_vasp_by_id(customer_integration_id,\ - \ vasp_id);" + source: response = fireblocks.travel_rule.get_trust_proof_of_address(transaction_id); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/assets: + /screening/aml/policy_configuration: get: - description: Retrieves a paginated list of assets supported by the partner integration. - Includes a flag indicating whether the partner can handle assets not explicitly - listed. Supports cursor-based pagination. - operationId: listTRLinkSupportedAssets - parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Number of results per page (max 100) - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - maximum: 100 - minimum: 1 - type: integer - style: form - - description: Cursor for pagination (from previous response) - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form + description: Retrieves the configuration for Travel Rule screening policy. + operationId: getAmlScreeningConfiguration + parameters: [] responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkAssetsListPagedResponse" - description: Supported assets retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: List supported assets + $ref: "#/components/schemas/ScreeningConfigurationsRequest" + description: Screening policy configuration retrieved successfully. + summary: Get AML Screening Policy Configuration tags: - - TRLink + - Compliance Screening Configuration x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.listTRLinkSupportedAssets(tRLinkApiListTRLinkSupportedAssetsRequest);" + code: "const response: Promise>\ + \ = fireblocks.complianceScreeningConfiguration.getAmlScreeningConfiguration();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tRLink().listTRLinkSupportedAssets(customerIntegrationId,\ - \ pageSize, pageCursor);" + code: CompletableFuture> response + = fireblocks.complianceScreeningConfiguration().getAmlScreeningConfiguration(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.list_t_r_link_supported_assets(customer_integration_id,\ - \ page_size, page_cursor);" + code: response = fireblocks.compliance_screening_configuration.get_aml_screening_configuration(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.listTRLinkSupportedAssets(tRLinkApiListTRLinkSupportedAssetsRequest);" + source: "const response: Promise>\ + \ = fireblocks.complianceScreeningConfiguration.getAmlScreeningConfiguration();" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tRLink().listTRLinkSupportedAssets(customerIntegrationId,\ - \ pageSize, pageCursor);" + source: CompletableFuture> response + = fireblocks.complianceScreeningConfiguration().getAmlScreeningConfiguration(); - lang: Python - source: "response = fireblocks.t_r_link.list_t_r_link_supported_assets(customer_integration_id,\ - \ page_size, page_cursor);" + source: response = fireblocks.compliance_screening_configuration.get_aml_screening_configuration(); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/assets/{assetId}: - get: - description: "Retrieves detailed information about a specific asset by its Fireblocks\ - \ asset ID. Returns the transformed Fireblocks asset data, raw partner response,\ - \ and support status." - operationId: getTRLinkSupportedAsset + put: + description: "Updates bypass screening, inbound delay, or outbound delay configurations\ + \ for AML." + operationId: updateAmlScreeningConfiguration parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Fireblocks asset ID + - 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: path - name: assetId - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple @@ -27552,285 +27447,190 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkGetSupportedAssetResponse" - description: Asset retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get supported asset by ID + $ref: "#/components/schemas/ScreeningConfigurationsRequest" + description: Configuration updated successfully. + summary: Update AML Configuration tags: - - TRLink - x-rate-limit-category: read + - Compliance + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkSupportedAsset(tRLinkApiGetTRLinkSupportedAssetRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.updateAmlScreeningConfiguration(complianceApiUpdateAmlScreeningConfigurationRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tRLink().getTRLinkSupportedAsset(customerIntegrationId,\ - \ assetId);" + code: CompletableFuture> response + = fireblocks.compliance().updateAmlScreeningConfiguration(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.get_t_r_link_supported_asset(customer_integration_id,\ - \ asset_id);" + code: response = fireblocks.compliance.update_aml_screening_configuration(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkSupportedAsset(tRLinkApiGetTRLinkSupportedAssetRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.updateAmlScreeningConfiguration(complianceApiUpdateAmlScreeningConfigurationRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tRLink().getTRLinkSupportedAsset(customerIntegrationId, assetId);" + source: CompletableFuture> response + = fireblocks.compliance().updateAmlScreeningConfiguration(idempotencyKey); - lang: Python - source: "response = fireblocks.t_r_link.get_t_r_link_supported_asset(customer_integration_id,\ - \ asset_id);" + source: response = fireblocks.compliance.update_aml_screening_configuration(idempotency_key); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm/assess: - post: - description: "Assesses travel rule requirement for a transaction by validating\ - \ stored credentials and determining whether Travel Rule compliance is required\ - \ based on amount, jurisdiction, and partner thresholds." - operationId: assessTRLinkTravelRuleRequirement - parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - 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/TRLinkAssessTravelRuleRequest" - required: true + /screening/aml/screening_policy: + get: + description: Get the screening policy for AML. + operationId: getAmlScreeningPolicy + parameters: [] responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkAssessTravelRuleResponse" - description: Travel rule assessment completed - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Assess Travel Rule requirement + $ref: "#/components/schemas/ScreeningProviderRulesConfigurationResponse" + description: Screening policy retrieved successfully. + summary: AML - View Screening Policy tags: - - TRLink - x-rate-limit-category: write + - Compliance + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.assessTRLinkTravelRuleRequirement(tRLinkApiAssessTRLinkTravelRuleRequirementRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getAmlScreeningPolicy();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tRLink().assessTRLinkTravelRuleRequirement(tRLinkAssessTravelRuleRequest,\ - \ customerIntegrationId, idempotencyKey);" + code: CompletableFuture> + response = fireblocks.compliance().getAmlScreeningPolicy(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.assess_t_r_link_travel_rule_requirement(t_r_link_assess_travel_rule_request,\ - \ customer_integration_id, idempotency_key);" + code: response = fireblocks.compliance.get_aml_screening_policy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.assessTRLinkTravelRuleRequirement(tRLinkApiAssessTRLinkTravelRuleRequirementRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getAmlScreeningPolicy();" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tRLink().assessTRLinkTravelRuleRequirement(tRLinkAssessTravelRuleRequest,\ - \ customerIntegrationId, idempotencyKey);" + source: CompletableFuture> + response = fireblocks.compliance().getAmlScreeningPolicy(); - lang: Python - source: "response = fireblocks.t_r_link.assess_t_r_link_travel_rule_requirement(t_r_link_assess_travel_rule_request,\ - \ customer_integration_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.get_aml_screening_policy(); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm: - post: - description: Creates a new travel rule message with IVMS101-compliant PII data. - Encrypts sensitive originator and beneficiary information before sending to - partner. - operationId: createTRLinkTrm - parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - 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/TRLinkCreateTrmRequest" - required: true + /screening/aml/post_screening_policy: + get: + description: Get the post-screening policy for AML. + operationId: getAmlPostScreeningPolicy + parameters: [] responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkTrmInfoResponse" - description: TRM created successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Create Travel Rule Message + $ref: "#/components/schemas/ScreeningPolicyResponse" + description: Post-screening policy retrieved successfully. + summary: AML - View Post-Screening Policy tags: - - TRLink - x-rate-limit-category: write + - Compliance + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkTrm(tRLinkApiCreateTRLinkTrmRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getAmlPostScreeningPolicy();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().createTRLinkTrm(tRLinkCreateTrmRequest, customerIntegrationId,\ - \ idempotencyKey);" + code: CompletableFuture> response = + fireblocks.compliance().getAmlPostScreeningPolicy(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.create_t_r_link_trm(t_r_link_create_trm_request,\ - \ customer_integration_id, idempotency_key);" + code: response = fireblocks.compliance.get_aml_post_screening_policy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkTrm(tRLinkApiCreateTRLinkTrmRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getAmlPostScreeningPolicy();" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().createTRLinkTrm(tRLinkCreateTrmRequest, customerIntegrationId,\ - \ idempotencyKey);" + source: CompletableFuture> response = + fireblocks.compliance().getAmlPostScreeningPolicy(); - lang: Python - source: "response = fireblocks.t_r_link.create_t_r_link_trm(t_r_link_create_trm_request,\ - \ customer_integration_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.get_aml_post_screening_policy(); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}: - get: - description: "Retrieves a Travel Rule Message by its unique identifier from\ - \ the partner provider. Returns full TRM details including status, IVMS101\ - \ data, and transaction information." - operationId: getTRLinkTrmById + /screening/configurations: + put: + description: Update tenant screening configuration. + operationId: updateScreeningConfiguration parameters: - - description: Customer integration unique identifier + - 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: path - name: customerIntegrationId - required: true + in: header + name: Idempotency-Key + required: false schema: - format: uuid type: string style: simple - - description: Travel Rule Message unique identifier - explode: false - in: path - name: trmId + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ScreeningUpdateConfigurations" required: true - schema: - type: string - style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkTrmInfoResponse" - description: TRM retrieved successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get TRM by ID + $ref: "#/components/schemas/ScreeningUpdateConfigurations" + description: Tenant Screening configuration updated successfully. + summary: Tenant - Screening Configuration tags: - - TRLink - x-rate-limit-category: read + - Compliance + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkTrmById(tRLinkApiGetTRLinkTrmByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.updateScreeningConfiguration(complianceApiUpdateScreeningConfigurationRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().getTRLinkTrmById(customerIntegrationId, trmId);" + code: "CompletableFuture> response\ + \ = fireblocks.compliance().updateScreeningConfiguration(screeningUpdateConfigurations,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.get_t_r_link_trm_by_id(customer_integration_id,\ - \ trm_id);" + code: "response = fireblocks.compliance.update_screening_configuration(screening_update_configurations,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkTrmById(tRLinkApiGetTRLinkTrmByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.updateScreeningConfiguration(complianceApiUpdateScreeningConfigurationRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().getTRLinkTrmById(customerIntegrationId, trmId);" + source: "CompletableFuture> response\ + \ = fireblocks.compliance().updateScreeningConfiguration(screeningUpdateConfigurations,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.get_t_r_link_trm_by_id(customer_integration_id,\ - \ trm_id);" + source: "response = fireblocks.compliance.update_screening_configuration(screening_update_configurations,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/cancel: + /screening/transaction/{txId}/bypass_screening_policy: post: - description: Cancels a travel rule message. The TRM status will be updated to - cancelled and the partner will be notified. - operationId: cancelTRLinkTrm + description: "Triggers a new transaction, with the API user as the initiator,\ + \ bypassing the screening policy checks. This endpoint is restricted to Admin\ + \ API users and is only applicable to outgoing transactions." + operationId: retryRejectedTransactionBypassScreeningChecks parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Travel Rule Message unique identifier + - description: The transaction id that was rejected by screening checks + example: 550e8400-e29b-41d4-a716-446655440000 explode: false in: path - name: trmId + name: txId required: true schema: type: string @@ -27846,168 +27646,113 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TRLinkCancelTrmRequest" - required: true responses: - "202": + "201": content: application/json: schema: - $ref: "#/components/schemas/TRLinkTrmInfoResponse" - description: Transaction cancellation request accepted + $ref: "#/components/schemas/CreateTransactionResponse" + description: A transaction object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Cancel Travel Rule Message + summary: Bypass Screening Policy tags: - - TRLink + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.cancelTRLinkTrm(tRLinkApiCancelTRLinkTrmRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.retryRejectedTransactionBypassScreeningChecks(complianceApiRetryRejectedTransactionBypassScreeningChecksRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().cancelTRLinkTrm(tRLinkCancelTrmRequest, customerIntegrationId,\ - \ trmId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.compliance().retryRejectedTransactionBypassScreeningChecks(txId,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.cancel_t_r_link_trm(t_r_link_cancel_trm_request,\ - \ customer_integration_id, trm_id, idempotency_key);" + code: "response = fireblocks.compliance.retry_rejected_transaction_bypass_screening_checks(tx_id,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.cancelTRLinkTrm(tRLinkApiCancelTRLinkTrmRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.retryRejectedTransactionBypassScreeningChecks(complianceApiRetryRejectedTransactionBypassScreeningChecksRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().cancelTRLinkTrm(tRLinkCancelTrmRequest, customerIntegrationId,\ - \ trmId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.compliance().retryRejectedTransactionBypassScreeningChecks(txId,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.cancel_t_r_link_trm(t_r_link_cancel_trm_request,\ - \ customer_integration_id, trm_id, idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.compliance.retry_rejected_transaction_bypass_screening_checks(tx_id,\ + \ idempotency_key);" x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/redirect: - post: - description: Redirects a Travel Rule Message to a subsidiary VASP. This operation - requires the partner to support nested VASPs functionality. - operationId: redirectTRLinkTrm + /screening/transaction/{txId}: + get: + description: Provides all the compliance details for the given screened transaction. + operationId: getScreeningFullDetails parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Travel Rule Message unique identifier + - description: Fireblocks transaction ID of the screened transaction + example: 550e8400-e29b-41d4-a716-446655440000 explode: false in: path - name: trmId + name: txId required: true schema: type: string 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/TRLinkRedirectTrmRequest" - required: true responses: - "202": + "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkTrmInfoResponse" - description: Transaction redirect request accepted + $ref: "#/components/schemas/ComplianceResultFullPayload" + description: A compliance object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Redirect Travel Rule Message + summary: Provides all the compliance details for the given screened transaction. tags: - - TRLink - x-rate-limit-category: write + - Compliance + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.redirectTRLinkTrm(tRLinkApiRedirectTRLinkTrmRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getScreeningFullDetails(complianceApiGetScreeningFullDetailsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().redirectTRLinkTrm(tRLinkRedirectTrmRequest, customerIntegrationId,\ - \ trmId, idempotencyKey);" + code: CompletableFuture> response + = fireblocks.compliance().getScreeningFullDetails(txId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.redirect_t_r_link_trm(t_r_link_redirect_trm_request,\ - \ customer_integration_id, trm_id, idempotency_key);" + code: response = fireblocks.compliance.get_screening_full_details(tx_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.redirectTRLinkTrm(tRLinkApiRedirectTRLinkTrmRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getScreeningFullDetails(complianceApiGetScreeningFullDetailsRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().redirectTRLinkTrm(tRLinkRedirectTrmRequest, customerIntegrationId,\ - \ trmId, idempotencyKey);" + source: CompletableFuture> response + = fireblocks.compliance().getScreeningFullDetails(txId); - lang: Python - source: "response = fireblocks.t_r_link.redirect_t_r_link_trm(t_r_link_redirect_trm_request,\ - \ customer_integration_id, trm_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.get_screening_full_details(tx_id); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/transactions/{txId}/manual_decision: + /screening/aml/verdict/manual: post: - description: Accept or reject destinations stuck in NoTRM step without waiting - for TRP webhook or policy timeout. - operationId: createTRLinkManualDecision + description: "Set AML verdict for incoming transactions when **BYORK Super Light**\ + \ (Manual Screening Verdict) is enabled. This endpoint is for Super Light\ + \ only. For **BYORK Light**, use POST /screening/byork/verdict instead. When\ + \ Super Light is retired, this endpoint will be deprecated; use the BYORK\ + \ Light verdict API for new integrations." + operationId: setAmlVerdict parameters: - - description: Customer integration unique identifier - example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Fireblocks transaction unique identifier - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e - explode: false - in: path - name: txId - required: true - schema: - format: uuid - type: string - 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\ @@ -28023,137 +27768,167 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkManualDecisionRequest" + $ref: "#/components/schemas/AmlVerdictManualRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkManualDecisionResponse" - description: Decision applied successfully + $ref: "#/components/schemas/AmlVerdictManualResponse" + description: AML verdict set successfully. + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Feature not enabled for tenant. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "425": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Too Early - transaction not yet in pending screening. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal server error. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Manual decision for missing TRM + summary: Set AML Verdict (BYORK Super Light) tags: - - TRLink + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkManualDecision(tRLinkApiCreateTRLinkManualDecisionRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.setAmlVerdict(complianceApiSetAmlVerdictRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.tRLink().createTRLinkManualDecision(tRLinkManualDecisionRequest,\ - \ customerIntegrationId, txId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.compliance().setAmlVerdict(amlVerdictManualRequest, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.create_t_r_link_manual_decision(t_r_link_manual_decision_request,\ - \ customer_integration_id, tx_id, idempotency_key);" + code: "response = fireblocks.compliance.set_aml_verdict(aml_verdict_manual_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.createTRLinkManualDecision(tRLinkApiCreateTRLinkManualDecisionRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.setAmlVerdict(complianceApiSetAmlVerdictRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.tRLink().createTRLinkManualDecision(tRLinkManualDecisionRequest,\ - \ customerIntegrationId, txId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.compliance().setAmlVerdict(amlVerdictManualRequest, idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.create_t_r_link_manual_decision(t_r_link_manual_decision_request,\ - \ customer_integration_id, tx_id, idempotency_key);" + source: "response = fireblocks.compliance.set_aml_verdict(aml_verdict_manual_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/required_actions: + /screening/byork/verdict: get: - description: "Retrieves the list of required actions (e.g., PII fields) needed\ - \ to process the Travel Rule Message." - operationId: getTRLinkTrmRequiredActions + description: "Returns the current BYORK verdict and status for a transaction.\ + \ Status can be PRE_ACCEPTED, PENDING, RECEIVED (verdict is final but processing\ + \ not yet complete), or COMPLETED. Requires BYORK Light to be enabled for\ + \ the tenant. Returns 404 if no BYORK verdict is found for the transaction." + operationId: getByorkVerdict parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Travel Rule Message unique identifier - explode: false - in: path - name: trmId + - description: Transaction ID + explode: true + in: query + name: txId required: true schema: + example: 550e8400-e29b-41d4-a716-446655440000 type: string - style: simple + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkGetRequiredActionsResponse" - description: Required actions retrieved successfully + $ref: "#/components/schemas/GetByorkVerdictResponse" + description: Current verdict and status. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: BYORK Light not enabled for tenant or txId missing. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: No BYORK verdict found for this transaction. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal server error. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get required actions for a TRM + summary: Get BYORK Light verdict tags: - - TRLink - x-rate-limit-category: query + - Compliance + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkTrmRequiredActions(tRLinkApiGetTRLinkTrmRequiredActionsRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.getByorkVerdict(complianceApiGetByorkVerdictRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tRLink().getTRLinkTrmRequiredActions(customerIntegrationId,\ - \ trmId);" + code: CompletableFuture> response = + fireblocks.compliance().getByorkVerdict(txId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.get_t_r_link_trm_required_actions(customer_integration_id,\ - \ trm_id);" + code: response = fireblocks.compliance.get_byork_verdict(tx_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkTrmRequiredActions(tRLinkApiGetTRLinkTrmRequiredActionsRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.getByorkVerdict(complianceApiGetByorkVerdictRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tRLink().getTRLinkTrmRequiredActions(customerIntegrationId,\ - \ trmId);" + source: CompletableFuture> response = + fireblocks.compliance().getByorkVerdict(txId); - lang: Python - source: "response = fireblocks.t_r_link.get_t_r_link_trm_required_actions(customer_integration_id,\ - \ trm_id);" + source: response = fireblocks.compliance.get_byork_verdict(tx_id); x-accepts: - application/json - /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/resolve_action: post: - description: "Submits required data (e.g., beneficiary PII) to resolve a pending\ - \ Travel Rule Message action." - operationId: resolveActionTRLinkTrm + description: "Submit verdict (ACCEPT or REJECT) for a transaction in the BYORK\ + \ Light flow. If the transaction is awaiting your decision, the verdict is\ + \ applied immediately (response status COMPLETED). If processing has not yet\ + \ reached that point, the verdict is stored and applied when it does (response\ + \ status PRE_ACCEPTED). Requires BYORK Light to be enabled for the tenant." + operationId: setByorkVerdict parameters: - - description: Customer integration unique identifier - explode: false - in: path - name: customerIntegrationId - required: true - schema: - format: uuid - type: string - style: simple - - description: Travel Rule Message unique identifier - explode: false - in: path - name: trmId - required: true - schema: - type: string - 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\ @@ -28169,111 +27944,148 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/TRLinkResolveActionRequest" + $ref: "#/components/schemas/ByorkVerdictRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkTrmInfoResponse" - description: Action resolved successfully + $ref: "#/components/schemas/ByorkVerdictResponse" + description: Verdict applied (COMPLETED) or pre-accepted (PRE_ACCEPTED). + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: BYORK Light not enabled for tenant or invalid verdict. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "BYORK decision already final, screening already completed,\ + \ or state inconsistent." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "425": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Too Early - transaction not found (screening not started yet). + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal server error. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Resolve action for a TRM + summary: Set BYORK Light verdict tags: - - TRLink + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.resolveActionTRLinkTrm(tRLinkApiResolveActionTRLinkTrmRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.setByorkVerdict(complianceApiSetByorkVerdictRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response =\ - \ fireblocks.tRLink().resolveActionTRLinkTrm(tRLinkResolveActionRequest,\ - \ customerIntegrationId, trmId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.compliance().setByorkVerdict(byorkVerdictRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.resolve_action_t_r_link_trm(t_r_link_resolve_action_request,\ - \ customer_integration_id, trm_id, idempotency_key);" + code: "response = fireblocks.compliance.set_byork_verdict(byork_verdict_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.resolveActionTRLinkTrm(tRLinkApiResolveActionTRLinkTrmRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.setByorkVerdict(complianceApiSetByorkVerdictRequest);" - lang: Java - source: "CompletableFuture> response =\ - \ fireblocks.tRLink().resolveActionTRLinkTrm(tRLinkResolveActionRequest,\ - \ customerIntegrationId, trmId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.compliance().setByorkVerdict(byorkVerdictRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.t_r_link.resolve_action_t_r_link_trm(t_r_link_resolve_action_request,\ - \ customer_integration_id, trm_id, idempotency_key);" + source: "response = fireblocks.compliance.set_byork_verdict(byork_verdict_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /screening/trlink/policy: + /screening/byork/config: get: - description: "Retrieves the complete TRSupport policy for the authenticated\ - \ tenant, including pre-screening rules, post-screening rules, and missing\ - \ TRM rules. Pre-screening rules determine whether transactions should be\ - \ screened. Post-screening rules determine actions based on screening results.\ - \ Missing TRM rules handle cases when screening data is unavailable." - operationId: getTRLinkPolicy + description: "Retrieves BYORK Light configuration for the authenticated tenant\ + \ (timeouts, active flag, allowed timeout ranges). Returns default config\ + \ when none exists. Requires BYORK Light to be enabled for the tenant." + operationId: getByorkConfig responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkPolicyResponse" - description: Policy retrieved successfully + $ref: "#/components/schemas/ByorkConfigResponse" + description: BYORK configuration (or default). + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: BYORK Light not enabled for tenant. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get TRLink policy + summary: Get BYORK Light configuration tags: - - TRLink + - Compliance x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkPolicy();" + code: "const response: Promise>\ + \ = fireblocks.compliance.getByorkConfig();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tRLink().getTRLinkPolicy(); + code: CompletableFuture> response = fireblocks.compliance().getByorkConfig(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.t_r_link.get_t_r_link_policy(); + code: response = fireblocks.compliance.get_byork_config(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.getTRLinkPolicy();" + source: "const response: Promise>\ + \ = fireblocks.compliance.getByorkConfig();" - lang: Java - source: CompletableFuture> response = fireblocks.tRLink().getTRLinkPolicy(); + source: CompletableFuture> response = fireblocks.compliance().getByorkConfig(); - lang: Python - source: response = fireblocks.t_r_link.get_t_r_link_policy(); + source: response = fireblocks.compliance.get_byork_config(); x-accepts: - application/json - /screening/trlink/transaction/{txId}/travel_rule_message_id: + /screening/byork/config/activate: post: - description: Associates a Travel Rule Message ID with a Fireblocks transaction. - This links the TRM compliance data to the blockchain transaction. - operationId: setTRLinkTransactionTravelRuleMessageId + description: "Activates BYORK Light for the authenticated tenant (sets config.active\ + \ to true). Once activated, BYORK screening applies to matching transactions.\ + \ Requires BYORK Light to be enabled for the tenant (contact your CSM to enable)." + operationId: activateByorkConfig parameters: - - description: Fireblocks transaction unique identifier - explode: false - in: path - name: txId - required: true - schema: - format: uuid - type: string - 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\ @@ -28285,73 +28097,61 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TRLinkSetTransactionTravelRuleMessageIdRequest" - required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkSetTransactionTravelRuleMessageIdResponse" - description: Travel rule message ID set successfully + $ref: "#/components/schemas/ByorkConfigResponse" + description: BYORK configuration activated. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: BYORK Light not enabled for tenant. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Set transaction travel rule message ID + summary: Activate BYORK Light tags: - - TRLink + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.setTRLinkTransactionTravelRuleMessageId(tRLinkApiSetTRLinkTransactionTravelRuleMessageIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.activateByorkConfig(complianceApiActivateByorkConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tRLink().setTRLinkTransactionTravelRuleMessageId(tRLinkSetTransactionTravelRuleMessageIdRequest,\ - \ txId, idempotencyKey);" + code: CompletableFuture> response = fireblocks.compliance().activateByorkConfig(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.set_t_r_link_transaction_travel_rule_message_id(t_r_link_set_transaction_travel_rule_message_id_request,\ - \ tx_id, idempotency_key);" + code: response = fireblocks.compliance.activate_byork_config(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.setTRLinkTransactionTravelRuleMessageId(tRLinkApiSetTRLinkTransactionTravelRuleMessageIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.activateByorkConfig(complianceApiActivateByorkConfigRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tRLink().setTRLinkTransactionTravelRuleMessageId(tRLinkSetTransactionTravelRuleMessageIdRequest,\ - \ txId, idempotencyKey);" + source: CompletableFuture> response = fireblocks.compliance().activateByorkConfig(idempotencyKey); - lang: Python - source: "response = fireblocks.t_r_link.set_t_r_link_transaction_travel_rule_message_id(t_r_link_set_transaction_travel_rule_message_id_request,\ - \ tx_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.activate_byork_config(idempotency_key); x-accepts: - application/json - /screening/trlink/transaction/{txId}/destination/travel_rule_message_id: + /screening/byork/config/deactivate: post: - description: Associates a Travel Rule Message ID with a specific destination - in a multi-destination Fireblocks transaction. Matches destinations by amount - and peer path. - operationId: setTRLinkDestinationTravelRuleMessageId + description: "Deactivates BYORK Light for the authenticated tenant (sets config.active\ + \ to false). Once deactivated, BYORK screening no longer applies until activated\ + \ again. Requires BYORK Light to be enabled for the tenant (contact your CSM\ + \ to enable)." + operationId: deactivateByorkConfig parameters: - - description: Fireblocks transaction unique identifier - explode: false - in: path - name: txId - required: true - schema: - format: uuid - type: string - 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\ @@ -28363,101 +28163,138 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/TRLinkSetDestinationTravelRuleMessageIdRequest" - required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TRLinkSetDestinationTravelRuleMessageIdResponse" - description: Destination travel rule message ID set successfully + $ref: "#/components/schemas/ByorkConfigResponse" + description: BYORK configuration deactivated. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: BYORK Light not enabled for tenant. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Set destination travel rule message ID + summary: Deactivate BYORK Light tags: - - TRLink + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.tRLink.setTRLinkDestinationTravelRuleMessageId(tRLinkApiSetTRLinkDestinationTravelRuleMessageIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.compliance.deactivateByorkConfig(complianceApiDeactivateByorkConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.tRLink().setTRLinkDestinationTravelRuleMessageId(tRLinkSetDestinationTravelRuleMessageIdRequest,\ - \ txId, idempotencyKey);" + code: CompletableFuture> response = fireblocks.compliance().deactivateByorkConfig(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.t_r_link.set_t_r_link_destination_travel_rule_message_id(t_r_link_set_destination_travel_rule_message_id_request,\ - \ tx_id, idempotency_key);" + code: response = fireblocks.compliance.deactivate_byork_config(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.tRLink.setTRLinkDestinationTravelRuleMessageId(tRLinkApiSetTRLinkDestinationTravelRuleMessageIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.compliance.deactivateByorkConfig(complianceApiDeactivateByorkConfigRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.tRLink().setTRLinkDestinationTravelRuleMessageId(tRLinkSetDestinationTravelRuleMessageIdRequest,\ - \ txId, idempotencyKey);" + source: CompletableFuture> response = fireblocks.compliance().deactivateByorkConfig(idempotencyKey); - lang: Python - source: "response = fireblocks.t_r_link.set_t_r_link_destination_travel_rule_message_id(t_r_link_set_destination_travel_rule_message_id_request,\ - \ tx_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.deactivate_byork_config(idempotency_key); x-accepts: - application/json - /management/ota: - get: - description: Returns current OTA status - operationId: getOtaStatus + /screening/byork/config/timeouts: + put: + description: "Updates timeout values for BYORK wait-for-response (incoming and/or\ + \ outgoing). At least one of incomingTimeoutSeconds or outgoingTimeoutSeconds\ + \ is required. Values must be within the ranges returned in GET config (timeoutRangeIncoming\ + \ for incomingTimeoutSeconds, timeoutRangeOutgoing for outgoingTimeoutSeconds).\ + \ Requires BYORK Light to be enabled for the tenant (contact your CSM to enable)." + operationId: setByorkTimeouts + 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/ByorkSetTimeoutsRequest" + required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/GetOtaStatusResponse" - description: Current OTA status - "404": - description: Configuration not found for tenant - summary: Returns current OTA status + $ref: "#/components/schemas/ByorkConfigResponse" + description: Timeouts updated. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: "BYORK Light not enabled, or timeout value out of range, or\ + \ missing both timeouts." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Set BYORK Light timeouts tags: - - OTA (Beta) + - Compliance x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.oTABeta.getOtaStatus();" + code: "const response: Promise>\ + \ = fireblocks.compliance.setByorkTimeouts(complianceApiSetByorkTimeoutsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.oTABeta().getOtaStatus(); + code: "CompletableFuture> response = fireblocks.compliance().setByorkTimeouts(byorkSetTimeoutsRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.o_t_a_beta.get_ota_status(); + code: "response = fireblocks.compliance.set_byork_timeouts(byork_set_timeouts_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.oTABeta.getOtaStatus();" + source: "const response: Promise>\ + \ = fireblocks.compliance.setByorkTimeouts(complianceApiSetByorkTimeoutsRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.oTABeta().getOtaStatus(); + source: "CompletableFuture> response = fireblocks.compliance().setByorkTimeouts(byorkSetTimeoutsRequest,\ + \ idempotencyKey);" - lang: Python - source: response = fireblocks.o_t_a_beta.get_ota_status(); + source: "response = fireblocks.compliance.set_byork_timeouts(byork_set_timeouts_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - put: - description: |- - Enable or disable transactions to One Time Addresses (Non Whitelisted addresses). - Learn more about [One Time Addresses](https://support.fireblocks.io/hc/en-us/articles/4409104568338-One-Time-Address-OTA-feature) - operationId: setOtaStatus + /screening/ars/config/activate: + post: + description: "Activates ARS (Address Registry Screening) for the authenticated\ + \ tenant (sets config.active to true). Once activated, ARS screening applies\ + \ to matching transactions." + operationId: activateArsConfig 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\ @@ -28470,227 +28307,214 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SetOtaStatusRequest" - required: true responses: - "202": + "200": content: application/json: schema: - $ref: "#/components/schemas/SetOtaStatusResponse" - description: Successfully updated OTA status + $ref: "#/components/schemas/ArsConfigResponse" + description: ARS configuration activated. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" "400": - description: Bad request - "409": - description: Similar request already pending - "500": - description: Internal server error - summary: Enable or disable transactions to OTA + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Tenant not opted-in for address registry. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Activate ARS (Address Registry Screening) tags: - - OTA (Beta) - x-rate-limit-category: query + - Compliance + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.oTABeta.setOtaStatus(oTABetaApiSetOtaStatusRequest);" + code: "const response: Promise> =\ + \ fireblocks.compliance.activateArsConfig(complianceApiActivateArsConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.oTABeta().setOtaStatus(setOtaStatusRequest,\ - \ idempotencyKey);" + code: CompletableFuture> response = fireblocks.compliance().activateArsConfig(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.o_t_a_beta.set_ota_status(set_ota_status_request,\ - \ idempotency_key);" + code: response = fireblocks.compliance.activate_ars_config(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.oTABeta.setOtaStatus(oTABetaApiSetOtaStatusRequest);" + source: "const response: Promise> =\ + \ fireblocks.compliance.activateArsConfig(complianceApiActivateArsConfigRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.oTABeta().setOtaStatus(setOtaStatusRequest,\ - \ idempotencyKey);" + source: CompletableFuture> response = fireblocks.compliance().activateArsConfig(idempotencyKey); - lang: Python - source: "response = fireblocks.o_t_a_beta.set_ota_status(set_ota_status_request,\ - \ idempotency_key);" - x-content-type: application/json + source: response = fireblocks.compliance.activate_ars_config(idempotency_key); x-accepts: - application/json - /management/workspace_status: - get: - description: |- - Returns current workspace status (Beta). - **Note**: - - This endpoint is now in Beta, disabled for general availability at this time. - - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. - - Endpoint Permission: Admin, Non-Signing Admin. - operationId: getWorkspaceStatus + /screening/ars/config/deactivate: + post: + description: "Deactivates ARS (Address Registry Screening) for the authenticated\ + \ tenant (sets config.active to false). Once deactivated, ARS screening no\ + \ longer applies until activated again." + operationId: deactivateArsConfig + 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 responses: "200": content: application/json: schema: - $ref: "#/components/schemas/GetWorkspaceStatusResponse" - description: Current workspace status - "404": - description: Workspace not found - summary: Returns current workspace status + $ref: "#/components/schemas/ArsConfigResponse" + description: ARS configuration deactivated. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Tenant not opted-in for address registry. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Deactivate ARS (Address Registry Screening) tags: - - Workspace Status (Beta) - x-rate-limit-category: query + - Compliance + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.workspaceStatusBeta.getWorkspaceStatus();" + code: "const response: Promise> =\ + \ fireblocks.compliance.deactivateArsConfig(complianceApiDeactivateArsConfigRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.workspaceStatusBeta().getWorkspaceStatus(); + code: CompletableFuture> response = fireblocks.compliance().deactivateArsConfig(idempotencyKey); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.workspace_status_beta.get_workspace_status(); + code: response = fireblocks.compliance.deactivate_ars_config(idempotency_key); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.workspaceStatusBeta.getWorkspaceStatus();" + source: "const response: Promise> =\ + \ fireblocks.compliance.deactivateArsConfig(complianceApiDeactivateArsConfigRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.workspaceStatusBeta().getWorkspaceStatus(); + source: CompletableFuture> response = fireblocks.compliance().deactivateArsConfig(idempotencyKey); - lang: Python - source: response = fireblocks.workspace_status_beta.get_workspace_status(); + source: response = fireblocks.compliance.deactivate_ars_config(idempotency_key); x-accepts: - application/json - /tap/active_policy: + /screening/trlink/partners: get: - description: "Legacy Endpoint – Returns the active policy and its validation.\ - \ \n**Note:** \n- This endpoint will remain available for the foreseeable\ - \ future and is not deprecated. - The `getActivePolicy` endpoint under policy/paths\ - \ provides policy type-specific operations and improved functionality. - These\ - \ endpoints are currently in beta and might be subject to changes.\nIf you\ - \ want to participate and learn more about the Fireblocks TAP, please contact\ - \ your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - operationId: getActivePolicyLegacy + description: "Retrieves a list of all available Travel Rule Support integration\ + \ partners. Partners provide Travel Rule compliance services such as VASP\ + \ discovery, TRM exchange, and PII encryption." + operationId: getTRLinkPartners responses: "200": content: application/json: schema: - $ref: "#/components/schemas/LegacyPolicyAndValidationResponse" - description: A policy object + $ref: "#/components/schemas/TRLinkPartnersListResponse" + description: List of partners retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get the active policy and its validation + summary: List available TRSupport partners tags: - - Policy Editor (Beta) + - TRLink x-rate-limit-category: query x-readme: code-samples: - - language: python - code: policy = fireblocks.get_active_policy() - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: const policy = await fireblocks.getActivePolicy(); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.getActivePolicyLegacy();" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkPartners();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> - response = fireblocks.policyEditorBeta().getActivePolicyLegacy(); + code: CompletableFuture>> response + = fireblocks.tRLink().getTRLinkPartners(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.policy_editor_beta.get_active_policy_legacy(); + code: response = fireblocks.t_r_link.get_t_r_link_partners(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.getActivePolicyLegacy();" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkPartners();" - lang: Java - source: CompletableFuture> - response = fireblocks.policyEditorBeta().getActivePolicyLegacy(); + source: CompletableFuture>> response + = fireblocks.tRLink().getTRLinkPartners(); - lang: Python - source: response = fireblocks.policy_editor_beta.get_active_policy_legacy(); + source: response = fireblocks.t_r_link.get_t_r_link_partners(); x-accepts: - application/json - /tap/draft: + /screening/trlink/customers: get: - description: "Legacy Endpoint – Returns the active draft and its validation.\ - \ \n**Note:** \n- This endpoint will remain available for the foreseeable\ - \ future and is not deprecated. - The `getDraft` endpoint under policy/paths\ - \ provides policy type-specific operations and improved functionality. - These\ - \ endpoints are currently in beta and might be subject to changes.\nIf you\ - \ want to participate and learn more about the Fireblocks TAP, please contact\ - \ your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - operationId: getDraftLegacy + description: Retrieves all customers associated with the authenticated tenant. + Returns a list of legal entities configured for Travel Rule compliance. + operationId: getTRLinkCustomers responses: "200": content: application/json: schema: - $ref: "#/components/schemas/LegacyDraftReviewAndValidationResponse" - description: A draft validation response object + $ref: "#/components/schemas/TRLinkCustomersListResponse" + description: Customers retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get the active draft + summary: Get all customers tags: - - Policy Editor (Beta) - x-rate-limit-category: read + - TRLink + x-rate-limit-category: query x-readme: code-samples: - - language: python - code: policy = fireblocks.get_draft() - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: const policy = await fireblocks.getDraft(); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.getDraftLegacy();" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomers();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> - response = fireblocks.policyEditorBeta().getDraftLegacy(); + code: CompletableFuture>> response + = fireblocks.tRLink().getTRLinkCustomers(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.policy_editor_beta.get_draft_legacy(); + code: response = fireblocks.t_r_link.get_t_r_link_customers(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.getDraftLegacy();" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomers();" - lang: Java - source: CompletableFuture> - response = fireblocks.policyEditorBeta().getDraftLegacy(); + source: CompletableFuture>> response + = fireblocks.tRLink().getTRLinkCustomers(); - lang: Python - source: response = fireblocks.policy_editor_beta.get_draft_legacy(); + source: response = fireblocks.t_r_link.get_t_r_link_customers(); x-accepts: - application/json post: - description: "Legacy Endpoint – Send publish request of certain draft id and\ - \ returns the response. \n**Note:** \n- This endpoint will remain available\ - \ for the foreseeable future and is not deprecated. - The `publishDraft` endpoint\ - \ under policy/paths provides improved functionality and better performance.\ - \ - These endpoints are currently in beta and might be subject to changes.\n\ - If you want to participate and learn more about the Fireblocks TAP, please\ - \ contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - operationId: publishDraftLegacy + description: Creates a new customer (legal entity/VASP) for TRSupport Travel + Rule compliance operations. The customer represents your organization in the + Travel Rule network and contains IVMS101-compliant identity information. + operationId: createTRLinkCustomer 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\ @@ -28707,144 +28531,171 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/LegacyPublishDraftRequest" + $ref: "#/components/schemas/TRLinkCreateCustomerRequest" required: true responses: "201": content: application/json: schema: - $ref: "#/components/schemas/LegacyPublishResult" - description: A policy publish result object + $ref: "#/components/schemas/TRLinkCustomerResponse" + description: Customer created successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Send publish request for a certain draft id + summary: Create customer tags: - - Policy Editor (Beta) + - TRLink x-rate-limit-category: write x-readme: code-samples: - - language: python - code: policy = fireblocks.publish_draft() - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: const policy = await fireblocks.publishDraft(); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.publishDraftLegacy(policyEditorBetaApiPublishDraftLegacyRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkCustomer(tRLinkApiCreateTRLinkCustomerRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.policyEditorBeta().publishDraftLegacy(legacyPublishDraftRequest,\ + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().createTRLinkCustomer(tRLinkCreateCustomerRequest,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.policy_editor_beta.publish_draft_legacy(legacy_publish_draft_request,\ + code: "response = fireblocks.t_r_link.create_t_r_link_customer(t_r_link_create_customer_request,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.publishDraftLegacy(policyEditorBetaApiPublishDraftLegacyRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkCustomer(tRLinkApiCreateTRLinkCustomerRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.policyEditorBeta().publishDraftLegacy(legacyPublishDraftRequest,\ + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().createTRLinkCustomer(tRLinkCreateCustomerRequest,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.policy_editor_beta.publish_draft_legacy(legacy_publish_draft_request,\ + source: "response = fireblocks.t_r_link.create_t_r_link_customer(t_r_link_create_customer_request,\ \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - put: - description: "Legacy Endpoint – Update the draft and return its validation.\ - \ \n**Note:** \n- This endpoint will remain available for the foreseeable\ - \ future and is not deprecated. - The `updateDraft` endpoint under policy/paths\ - \ provides policy type-specific operations and improved functionality. - These\ - \ endpoints are currently in beta and might be subject to changes.\nIf you\ - \ want to participate and learn more about the Fireblocks TAP, please contact\ - \ your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" - operationId: updateDraftLegacy + /screening/trlink/customers/{customerId}: + delete: + description: Deletes a customer and all associated integrations. This action + cannot be undone. + operationId: deleteTRLinkCustomer 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." + - description: Customer unique identifier + example: 550e8400-e29b-41d4-a716-446655440001 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: customerId + required: true schema: + format: uuid type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/LegacyPolicyRules" + responses: + "204": + description: Customer deleted successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Delete customer + tags: + - TRLink + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tRLink.deleteTRLinkCustomer(tRLinkApiDeleteTRLinkCustomerRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.tRLink().deleteTRLinkCustomer(customerId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.t_r_link.delete_t_r_link_customer(customer_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tRLink.deleteTRLinkCustomer(tRLinkApiDeleteTRLinkCustomerRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.tRLink().deleteTRLinkCustomer(customerId); + - lang: Python + source: response = fireblocks.t_r_link.delete_t_r_link_customer(customer_id); + x-accepts: + - application/json + get: + description: Retrieves detailed information about a specific customer by their + unique identifier. + operationId: getTRLinkCustomerById + parameters: + - description: Customer unique identifier + example: 550e8400-e29b-41d4-a716-446655440001 + explode: false + in: path + name: customerId required: true + schema: + format: uuid + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/LegacyDraftReviewAndValidationResponse" - description: A draft validation response object + $ref: "#/components/schemas/TRLinkCustomerResponse" + description: Customer retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Update the draft with a new set of rules + summary: Get customer by ID tags: - - Policy Editor (Beta) - x-rate-limit-category: write + - TRLink + x-rate-limit-category: read x-readme: code-samples: - - language: python - code: policy = fireblocks.update_draft() - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: const policy = await fireblocks.updateDraft(); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.updateDraftLegacy(policyEditorBetaApiUpdateDraftLegacyRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomerById(tRLinkApiGetTRLinkCustomerByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.policyEditorBeta().updateDraftLegacy(legacyPolicyRules,\ - \ idempotencyKey);" + code: CompletableFuture> response = + fireblocks.tRLink().getTRLinkCustomerById(customerId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.policy_editor_beta.update_draft_legacy(legacy_policy_rules,\ - \ idempotency_key);" + code: response = fireblocks.t_r_link.get_t_r_link_customer_by_id(customer_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.updateDraftLegacy(policyEditorBetaApiUpdateDraftLegacyRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomerById(tRLinkApiGetTRLinkCustomerByIdRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.policyEditorBeta().updateDraftLegacy(legacyPolicyRules,\ - \ idempotencyKey);" + source: CompletableFuture> response = + fireblocks.tRLink().getTRLinkCustomerById(customerId); - lang: Python - source: "response = fireblocks.policy_editor_beta.update_draft_legacy(legacy_policy_rules,\ - \ idempotency_key);" - x-content-type: application/json + source: response = fireblocks.t_r_link.get_t_r_link_customer_by_id(customer_id); x-accepts: - application/json - /tap/publish: - post: - description: "Send publish request of set of policy rules and returns the response.\ - \ \n**Note:** These endpoints are currently in beta and might be subject to\ - \ changes.\nIf you want to participate and learn more about the Fireblocks\ - \ TAP, please contact your Fireblocks Customer Success Manager or send an\ - \ email to CSM@fireblocks.com.\n" - operationId: publishPolicyRules + put: + description: Updates an existing customer's information. All fields are optional + - only provided fields will be updated. + operationId: updateTRLinkCustomer parameters: + - description: Customer unique identifier + example: 550e8400-e29b-41d4-a716-446655440001 + explode: false + in: path + name: customerId + required: true + schema: + format: uuid + type: string + 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\ @@ -28860,193 +28711,186 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/LegacyPolicyRules" + $ref: "#/components/schemas/TRLinkUpdateCustomerRequest" required: true responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/LegacyPublishResult" - description: A policy publish result object + $ref: "#/components/schemas/TRLinkCustomerResponse" + description: Customer updated successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Send publish request for a set of policy rules + summary: Update customer tags: - - Policy Editor (Beta) + - TRLink x-rate-limit-category: write x-readme: code-samples: - - language: python - code: policy = fireblocks.publish_rules() - name: Fireblocks SDK Python example (Legacy) - - language: javascript - code: const policy = await fireblocks.publishRules(); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.updateTRLinkCustomer(tRLinkApiUpdateTRLinkCustomerRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.policyEditorBeta().publishPolicyRules(legacyPolicyRules,\ - \ idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().updateTRLinkCustomer(tRLinkUpdateCustomerRequest,\ + \ customerId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.policy_editor_beta.publish_policy_rules(legacy_policy_rules,\ - \ idempotency_key);" + code: "response = fireblocks.t_r_link.update_t_r_link_customer(t_r_link_update_customer_request,\ + \ customer_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.updateTRLinkCustomer(tRLinkApiUpdateTRLinkCustomerRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.policyEditorBeta().publishPolicyRules(legacyPolicyRules,\ - \ idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().updateTRLinkCustomer(tRLinkUpdateCustomerRequest,\ + \ customerId, idempotencyKey);" - lang: Python - source: "response = fireblocks.policy_editor_beta.publish_policy_rules(legacy_policy_rules,\ - \ idempotency_key);" + source: "response = fireblocks.t_r_link.update_t_r_link_customer(t_r_link_update_customer_request,\ + \ customer_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /policy/active_policy: + /screening/trlink/customers/{customerId}/integrations: get: - description: | - Returns the active policy and its validation for a specific policy type. - - **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com. - - Endpoint Permissions: Owner, Admin, Non-Signing Admin. - operationId: getActivePolicy + description: Retrieves all TRSupport integrations for a specific customer. Returns + a list of partner integrations configured for Travel Rule compliance. + operationId: getTRLinkCustomerIntegrations parameters: - - description: "The policy type(s) to retrieve. Can be a single type or multiple\ - \ types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT)." - explode: true - in: query - name: policyType + - description: Customer unique identifier + example: 550e8400-e29b-41d4-a716-446655440001 + explode: false + in: path + name: customerId required: true schema: - $ref: "#/components/schemas/PolicyType" - style: form + format: uuid + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/PolicyAndValidationResponse" - description: A policy object with validation + $ref: "#/components/schemas/TRLinkCustomerIntegrationsListResponse" + description: Customer integrations retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get the active policy and its validation by policy type + summary: Get customer integrations tags: - - Policy Editor V2 (Beta) + - TRLink x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: | - // Single policy type - const policy = await fireblocks.getActivePolicy({policyType: "TRANSFER"}); - // Multiple policy types - const policy = await fireblocks.getActivePolicy({policyType: ["TRANSFER", "MINT"]}); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorV2Beta.getActivePolicy(policyEditorV2BetaApiGetActivePolicyRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomerIntegrations(tRLinkApiGetTRLinkCustomerIntegrationsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.policyEditorV2Beta().getActivePolicy(policyType); + code: CompletableFuture>> + response = fireblocks.tRLink().getTRLinkCustomerIntegrations(customerId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.policy_editor_v2_beta.get_active_policy(policy_type); + code: response = fireblocks.t_r_link.get_t_r_link_customer_integrations(customer_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorV2Beta.getActivePolicy(policyEditorV2BetaApiGetActivePolicyRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomerIntegrations(tRLinkApiGetTRLinkCustomerIntegrationsRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.policyEditorV2Beta().getActivePolicy(policyType); + source: CompletableFuture>> + response = fireblocks.tRLink().getTRLinkCustomerIntegrations(customerId); - lang: Python - source: response = fireblocks.policy_editor_v2_beta.get_active_policy(policy_type); + source: response = fireblocks.t_r_link.get_t_r_link_customer_integrations(customer_id); x-accepts: - application/json - /policy/draft: + /screening/trlink/customers/{customerId}/integrations/{customerIntegrationId}: get: - description: "Returns the active draft and its validation for a specific policy\ - \ type. \n**Note:** These endpoints are currently in beta and might be subject\ - \ to changes.\n" - operationId: getDraft + description: Retrieves detailed information about a specific customer integration. + operationId: getTRLinkCustomerIntegrationById parameters: - - description: "The policy type(s) to retrieve. Can be a single type or multiple\ - \ types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT)." - explode: true - in: query - name: policyType + - description: Customer unique identifier + example: 550e8400-e29b-41d4-a716-446655440001 + explode: false + in: path + name: customerId required: true schema: - $ref: "#/components/schemas/PolicyType" - style: form + format: uuid + type: string + style: simple + - description: Customer integration unique identifier + example: 123e4567-e89b-12d3-a456-426614174000 + explode: false + in: path + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/DraftReviewAndValidationResponse" - description: A draft validation response object + $ref: "#/components/schemas/TRLinkCustomerIntegrationResponse" + description: Customer integration retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get the active draft by policy type + summary: Get customer integration by ID tags: - - Policy Editor V2 (Beta) + - TRLink x-rate-limit-category: read x-readme: code-samples: - - language: javascript - code: | - // Single policy type - const draft = await fireblocks.getDraft({policyType: "TRANSFER"}); - // Multiple policy types - const draft = await fireblocks.getDraft({policyType: ["TRANSFER", "MINT"]}); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorV2Beta.getDraft(policyEditorV2BetaApiGetDraftRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomerIntegrationById(tRLinkApiGetTRLinkCustomerIntegrationByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.policyEditorV2Beta().getDraft(policyType); + code: "CompletableFuture>\ + \ response = fireblocks.tRLink().getTRLinkCustomerIntegrationById(customerId,\ + \ customerIntegrationId);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.policy_editor_v2_beta.get_draft(policy_type); + code: "response = fireblocks.t_r_link.get_t_r_link_customer_integration_by_id(customer_id,\ + \ customer_integration_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorV2Beta.getDraft(policyEditorV2BetaApiGetDraftRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkCustomerIntegrationById(tRLinkApiGetTRLinkCustomerIntegrationByIdRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.policyEditorV2Beta().getDraft(policyType); + source: "CompletableFuture>\ + \ response = fireblocks.tRLink().getTRLinkCustomerIntegrationById(customerId,\ + \ customerIntegrationId);" - lang: Python - source: response = fireblocks.policy_editor_v2_beta.get_draft(policy_type); + source: "response = fireblocks.t_r_link.get_t_r_link_customer_integration_by_id(customer_id,\ + \ customer_integration_id);" x-accepts: - application/json + /screening/trlink/customers/integration: post: - description: "Send publish request of certain draft id and returns the response.\ - \ \n**Note:** These endpoints are currently in beta and might be subject to\ - \ changes.\nIf you want to participate and learn more about the Fireblocks\ - \ Policy Editor, please contact your Fireblocks Customer Success Manager or\ - \ send an email to CSM@fireblocks.com.\n" - operationId: publishDraft + description: Creates a new TRSupport integration for a customer. This establishes + a connection placeholder between a customer and a Travel Rule partner. Use + the connect endpoint to provide credentials after creation. You may optionally + supply `customerIntegrationId` in the request body when your tenant is enabled + for client-provided integration ids. + operationId: createTRLinkIntegration 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\ @@ -29063,214 +28907,119 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/PublishDraftRequest" + $ref: "#/components/schemas/TRLinkCreateIntegrationRequest" required: true responses: "201": content: application/json: schema: - $ref: "#/components/schemas/PublishResult" - description: A policy publish result object + $ref: "#/components/schemas/TRLinkCustomerIntegrationResponse" + description: Customer integration created successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Send publish request for a certain draft id + summary: Create customer integration tags: - - Policy Editor V2 (Beta) + - TRLink x-rate-limit-category: write x-readme: code-samples: - - language: javascript - code: | - const policy = await fireblocks.publishDraft({policyTypes: ["TRANSFER"], draftId: "draft-123"}); - name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.policyEditorV2Beta.publishDraft(policyEditorV2BetaApiPublishDraftRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkIntegration(tRLinkApiCreateTRLinkIntegrationRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.policyEditorV2Beta().publishDraft(publishDraftRequest,\ + code: "CompletableFuture>\ + \ response = fireblocks.tRLink().createTRLinkIntegration(tRLinkCreateIntegrationRequest,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.policy_editor_v2_beta.publish_draft(publish_draft_request,\ + code: "response = fireblocks.t_r_link.create_t_r_link_integration(t_r_link_create_integration_request,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.policyEditorV2Beta.publishDraft(policyEditorV2BetaApiPublishDraftRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkIntegration(tRLinkApiCreateTRLinkIntegrationRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.policyEditorV2Beta().publishDraft(publishDraftRequest,\ + source: "CompletableFuture>\ + \ response = fireblocks.tRLink().createTRLinkIntegration(tRLinkCreateIntegrationRequest,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.policy_editor_v2_beta.publish_draft(publish_draft_request,\ + source: "response = fireblocks.t_r_link.create_t_r_link_integration(t_r_link_create_integration_request,\ \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - put: - description: "Update the draft and return its validation for specific policy\ - \ types. \n**Note:** These endpoints are currently in beta and might be subject\ - \ to changes.\n" - operationId: updateDraft + /screening/trlink/customers/integration/{customerIntegrationId}: + delete: + description: "Disconnects the integration for the authenticated workspace (tenant):\ + \ removes stored credentials and deletes this tenant's integration record.\ + \ The operation is scoped to the caller's tenant; it does not remove partner-side\ + \ state for other workspaces that reuse the same logical customer integration.\ + \ The record cannot be recovered after delete." + operationId: disconnectTRLinkIntegration 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." + - description: Customer integration unique identifier + example: 123e4567-e89b-12d3-a456-426614174000 explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: customerIntegrationId + required: true schema: + format: uuid type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateDraftRequest" - required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/DraftReviewAndValidationResponse" - description: A draft validation response object - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Update the draft with a new set of rules by policy types - tags: - - Policy Editor V2 (Beta) - x-rate-limit-category: write - x-readme: - code-samples: - - language: javascript - code: | - const draft = await fireblocks.updateDraft({policyTypes: ["TRANSFER"], rules: rules}); - name: Fireblocks SDK Javascript example - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.policyEditorV2Beta.updateDraft(policyEditorV2BetaApiUpdateDraftRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture>\ - \ response = fireblocks.policyEditorV2Beta().updateDraft(updateDraftRequest,\ - \ idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.policy_editor_v2_beta.update_draft(update_draft_request,\ - \ idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.policyEditorV2Beta.updateDraft(policyEditorV2BetaApiUpdateDraftRequest);" - - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.policyEditorV2Beta().updateDraft(updateDraftRequest,\ - \ idempotencyKey);" - - lang: Python - source: "response = fireblocks.policy_editor_v2_beta.update_draft(update_draft_request,\ - \ idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /management/users: - get: - description: |- - 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: Admin, Non-Signing Admin. - operationId: getConsoleUsers - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/GetConsoleUsersResponse" - description: got console users - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - 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/ErrorResponse" - description: Lacking permissions. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "5XX": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - description: Internal error. + "204": + description: Customer integration disconnected successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get console users + summary: Disconnect customer integration tags: - - Console User - x-rate-limit-category: query + - TRLink + x-rate-limit-category: write x-readme: code-samples: - - language: javascript - code: const consoleUsers = await fireblocks.getConsoleUsers(); - name: Fireblocks SDK Javascript example - - language: python - code: consoleUsers = fireblocks.get_console_users() - name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise>\ - \ = fireblocks.consoleUser.getConsoleUsers();" + code: "const response: Promise> = fireblocks.tRLink.disconnectTRLinkIntegration(tRLinkApiDisconnectTRLinkIntegrationRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.consoleUser().getConsoleUsers(); + code: CompletableFuture> response = fireblocks.tRLink().disconnectTRLinkIntegration(customerIntegrationId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.console_user.get_console_users(); + code: response = fireblocks.t_r_link.disconnect_t_r_link_integration(customer_integration_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.consoleUser.getConsoleUsers();" + source: "const response: Promise> = fireblocks.tRLink.disconnectTRLinkIntegration(tRLinkApiDisconnectTRLinkIntegrationRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.consoleUser().getConsoleUsers(); + source: CompletableFuture> response = fireblocks.tRLink().disconnectTRLinkIntegration(customerIntegrationId); - lang: Python - source: response = fireblocks.console_user.get_console_users(); + source: response = fireblocks.t_r_link.disconnect_t_r_link_integration(customer_integration_id); x-accepts: - application/json - post: - description: |- - Create console users in your workspace - - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. - Learn more about Fireblocks Users management in the following [guide](https://developers.fireblocks.com/docs/manage-users). - Endpoint Permission: Admin, Non-Signing Admin. - operationId: createConsoleUser + put: + description: Connects a customer integration by providing API credentials. Stores + encrypted credentials and enables the integration for use. + operationId: connectTRLinkIntegration parameters: + - description: Customer integration unique identifier + example: 123e4567-e89b-12d3-a456-426614174000 + explode: false + in: path + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + 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\ @@ -29286,171 +29035,127 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CreateConsoleUser" + $ref: "#/components/schemas/TRLinkConnectIntegrationRequest" + required: true responses: "200": - description: User creation approval request has been sent - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - description: bad request - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - 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/ErrorResponse" - description: Lacking permissions. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "5XX": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" - description: Internal error. + $ref: "#/components/schemas/TRLinkCustomerIntegrationResponse" + description: Customer integration connected successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Create console user + summary: Connect customer integration tags: - - Console User + - TRLink x-rate-limit-category: write x-readme: code-samples: - - language: javascript - code: "const res = await fireblocks.createConsoleUser(firstName, lastName,\ - \ email, role);" - name: Fireblocks SDK Javascript example - - language: python - code: "res = fireblocks.create_console_user(first_name, last_name, email,\ - \ role)" - name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.consoleUser.createConsoleUser(consoleUserApiCreateConsoleUserRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.connectTRLinkIntegration(tRLinkApiConnectTRLinkIntegrationRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.consoleUser().createConsoleUser(createConsoleUser,\ - \ idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.tRLink().connectTRLinkIntegration(tRLinkConnectIntegrationRequest,\ + \ customerIntegrationId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.console_user.create_console_user(create_console_user,\ - \ idempotency_key);" + code: "response = fireblocks.t_r_link.connect_t_r_link_integration(t_r_link_connect_integration_request,\ + \ customer_integration_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.consoleUser.createConsoleUser(consoleUserApiCreateConsoleUserRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.connectTRLinkIntegration(tRLinkApiConnectTRLinkIntegrationRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.consoleUser().createConsoleUser(createConsoleUser,\ - \ idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.tRLink().connectTRLinkIntegration(tRLinkConnectIntegrationRequest,\ + \ customerIntegrationId, idempotencyKey);" - lang: Python - source: "response = fireblocks.console_user.create_console_user(create_console_user,\ - \ idempotency_key);" + source: "response = fireblocks.t_r_link.connect_t_r_link_integration(t_r_link_connect_integration_request,\ + \ customer_integration_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /management/api_users: + /screening/trlink/customers/integration/{customerIntegrationId}/public_key: get: - description: |- - List all API keys in your workspace. - - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. - Endpoint Permission: Admin, Non-Signing Admin. - operationId: getApiUsers + description: Retrieves the partner's public key in JWK format for encrypting + PII data in Travel Rule Messages. Use this key to encrypt sensitive originator + and beneficiary information before sending Travel Rule messages. + operationId: getTRLinkIntegrationPublicKey + parameters: + - description: Customer integration unique identifier + example: 123e4567-e89b-12d3-a456-426614174000 + explode: false + in: path + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/GetAPIUsersResponse" - description: got api users - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - 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/ErrorResponse" - description: Lacking permissions. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "5XX": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - description: Internal error. + $ref: "#/components/schemas/TRLinkPublicKeyResponse" + description: Public key retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get API Keys + summary: Get public key for PII encryption tags: - - Api User - x-rate-limit-category: query + - TRLink + x-rate-limit-category: read x-readme: code-samples: - - language: javascript - code: const apiUsers = await fireblocks.getApiUsers(); - name: Fireblocks SDK Javascript example - - language: python - code: apiUsers = fireblocks.get_api_users() - name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise>\ - \ = fireblocks.apiUser.getApiUsers();" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkIntegrationPublicKey(tRLinkApiGetTRLinkIntegrationPublicKeyRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.apiUser().getApiUsers(); + code: CompletableFuture> response = + fireblocks.tRLink().getTRLinkIntegrationPublicKey(customerIntegrationId); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.api_user.get_api_users(); + code: response = fireblocks.t_r_link.get_t_r_link_integration_public_key(customer_integration_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.apiUser.getApiUsers();" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkIntegrationPublicKey(tRLinkApiGetTRLinkIntegrationPublicKeyRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.apiUser().getApiUsers(); + source: CompletableFuture> response = + fireblocks.tRLink().getTRLinkIntegrationPublicKey(customerIntegrationId); - lang: Python - source: response = fireblocks.api_user.get_api_users(); + source: response = fireblocks.t_r_link.get_t_r_link_integration_public_key(customer_integration_id); x-accepts: - application/json + /screening/trlink/customers/integration/{customerIntegrationId}/test_connection: post: - description: |- - Create a new API key in your workspace. - Learn more about Fireblocks API Keys management in the following [guide](https://developers.fireblocks.com/docs/manage-api-keys). - Endpoint Permission: Admin, Non-Signing Admin. - operationId: createApiUser + description: Tests the connection to a customer integration by validating stored + credentials and attempting communication with the Travel Rule partner. Returns + connection status and any error messages. + operationId: testTRLinkIntegrationConnection parameters: + - description: Customer integration unique identifier + example: 123e4567-e89b-12d3-a456-426614174000 + explode: false + in: path + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + 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\ @@ -29462,196 +29167,147 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAPIUser" responses: "200": - description: User creation approval request has been sent - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": - description: bad request - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - 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/ErrorResponse" - description: Lacking permissions. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "5XX": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" - description: Internal error. + $ref: "#/components/schemas/TRLinkTestConnectionResponse" + description: Connection test completed (success or failure details in response + body) headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Create API Key + summary: Test connection tags: - - Api User + - TRLink x-rate-limit-category: write x-readme: code-samples: - - language: javascript - code: "const res = await fireblocks.createApiUser(name, role, csrForNewUser,\ - \ coSignerType, isFirstUser);" - name: Fireblocks SDK Javascript example - - language: python - code: "res = fireblocks.create_api_user(name, role, csr_pem, co_signer_setup,\ - \ co_signer_setup_is_first_user)" - name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.apiUser.createApiUser(apiUserApiCreateApiUserRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.testTRLinkIntegrationConnection(tRLinkApiTestTRLinkIntegrationConnectionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.apiUser().createApiUser(createAPIUser,\ + code: "CompletableFuture> response\ + \ = fireblocks.tRLink().testTRLinkIntegrationConnection(customerIntegrationId,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.api_user.create_api_user(create_a_p_i_user,\ + code: "response = fireblocks.t_r_link.test_t_r_link_integration_connection(customer_integration_id,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.apiUser.createApiUser(apiUserApiCreateApiUserRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.testTRLinkIntegrationConnection(tRLinkApiTestTRLinkIntegrationConnectionRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.apiUser().createApiUser(createAPIUser,\ + source: "CompletableFuture> response\ + \ = fireblocks.tRLink().testTRLinkIntegrationConnection(customerIntegrationId,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.api_user.create_api_user(create_a_p_i_user,\ + source: "response = fireblocks.t_r_link.test_t_r_link_integration_connection(customer_integration_id,\ \ idempotency_key);" - x-content-type: application/json x-accepts: - application/json - /management/users/{id}/reset_device: - post: - description: |- - Resets mobile device for given console user, that user will need to do mobile onboarding again. - - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. - Endpoint Permission: Admin, Non-Signing Admin. - operationId: resetDevice + /screening/trlink/customers/integration/{customerIntegrationId}/vasps: + get: + description: Retrieves a paginated list of VASPs (Virtual Asset Service Providers) + available through the partner integration. Supports cursor-based pagination. + operationId: listTRLinkVasps parameters: - - description: The ID of the console user + - description: Customer integration unique identifier explode: false in: path - name: id + name: customerIntegrationId required: true schema: + format: uuid type: string 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 + - description: Number of results per page (max 100) + explode: true + in: query + name: pageSize + required: false + schema: + default: 100 + maximum: 100 + minimum: 1 + type: integer + style: form + - description: Cursor for pagination (from previous response) + explode: true + in: query + name: pageCursor required: false schema: type: string - style: simple + style: form responses: "200": - description: Reset device approval request has been sent - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - 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/ErrorResponse" - description: Lacking permissions. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "5XX": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" - description: Internal error. + $ref: "#/components/schemas/TRLinkAPIPagedResponse" + description: VASPs retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Resets device + summary: List VASPs tags: - - Reset device - x-rate-limit-category: write + - TRLink + x-rate-limit-category: query x-readme: code-samples: - - language: javascript - code: const res = await fireblocks.resetDeviceRequest(consoleUserId); - name: Fireblocks SDK Javascript example - - language: python - code: res = fireblocks.reset_device_request(console_user_id) - name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.resetDevice.resetDevice(resetDeviceApiResetDeviceRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.listTRLinkVasps(tRLinkApiListTRLinkVaspsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.resetDevice().resetDevice(id,\ - \ idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().listTRLinkVasps(customerIntegrationId, pageSize,\ + \ pageCursor);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.reset_device.reset_device(id, idempotency_key);" + code: "response = fireblocks.t_r_link.list_t_r_link_vasps(customer_integration_id,\ + \ page_size, page_cursor);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.resetDevice.resetDevice(resetDeviceApiResetDeviceRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.listTRLinkVasps(tRLinkApiListTRLinkVaspsRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.resetDevice().resetDevice(id,\ - \ idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().listTRLinkVasps(customerIntegrationId, pageSize, pageCursor);" - lang: Python - source: "response = fireblocks.reset_device.reset_device(id, idempotency_key);" + source: "response = fireblocks.t_r_link.list_t_r_link_vasps(customer_integration_id,\ + \ page_size, page_cursor);" x-accepts: - application/json - /management/api_users/{userId}/whitelist_ip_addresses: + /screening/trlink/customers/integration/{customerIntegrationId}/vasps/{vaspId}: get: - description: |- - Get a list of the whitelisted IP addresses for a specific API Key - - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. - Endpoint Permission: Admin, Non-Signing Admin. - operationId: getWhitelistIpAddresses + description: Retrieves detailed information about a specific VASP by its unique + identifier. Returns VASP details including public key if available. + operationId: getTRLinkVaspById parameters: - - description: The ID of the api user + - description: Customer integration unique identifier explode: false in: path - name: userId + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple + - description: VASP unique identifier (DID format) + explode: false + in: path + name: vaspId required: true schema: type: string @@ -29661,212 +29317,74 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GetWhitelistIpAddressesResponse" - description: successfully got whitelisted ip addresses - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - 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/ErrorResponse" - description: Lacking permissions. - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "5XX": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - description: Internal error. + $ref: "#/components/schemas/TRLinkVaspDto" + description: VASP retrieved successfully headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get whitelisted ip addresses for an API Key + summary: Get VASP by ID tags: - - whitelist ip addresses + - TRLink x-rate-limit-category: read x-readme: code-samples: - - language: javascript - code: const whitelistedAddresses = await fireblocks.getWhitelistedAddresses(apiUserId); - name: Fireblocks SDK Javascript example - - language: python - code: whitelisted_addresses = fireblocks.get_whitelisted_ip_addresses(api_user_id) - name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise>\ - \ = fireblocks.whitelistIpAddresses.getWhitelistIpAddresses(whitelistIpAddressesApiGetWhitelistIpAddressesRequest);" + code: "const response: Promise> = fireblocks.tRLink.getTRLinkVaspById(tRLinkApiGetTRLinkVaspByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.whitelistIpAddresses().getWhitelistIpAddresses(userId); + code: "CompletableFuture> response = fireblocks.tRLink().getTRLinkVaspById(customerIntegrationId,\ + \ vaspId);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.whitelist_ip_addresses.get_whitelist_ip_addresses(user_id); + code: "response = fireblocks.t_r_link.get_t_r_link_vasp_by_id(customer_integration_id,\ + \ vasp_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.whitelistIpAddresses.getWhitelistIpAddresses(whitelistIpAddressesApiGetWhitelistIpAddressesRequest);" + source: "const response: Promise> = fireblocks.tRLink.getTRLinkVaspById(tRLinkApiGetTRLinkVaspByIdRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.whitelistIpAddresses().getWhitelistIpAddresses(userId); + source: "CompletableFuture> response = fireblocks.tRLink().getTRLinkVaspById(customerIntegrationId,\ + \ vaspId);" - lang: Python - source: response = fireblocks.whitelist_ip_addresses.get_whitelist_ip_addresses(user_id); + source: "response = fireblocks.t_r_link.get_t_r_link_vasp_by_id(customer_integration_id,\ + \ vasp_id);" x-accepts: - application/json - /smart-transfers: + /screening/trlink/customers/integration/{customerIntegrationId}/assets: get: - description: |- - Find tickets by their title or ticker. You can also query all tickets without filters by not providing any input parameters. - **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: searchTickets + description: Retrieves a paginated list of assets supported by the partner integration. + Includes a flag indicating whether the partner can handle assets not explicitly + listed. Supports cursor-based pagination. + operationId: listTRLinkSupportedAssets parameters: - - description: Search string - counterparty name or asset or ticketId. Optional - explode: true - in: query - name: q - required: false - schema: - minLength: 1 - type: string - style: form - - description: Ticket statuses for Smart Transfer tickets. Optional - example: - - DRAFT - - OPEN - explode: true - in: query - name: statuses - required: false - schema: - default: [] - items: - enum: - - DRAFT - - PENDING_APPROVAL - - OPEN - - IN_SETTLEMENT - - FULFILLED - - EXPIRED - - CANCELED - type: string - type: array - style: form - - description: "NetworkId that is used in the ticket\t. Optional" - explode: true - in: query - name: networkId - required: false - schema: - type: string - style: form - - description: Filter created tickets by created by self or by others. Optional - explode: true - in: query - name: createdByMe - required: false - schema: - type: boolean - style: form - - description: Lower bound of search range. Optional - explode: true - in: query - name: expiresAfter - required: false - schema: - format: date-time - type: string - style: form - - description: Upper bound of search range. Optional - explode: true - in: query - name: expiresBefore - required: false - schema: - format: date-time - type: string - style: form - - description: "Type of transfer. ASYNC executes transfers as they are funded,\ - \ DVP executes all terms (legs) as one dvp transfer" - explode: true - in: query - name: type - required: false - schema: - enum: - - ASYNC - - DVP - type: string - style: form - - description: External ref. ID that workspace can use to identify ticket outside - of Fireblocks system. - explode: true - in: query - name: externalRefId - required: false - schema: - maxLength: 64 - minLength: 1 - type: string - style: form - - description: ID of the record after which to fetch $limit records - explode: true - in: query - name: after - required: false + - description: Customer integration unique identifier + explode: false + in: path + name: customerIntegrationId + required: true schema: + format: uuid type: string - style: form - - description: "Number of records to fetch. By default, it is 100" + style: simple + - description: Number of results per page (max 100) explode: true in: query - name: limit + name: pageSize required: false schema: + default: 100 + maximum: 100 minimum: 1 - type: number - style: form - - description: Sort by field - explode: true - in: query - name: sortBy - required: false - schema: - default: createdAt - enum: - - createdAt - - updatedAt - - submittedAt - example: createdAt - type: string + type: integer style: form - - description: ASC / DESC ordering (default DESC) + - description: Cursor for pagination (from previous response) explode: true in: query - name: order + name: pageCursor required: false schema: - default: DESC - enum: - - ASC - - DESC - example: DESC type: string style: form responses: @@ -29874,136 +29392,65 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketFilteredResponse" - description: Smart Transfer tickets were returned successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - summary: Find Ticket + $ref: "#/components/schemas/TRLinkAssetsListPagedResponse" + description: Supported assets retrieved successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: List supported assets tags: - - Smart Transfer + - TRLink x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.searchTickets(smartTransferApiSearchTicketsRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.listTRLinkSupportedAssets(tRLinkApiListTRLinkSupportedAssetsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.smartTransfer().searchTickets(q, statuses, networkId,\ - \ createdByMe, expiresAfter, expiresBefore, type, externalRefId, after,\ - \ limit, sortBy, order);" + code: "CompletableFuture> response\ + \ = fireblocks.tRLink().listTRLinkSupportedAssets(customerIntegrationId,\ + \ pageSize, pageCursor);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.search_tickets(q, statuses,\ - \ network_id, created_by_me, expires_after, expires_before, type, external_ref_id,\ - \ after, limit, sort_by, order);" + code: "response = fireblocks.t_r_link.list_t_r_link_supported_assets(customer_integration_id,\ + \ page_size, page_cursor);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.searchTickets(smartTransferApiSearchTicketsRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.listTRLinkSupportedAssets(tRLinkApiListTRLinkSupportedAssetsRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.smartTransfer().searchTickets(q, statuses, networkId,\ - \ createdByMe, expiresAfter, expiresBefore, type, externalRefId, after,\ - \ limit, sortBy, order);" + source: "CompletableFuture> response\ + \ = fireblocks.tRLink().listTRLinkSupportedAssets(customerIntegrationId,\ + \ pageSize, pageCursor);" - lang: Python - source: "response = fireblocks.smart_transfer.search_tickets(q, statuses,\ - \ network_id, created_by_me, expires_after, expires_before, type, external_ref_id,\ - \ after, limit, sort_by, order);" + source: "response = fireblocks.t_r_link.list_t_r_link_supported_assets(customer_integration_id,\ + \ page_size, page_cursor);" x-accepts: - application/json - post: - description: | - Creates a new Smart Transfer ticket. Learn more about Fireblocks Smart Transfers [here](https://developers.fireblocks.com/docs/execute-smart-transfers). - - **Note:** The `DVP` value is in Early Access and should only be used if Fireblocks has enabled it in your workspace. Contact your Customer Success Manager for more information. - - **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: createTicket + /screening/trlink/customers/integration/{customerIntegrationId}/assets/{assetId}: + get: + description: "Retrieves detailed information about a specific asset by its Fireblocks\ + \ asset ID. Returns the transformed Fireblocks asset data, raw partner response,\ + \ and support status." + operationId: getTRLinkSupportedAsset 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." + - description: Customer integration unique identifier explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: customerIntegrationId + required: true schema: + format: uuid type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferCreateTicket" - required: true - responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Smart Transfer ticket was created successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Create Ticket - tags: - - Smart Transfer - x-rate-limit-category: async - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.createTicket(smartTransferApiCreateTicketRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().createTicket(smartTransferCreateTicket,\ - \ idempotencyKey);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.smart_transfer.create_ticket(smart_transfer_create_ticket,\ - \ idempotency_key);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.createTicket(smartTransferApiCreateTicketRequest);" - - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().createTicket(smartTransferCreateTicket, idempotencyKey);" - - lang: Python - source: "response = fireblocks.smart_transfer.create_ticket(smart_transfer_create_ticket,\ - \ idempotency_key);" - x-content-type: application/json - x-accepts: - - application/json - /smart-transfers/{ticketId}: - get: - description: "Find Smart Transfer ticket by id. Endpoint Permission: Admin,\ - \ Non-Signing Admin, Signer, Approver, Editor, Viewer." - operationId: findTicketById - parameters: - - explode: false + - description: Fireblocks asset ID + explode: false in: path - name: ticketId + name: assetId required: true schema: type: string @@ -30013,59 +29460,58 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Smart Transfer ticket returned successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - summary: Search Ticket by ID + $ref: "#/components/schemas/TRLinkGetSupportedAssetResponse" + description: Asset retrieved successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get supported asset by ID tags: - - Smart Transfer - x-rate-limit-category: query + - TRLink + x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.findTicketById(smartTransferApiFindTicketByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkSupportedAsset(tRLinkApiGetTRLinkSupportedAssetRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.smartTransfer().findTicketById(ticketId); + code: "CompletableFuture> response\ + \ = fireblocks.tRLink().getTRLinkSupportedAsset(customerIntegrationId,\ + \ assetId);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.smart_transfer.find_ticket_by_id(ticket_id); + code: "response = fireblocks.t_r_link.get_t_r_link_supported_asset(customer_integration_id,\ + \ asset_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.findTicketById(smartTransferApiFindTicketByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkSupportedAsset(tRLinkApiGetTRLinkSupportedAssetRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.smartTransfer().findTicketById(ticketId); + source: "CompletableFuture> response\ + \ = fireblocks.tRLink().getTRLinkSupportedAsset(customerIntegrationId, assetId);" - lang: Python - source: response = fireblocks.smart_transfer.find_ticket_by_id(ticket_id); + source: "response = fireblocks.t_r_link.get_t_r_link_supported_asset(customer_integration_id,\ + \ asset_id);" x-accepts: - application/json - /smart-transfers/{ticketId}/expires-in: - put: - description: "Set expiration date on Smart Transfer ticket. Endpoint Permission:\ - \ Admin, Non-Signing Admin, Signer, Approver, Editor." - operationId: setTicketExpiration + /screening/trlink/customers/integration/{customerIntegrationId}/trm/assess: + post: + description: "Assesses travel rule requirement for a transaction by validating\ + \ stored credentials and determining whether Travel Rule compliance is required\ + \ based on amount, jurisdiction, and partner thresholds." + operationId: assessTRLinkTravelRuleRequirement parameters: - - explode: false + - description: Customer integration unique identifier + explode: false in: path - name: ticketId + name: customerIntegrationId required: true schema: + format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -30083,77 +29529,67 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferSetTicketExpiration" + $ref: "#/components/schemas/TRLinkAssessTravelRuleRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Successfully set expiration date on Smart Transfer ticket - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Set expiration + $ref: "#/components/schemas/TRLinkAssessTravelRuleResponse" + description: Travel rule assessment completed + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Assess Travel Rule requirement tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.setTicketExpiration(smartTransferApiSetTicketExpirationRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.assessTRLinkTravelRuleRequirement(tRLinkApiAssessTRLinkTravelRuleRequirementRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().setTicketExpiration(smartTransferSetTicketExpiration,\ - \ ticketId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tRLink().assessTRLinkTravelRuleRequirement(tRLinkAssessTravelRuleRequest,\ + \ customerIntegrationId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.set_ticket_expiration(smart_transfer_set_ticket_expiration,\ - \ ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.assess_t_r_link_travel_rule_requirement(t_r_link_assess_travel_rule_request,\ + \ customer_integration_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.setTicketExpiration(smartTransferApiSetTicketExpirationRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.assessTRLinkTravelRuleRequirement(tRLinkApiAssessTRLinkTravelRuleRequirementRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().setTicketExpiration(smartTransferSetTicketExpiration,\ - \ ticketId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tRLink().assessTRLinkTravelRuleRequirement(tRLinkAssessTravelRuleRequest,\ + \ customerIntegrationId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.set_ticket_expiration(smart_transfer_set_ticket_expiration,\ - \ ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.assess_t_r_link_travel_rule_requirement(t_r_link_assess_travel_rule_request,\ + \ customer_integration_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/{ticketId}/external-id: - put: - description: "Set external id Smart Transfer ticket. Endpoint Permission: Admin,\ - \ Non-Signing Admin, Signer, Approver, Editor." - operationId: setExternalRefId + /screening/trlink/customers/integration/{customerIntegrationId}/trm: + post: + description: Creates a new travel rule message with IVMS101-compliant PII data. + Encrypts sensitive originator and beneficiary information before sending to + partner. + operationId: createTRLinkTrm parameters: - - explode: false + - description: Customer integration unique identifier + explode: false in: path - name: ticketId + name: customerIntegrationId required: true schema: + format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -30171,76 +29607,138 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferSetTicketExternalId" + $ref: "#/components/schemas/TRLinkCreateTrmRequest" required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Successfully set external id on Smart Transfer ticket - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": + "201": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Add external ref. ID - tags: - - Smart Transfer + $ref: "#/components/schemas/TRLinkTrmInfoResponse" + description: TRM created successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Create Travel Rule Message + tags: + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.setExternalRefId(smartTransferApiSetExternalRefIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkTrm(tRLinkApiCreateTRLinkTrmRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().setExternalRefId(smartTransferSetTicketExternalId,\ - \ ticketId, idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().createTRLinkTrm(tRLinkCreateTrmRequest, customerIntegrationId,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.set_external_ref_id(smart_transfer_set_ticket_external_id,\ - \ ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.create_t_r_link_trm(t_r_link_create_trm_request,\ + \ customer_integration_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.setExternalRefId(smartTransferApiSetExternalRefIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkTrm(tRLinkApiCreateTRLinkTrmRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().setExternalRefId(smartTransferSetTicketExternalId,\ - \ ticketId, idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().createTRLinkTrm(tRLinkCreateTrmRequest, customerIntegrationId,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.set_external_ref_id(smart_transfer_set_ticket_external_id,\ - \ ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.create_t_r_link_trm(t_r_link_create_trm_request,\ + \ customer_integration_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/{ticketId}/submit: - put: - description: "Submit Smart Transfer ticket - change status into ready for approval\ - \ if auto approval is not turned on, or OPEN if auto approval is on. Endpoint\ - \ Permission: Admin, Non-Signing Admin, Signer, Approver, Editor." - operationId: submitTicket + /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}: + get: + description: "Retrieves a Travel Rule Message by its unique identifier from\ + \ the partner provider. Returns full TRM details including status, IVMS101\ + \ data, and transaction information." + operationId: getTRLinkTrmById parameters: - - explode: false + - description: Customer integration unique identifier + explode: false in: path - name: ticketId + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple + - description: Travel Rule Message unique identifier + explode: false + in: path + name: trmId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TRLinkTrmInfoResponse" + description: TRM retrieved successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get TRM by ID + tags: + - TRLink + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkTrmById(tRLinkApiGetTRLinkTrmByIdRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().getTRLinkTrmById(customerIntegrationId, trmId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.t_r_link.get_t_r_link_trm_by_id(customer_integration_id,\ + \ trm_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkTrmById(tRLinkApiGetTRLinkTrmByIdRequest);" + - lang: Java + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().getTRLinkTrmById(customerIntegrationId, trmId);" + - lang: Python + source: "response = fireblocks.t_r_link.get_t_r_link_trm_by_id(customer_integration_id,\ + \ trm_id);" + x-accepts: + - application/json + /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/cancel: + post: + description: Cancels a travel rule message. The TRM status will be updated to + cancelled and the partner will be notified. + operationId: cancelTRLinkTrm + parameters: + - description: Customer integration unique identifier + explode: false + in: path + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple + - description: Travel Rule Message unique identifier + explode: false + in: path + name: trmId required: true schema: type: string @@ -30260,76 +29758,72 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferSubmitTicket" + $ref: "#/components/schemas/TRLinkCancelTrmRequest" required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Successfully submitted Smart Transfer ticket - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": + "202": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Submit ticket + $ref: "#/components/schemas/TRLinkTrmInfoResponse" + description: Transaction cancellation request accepted + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Cancel Travel Rule Message tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.submitTicket(smartTransferApiSubmitTicketRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.cancelTRLinkTrm(tRLinkApiCancelTRLinkTrmRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().submitTicket(smartTransferSubmitTicket,\ - \ ticketId, idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().cancelTRLinkTrm(tRLinkCancelTrmRequest, customerIntegrationId,\ + \ trmId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.submit_ticket(smart_transfer_submit_ticket,\ - \ ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.cancel_t_r_link_trm(t_r_link_cancel_trm_request,\ + \ customer_integration_id, trm_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.submitTicket(smartTransferApiSubmitTicketRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.cancelTRLinkTrm(tRLinkApiCancelTRLinkTrmRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().submitTicket(smartTransferSubmitTicket, ticketId,\ - \ idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().cancelTRLinkTrm(tRLinkCancelTrmRequest, customerIntegrationId,\ + \ trmId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.submit_ticket(smart_transfer_submit_ticket,\ - \ ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.cancel_t_r_link_trm(t_r_link_cancel_trm_request,\ + \ customer_integration_id, trm_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/{ticketId}/fulfill: - put: - description: "Manually fulfill ticket, in case when all terms (legs) are funded\ - \ manually. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver,\ - \ Editor." - operationId: fulfillTicket + /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/redirect: + post: + description: Redirects a Travel Rule Message to a subsidiary VASP. This operation + requires the partner to support nested VASPs functionality. + operationId: redirectTRLinkTrm parameters: - - explode: false + - description: Customer integration unique identifier + explode: false in: path - name: ticketId + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple + - description: Travel Rule Message unique identifier + explode: false + in: path + name: trmId required: true schema: type: string @@ -30345,69 +29839,81 @@ paths: schema: type: string style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TRLinkRedirectTrmRequest" + required: true responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Successfully fulfilled on Smart Transfer ticket - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": + "202": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Fund ticket manually + $ref: "#/components/schemas/TRLinkTrmInfoResponse" + description: Transaction redirect request accepted + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Redirect Travel Rule Message tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.fulfillTicket(smartTransferApiFulfillTicketRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.redirectTRLinkTrm(tRLinkApiRedirectTRLinkTrmRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().fulfillTicket(ticketId, idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().redirectTRLinkTrm(tRLinkRedirectTrmRequest, customerIntegrationId,\ + \ trmId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.fulfill_ticket(ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.redirect_t_r_link_trm(t_r_link_redirect_trm_request,\ + \ customer_integration_id, trm_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.fulfillTicket(smartTransferApiFulfillTicketRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.redirectTRLinkTrm(tRLinkApiRedirectTRLinkTrmRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().fulfillTicket(ticketId, idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().redirectTRLinkTrm(tRLinkRedirectTrmRequest, customerIntegrationId,\ + \ trmId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.fulfill_ticket(ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.redirect_t_r_link_trm(t_r_link_redirect_trm_request,\ + \ customer_integration_id, trm_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json - /smart_transfers/{ticketId}/dvp/fund: - put: - description: Create or fulfill dvp ticket order - operationId: fundDvpTicket + /screening/trlink/customers/integration/{customerIntegrationId}/transactions/{txId}/manual_decision: + post: + description: Accept or reject destinations stuck in NoTRM step without waiting + for TRP webhook or policy timeout. + operationId: createTRLinkManualDecision parameters: - - explode: false + - description: Customer integration unique identifier + example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 + explode: false in: path - name: ticketId + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple + - description: Fireblocks transaction unique identifier + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e + explode: false + in: path + name: txId required: true schema: + format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -30425,88 +29931,70 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferFundDvpTicket" + $ref: "#/components/schemas/TRLinkManualDecisionRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Successfully started creating or fulfilling order on dvp Smart - Transfer ticket - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Fund dvp ticket + $ref: "#/components/schemas/TRLinkManualDecisionResponse" + description: Decision applied successfully + default: + $ref: "#/components/responses/Error" + summary: Manual decision for missing TRM tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.fundDvpTicket(smartTransferApiFundDvpTicketRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkManualDecision(tRLinkApiCreateTRLinkManualDecisionRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().fundDvpTicket(smartTransferFundDvpTicket,\ - \ ticketId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.tRLink().createTRLinkManualDecision(tRLinkManualDecisionRequest,\ + \ customerIntegrationId, txId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.fund_dvp_ticket(smart_transfer_fund_dvp_ticket,\ - \ ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.create_t_r_link_manual_decision(t_r_link_manual_decision_request,\ + \ customer_integration_id, tx_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.fundDvpTicket(smartTransferApiFundDvpTicketRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.createTRLinkManualDecision(tRLinkApiCreateTRLinkManualDecisionRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().fundDvpTicket(smartTransferFundDvpTicket,\ - \ ticketId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.tRLink().createTRLinkManualDecision(tRLinkManualDecisionRequest,\ + \ customerIntegrationId, txId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.fund_dvp_ticket(smart_transfer_fund_dvp_ticket,\ - \ ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.create_t_r_link_manual_decision(t_r_link_manual_decision_request,\ + \ customer_integration_id, tx_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/{ticketId}/cancel: - put: - description: "Cancel Smart Transfer ticket. Endpoint Permission: Admin, Non-Signing\ - \ Admin, Signer, Approver, Editor." - operationId: cancelTicket + /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/required_actions: + get: + description: "Retrieves the list of required actions (e.g., PII fields) needed\ + \ to process the Travel Rule Message." + operationId: getTRLinkTrmRequiredActions parameters: - - explode: false + - description: Customer integration unique identifier + explode: false in: path - name: ticketId + name: customerIntegrationId required: true schema: + format: uuid type: string 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." + - description: Travel Rule Message unique identifier explode: false - in: header - name: Idempotency-Key - required: false + in: path + name: trmId + required: true schema: type: string style: simple @@ -30515,65 +30003,61 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketResponse" - description: Smart Transfer ticket successfully canceled - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Cancel Ticket + $ref: "#/components/schemas/TRLinkGetRequiredActionsResponse" + description: Required actions retrieved successfully + default: + $ref: "#/components/responses/Error" + summary: Get required actions for a TRM tags: - - Smart Transfer - x-rate-limit-category: write + - TRLink + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.cancelTicket(smartTransferApiCancelTicketRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkTrmRequiredActions(tRLinkApiGetTRLinkTrmRequiredActionsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().cancelTicket(ticketId, idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.tRLink().getTRLinkTrmRequiredActions(customerIntegrationId,\ + \ trmId);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.cancel_ticket(ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.get_t_r_link_trm_required_actions(customer_integration_id,\ + \ trm_id);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.cancelTicket(smartTransferApiCancelTicketRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkTrmRequiredActions(tRLinkApiGetTRLinkTrmRequiredActionsRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().cancelTicket(ticketId, idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.tRLink().getTRLinkTrmRequiredActions(customerIntegrationId,\ + \ trmId);" - lang: Python - source: "response = fireblocks.smart_transfer.cancel_ticket(ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.get_t_r_link_trm_required_actions(customer_integration_id,\ + \ trm_id);" x-accepts: - application/json - /smart-transfers/{ticketId}/terms: + /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/resolve_action: post: - description: "Creates new smart transfer ticket term (when the ticket status\ - \ is DRAFT). Learn more about Fireblocks Smart Transfers in the following\ - \ [guide](https://developers.fireblocks.com/docs/execute-smart-transfers).\ - \ Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor." - operationId: createTicketTerm + description: "Submits required data (e.g., beneficiary PII) to resolve a pending\ + \ Travel Rule Message action." + operationId: resolveActionTRLinkTrm parameters: - - explode: false + - description: Customer integration unique identifier + explode: false in: path - name: ticketId + name: customerIntegrationId + required: true + schema: + format: uuid + type: string + style: simple + - description: Travel Rule Message unique identifier + explode: false + in: path + name: trmId required: true schema: type: string @@ -30593,206 +30077,109 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferCreateTicketTerm" + $ref: "#/components/schemas/TRLinkResolveActionRequest" required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketTermResponse" - description: Smart Transfer ticket term was created successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "422": + "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Create leg (term) + $ref: "#/components/schemas/TRLinkTrmInfoResponse" + description: Action resolved successfully + default: + $ref: "#/components/responses/Error" + summary: Resolve action for a TRM tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.createTicketTerm(smartTransferApiCreateTicketTermRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.resolveActionTRLinkTrm(tRLinkApiResolveActionTRLinkTrmRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().createTicketTerm(smartTransferCreateTicketTerm,\ - \ ticketId, idempotencyKey);" + code: "CompletableFuture> response =\ + \ fireblocks.tRLink().resolveActionTRLinkTrm(tRLinkResolveActionRequest,\ + \ customerIntegrationId, trmId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.create_ticket_term(smart_transfer_create_ticket_term,\ - \ ticket_id, idempotency_key);" + code: "response = fireblocks.t_r_link.resolve_action_t_r_link_trm(t_r_link_resolve_action_request,\ + \ customer_integration_id, trm_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.createTicketTerm(smartTransferApiCreateTicketTermRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.resolveActionTRLinkTrm(tRLinkApiResolveActionTRLinkTrmRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().createTicketTerm(smartTransferCreateTicketTerm,\ - \ ticketId, idempotencyKey);" + source: "CompletableFuture> response =\ + \ fireblocks.tRLink().resolveActionTRLinkTrm(tRLinkResolveActionRequest,\ + \ customerIntegrationId, trmId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.create_ticket_term(smart_transfer_create_ticket_term,\ - \ ticket_id, idempotency_key);" + source: "response = fireblocks.t_r_link.resolve_action_t_r_link_trm(t_r_link_resolve_action_request,\ + \ customer_integration_id, trm_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/{ticketId}/terms/{termId}: - delete: - description: Delete ticket term when ticket is in DRAFT status - operationId: removeTicketTerm - parameters: - - explode: false - in: path - name: ticketId - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: termId - required: true - schema: - type: string - style: simple - responses: - "204": - description: Smart Transfer ticket term successfully removed - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - summary: Delete ticket leg (term) - tags: - - Smart Transfer - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.smartTransfer.removeTicketTerm(smartTransferApiRemoveTicketTermRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response = fireblocks.smartTransfer().removeTicketTerm(ticketId,\ - \ termId);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.smart_transfer.remove_ticket_term(ticket_id,\ - \ term_id);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.smartTransfer.removeTicketTerm(smartTransferApiRemoveTicketTermRequest);" - - lang: Java - source: "CompletableFuture> response = fireblocks.smartTransfer().removeTicketTerm(ticketId,\ - \ termId);" - - lang: Python - source: "response = fireblocks.smart_transfer.remove_ticket_term(ticket_id,\ - \ term_id);" - x-accepts: - - application/json + /screening/trlink/policy: get: - description: "Find a specific term of a specific Smart Transfer ticket. Endpoint\ - \ Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer." - operationId: findTicketTermById - parameters: - - explode: false - in: path - name: ticketId - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: termId - required: true - schema: - type: string - style: simple + description: "Retrieves the complete TRSupport policy for the authenticated\ + \ tenant, including pre-screening rules, post-screening rules, and missing\ + \ TRM rules. Pre-screening rules determine whether transactions should be\ + \ screened. Post-screening rules determine actions based on screening results.\ + \ Missing TRM rules handle cases when screening data is unavailable." + operationId: getTRLinkPolicy responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketTermResponse" - description: Smart Transfer ticket term returned successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - summary: Get Smart Transfer ticket term + $ref: "#/components/schemas/TRLinkPolicyResponse" + description: Policy retrieved successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get TRLink policy tags: - - Smart Transfer + - TRLink x-rate-limit-category: read x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.findTicketTermById(smartTransferApiFindTicketTermByIdRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkPolicy();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().findTicketTermById(ticketId, termId);" + code: CompletableFuture> response = fireblocks.tRLink().getTRLinkPolicy(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.find_ticket_term_by_id(ticket_id,\ - \ term_id);" + code: response = fireblocks.t_r_link.get_t_r_link_policy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.findTicketTermById(smartTransferApiFindTicketTermByIdRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.getTRLinkPolicy();" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().findTicketTermById(ticketId, termId);" + source: CompletableFuture> response = fireblocks.tRLink().getTRLinkPolicy(); - lang: Python - source: "response = fireblocks.smart_transfer.find_ticket_term_by_id(ticket_id,\ - \ term_id);" + source: response = fireblocks.t_r_link.get_t_r_link_policy(); x-accepts: - application/json - put: - description: Update ticket term (when ticket status is DRAFT) - operationId: updateTicketTerm + /screening/trlink/transaction/{txId}/travel_rule_message_id: + post: + description: Associates a Travel Rule Message ID with a Fireblocks transaction. + This links the TRM compliance data to the blockchain transaction. + operationId: setTRLinkTransactionTravelRuleMessageId parameters: - - explode: false - in: path - name: ticketId - required: true - schema: - type: string - style: simple - - explode: false + - description: Fireblocks transaction unique identifier + explode: false in: path - name: termId + name: txId required: true schema: + format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -30810,79 +30197,67 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferUpdateTicketTerm" + $ref: "#/components/schemas/TRLinkSetTransactionTravelRuleMessageIdRequest" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferTicketTermResponse" - description: Smart Transfer ticket term updated successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - summary: Update ticket leg (term) + $ref: "#/components/schemas/TRLinkSetTransactionTravelRuleMessageIdResponse" + description: Travel rule message ID set successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Set transaction travel rule message ID tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.updateTicketTerm(smartTransferApiUpdateTicketTermRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.setTRLinkTransactionTravelRuleMessageId(tRLinkApiSetTRLinkTransactionTravelRuleMessageIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().updateTicketTerm(smartTransferUpdateTicketTerm,\ - \ ticketId, termId, idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.tRLink().setTRLinkTransactionTravelRuleMessageId(tRLinkSetTransactionTravelRuleMessageIdRequest,\ + \ txId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.update_ticket_term(smart_transfer_update_ticket_term,\ - \ ticket_id, term_id, idempotency_key);" + code: "response = fireblocks.t_r_link.set_t_r_link_transaction_travel_rule_message_id(t_r_link_set_transaction_travel_rule_message_id_request,\ + \ tx_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.updateTicketTerm(smartTransferApiUpdateTicketTermRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.setTRLinkTransactionTravelRuleMessageId(tRLinkApiSetTRLinkTransactionTravelRuleMessageIdRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().updateTicketTerm(smartTransferUpdateTicketTerm,\ - \ ticketId, termId, idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.tRLink().setTRLinkTransactionTravelRuleMessageId(tRLinkSetTransactionTravelRuleMessageIdRequest,\ + \ txId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.update_ticket_term(smart_transfer_update_ticket_term,\ - \ ticket_id, term_id, idempotency_key);" + source: "response = fireblocks.t_r_link.set_t_r_link_transaction_travel_rule_message_id(t_r_link_set_transaction_travel_rule_message_id_request,\ + \ tx_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/{ticketId}/terms/{termId}/fund: - put: - description: "Set funding source for ticket term (in case of ASYNC tickets,\ - \ this will execute transfer immediately). Endpoint Permission: Admin, Non-Signing\ - \ Admin, Signer, Approver, Editor." - operationId: fundTicketTerm + /screening/trlink/transaction/{txId}/destination/travel_rule_message_id: + post: + description: Associates a Travel Rule Message ID with a specific destination + in a multi-destination Fireblocks transaction. Matches destinations by amount + and peer path. + operationId: setTRLinkDestinationTravelRuleMessageId parameters: - - explode: false - in: path - name: ticketId - required: true - schema: - type: string - style: simple - - explode: false + - description: Fireblocks transaction unique identifier + explode: false in: path - name: termId + name: txId required: true schema: + format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -30900,182 +30275,98 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferFundTerm" + $ref: "#/components/schemas/TRLinkSetDestinationTravelRuleMessageIdRequest" required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketTermResponse" - description: Funding source for ticket term successfully done - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": + "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Define funding source + $ref: "#/components/schemas/TRLinkSetDestinationTravelRuleMessageIdResponse" + description: Destination travel rule message ID set successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Set destination travel rule message ID tags: - - Smart Transfer + - TRLink x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.fundTicketTerm(smartTransferApiFundTicketTermRequest);" + code: "const response: Promise>\ + \ = fireblocks.tRLink.setTRLinkDestinationTravelRuleMessageId(tRLinkApiSetTRLinkDestinationTravelRuleMessageIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().fundTicketTerm(smartTransferFundTerm, ticketId,\ - \ termId, idempotencyKey);" + code: "CompletableFuture>\ + \ response = fireblocks.tRLink().setTRLinkDestinationTravelRuleMessageId(tRLinkSetDestinationTravelRuleMessageIdRequest,\ + \ txId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.fund_ticket_term(smart_transfer_fund_term,\ - \ ticket_id, term_id, idempotency_key);" + code: "response = fireblocks.t_r_link.set_t_r_link_destination_travel_rule_message_id(t_r_link_set_destination_travel_rule_message_id_request,\ + \ tx_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.fundTicketTerm(smartTransferApiFundTicketTermRequest);" + source: "const response: Promise>\ + \ = fireblocks.tRLink.setTRLinkDestinationTravelRuleMessageId(tRLinkApiSetTRLinkDestinationTravelRuleMessageIdRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().fundTicketTerm(smartTransferFundTerm, ticketId,\ - \ termId, idempotencyKey);" + source: "CompletableFuture>\ + \ response = fireblocks.tRLink().setTRLinkDestinationTravelRuleMessageId(tRLinkSetDestinationTravelRuleMessageIdRequest,\ + \ txId, idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.fund_ticket_term(smart_transfer_fund_term,\ - \ ticket_id, term_id, idempotency_key);" + source: "response = fireblocks.t_r_link.set_t_r_link_destination_travel_rule_message_id(t_r_link_set_destination_travel_rule_message_id_request,\ + \ tx_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart_transfers/{ticketId}/terms/{termId}/dvp/approve: - put: - description: Set funding source for ticket term and creating approving transaction - for contract to transfer asset - operationId: approveDvPTicketTerm - parameters: - - explode: false - in: path - name: ticketId - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: termId - required: true - schema: - type: string - 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/SmartTransferApproveTerm" - required: true + /management/ota: + get: + description: Returns current OTA status + operationId: getOtaStatus responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketTermResponse" - description: Creating approval transaction started - "403": + "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized + $ref: "#/components/schemas/GetOtaStatusResponse" + description: Current OTA status "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Set funding source and approval + description: Configuration not found for tenant + summary: Returns current OTA status tags: - - Smart Transfer + - OTA (Beta) x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.approveDvPTicketTerm(smartTransferApiApproveDvPTicketTermRequest);" + code: "const response: Promise>\ + \ = fireblocks.oTABeta.getOtaStatus();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().approveDvPTicketTerm(smartTransferApproveTerm,\ - \ ticketId, termId, idempotencyKey);" + code: CompletableFuture> response = fireblocks.oTABeta().getOtaStatus(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.approve_dv_p_ticket_term(smart_transfer_approve_term,\ - \ ticket_id, term_id, idempotency_key);" + code: response = fireblocks.o_t_a_beta.get_ota_status(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.approveDvPTicketTerm(smartTransferApiApproveDvPTicketTermRequest);" + source: "const response: Promise>\ + \ = fireblocks.oTABeta.getOtaStatus();" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().approveDvPTicketTerm(smartTransferApproveTerm,\ - \ ticketId, termId, idempotencyKey);" + source: CompletableFuture> response = fireblocks.oTABeta().getOtaStatus(); - lang: Python - source: "response = fireblocks.smart_transfer.approve_dv_p_ticket_term(smart_transfer_approve_term,\ - \ ticket_id, term_id, idempotency_key);" - x-content-type: application/json + source: response = fireblocks.o_t_a_beta.get_ota_status(); x-accepts: - application/json - /smart-transfers/{ticketId}/terms/{termId}/manually-fund: put: description: |- - Manually set ticket term transaction. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: manuallyFundTicketTerm + Enable or disable transactions to One Time Addresses (Non Whitelisted addresses). + Learn more about [One Time Addresses](https://support.fireblocks.io/hc/en-us/articles/4409104568338-One-Time-Address-OTA-feature) + operationId: setOtaStatus parameters: - - explode: false - in: path - name: ticketId - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: termId - required: true - schema: - type: string - 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\ @@ -31091,359 +30382,223 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SmartTransferManuallyFundTerm" + $ref: "#/components/schemas/SetOtaStatusRequest" required: true responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferTicketTermResponse" - description: Successfully manually set ticket term transaction - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferNotFoundResponse" - description: Not found - "422": + "202": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Manually add term transaction + $ref: "#/components/schemas/SetOtaStatusResponse" + description: Successfully updated OTA status + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + description: Bad request + "409": + description: Similar request already pending + "500": + description: Internal server error + summary: Enable or disable transactions to OTA tags: - - Smart Transfer - x-rate-limit-category: write + - OTA (Beta) + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.manuallyFundTicketTerm(smartTransferApiManuallyFundTicketTermRequest);" + code: "const response: Promise>\ + \ = fireblocks.oTABeta.setOtaStatus(oTABetaApiSetOtaStatusRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().manuallyFundTicketTerm(smartTransferManuallyFundTerm,\ - \ ticketId, termId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.oTABeta().setOtaStatus(setOtaStatusRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.manually_fund_ticket_term(smart_transfer_manually_fund_term,\ - \ ticket_id, term_id, idempotency_key);" + code: "response = fireblocks.o_t_a_beta.set_ota_status(set_ota_status_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.manuallyFundTicketTerm(smartTransferApiManuallyFundTicketTermRequest);" + source: "const response: Promise>\ + \ = fireblocks.oTABeta.setOtaStatus(oTABetaApiSetOtaStatusRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().manuallyFundTicketTerm(smartTransferManuallyFundTerm,\ - \ ticketId, termId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.oTABeta().setOtaStatus(setOtaStatusRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.smart_transfer.manually_fund_ticket_term(smart_transfer_manually_fund_term,\ - \ ticket_id, term_id, idempotency_key);" + source: "response = fireblocks.o_t_a_beta.set_ota_status(set_ota_status_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /smart-transfers/settings/user-groups: + /management/workspace_status: get: description: |- - Get Smart Transfer user groups. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: getSmartTransferUserGroups - parameters: [] + Returns current workspace status (Beta). + **Note**: + - This endpoint is now in Beta, disabled for general availability at this time. + - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. + + Endpoint Permission: Admin, Non-Signing Admin. + operationId: getWorkspaceStatus responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferUserGroupsResponse" - description: User group settings were returned successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Get user group + $ref: "#/components/schemas/GetWorkspaceStatusResponse" + description: Current workspace status + "404": + description: Workspace not found + summary: Returns current workspace status tags: - - Smart Transfer + - Workspace Status (Beta) x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.getSmartTransferUserGroups();" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response - = fireblocks.smartTransfer().getSmartTransferUserGroups(); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.smart_transfer.get_smart_transfer_user_groups(); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.getSmartTransferUserGroups();" - - lang: Java - source: CompletableFuture> response - = fireblocks.smartTransfer().getSmartTransferUserGroups(); - - lang: Python - source: response = fireblocks.smart_transfer.get_smart_transfer_user_groups(); - x-accepts: - - application/json - post: - description: |- - Set Smart Transfers user group to receive email notifications for Smart Transfers. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. - operationId: setUserGroups - 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/SmartTransferSetUserGroups" - required: true - responses: - "201": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferUserGroupsResponse" - description: User group settings were set successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized - "422": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferBadRequestResponse" - description: Bad Request - summary: Set user group - tags: - - Smart Transfer - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.setUserGroups(smartTransferApiSetUserGroupsRequest);" + code: "const response: Promise>\ + \ = fireblocks.workspaceStatusBeta.getWorkspaceStatus();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().setUserGroups(smartTransferSetUserGroups,\ - \ idempotencyKey);" + code: CompletableFuture> response + = fireblocks.workspaceStatusBeta().getWorkspaceStatus(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.smart_transfer.set_user_groups(smart_transfer_set_user_groups,\ - \ idempotency_key);" + code: response = fireblocks.workspace_status_beta.get_workspace_status(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.setUserGroups(smartTransferApiSetUserGroupsRequest);" + source: "const response: Promise>\ + \ = fireblocks.workspaceStatusBeta.getWorkspaceStatus();" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.smartTransfer().setUserGroups(smartTransferSetUserGroups,\ - \ idempotencyKey);" + source: CompletableFuture> response + = fireblocks.workspaceStatusBeta().getWorkspaceStatus(); - lang: Python - source: "response = fireblocks.smart_transfer.set_user_groups(smart_transfer_set_user_groups,\ - \ idempotency_key);" - x-content-type: application/json + source: response = fireblocks.workspace_status_beta.get_workspace_status(); x-accepts: - application/json - /smart_transfers/statistic: + /tap/active_policy: get: - description: Get smart transfer statistic - operationId: getSmartTransferStatistic + description: "Legacy Endpoint – Returns the active policy and its validation.\ + \ \n**Note:** \n- This endpoint will remain available for the foreseeable\ + \ future and is not deprecated. - The `getActivePolicy` endpoint under policy/paths\ + \ provides policy type-specific operations and improved functionality. - These\ + \ endpoints are currently in beta and might be subject to changes.\nIf you\ + \ want to participate and learn more about the Fireblocks TAP, please contact\ + \ your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" + operationId: getActivePolicyLegacy responses: "200": content: application/json: schema: - $ref: "#/components/schemas/SmartTransferStatistic" - description: Smart Transfer ticket statistic returned successfully - "403": - content: - application/json: - schema: - $ref: "#/components/schemas/SmartTransferForbiddenResponse" - description: Unauthorized + $ref: "#/components/schemas/LegacyPolicyAndValidationResponse" + description: A policy object + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get smart transfers statistic + summary: Get the active policy and its validation tags: - - Smart Transfer + - Policy Editor (Beta) x-rate-limit-category: query x-readme: code-samples: + - language: python + code: policy = fireblocks.get_active_policy() + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: const policy = await fireblocks.getActivePolicy(); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.smartTransfer.getSmartTransferStatistic();" + code: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.getActivePolicyLegacy();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.smartTransfer().getSmartTransferStatistic(); + code: CompletableFuture> + response = fireblocks.policyEditorBeta().getActivePolicyLegacy(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.smart_transfer.get_smart_transfer_statistic(); + code: response = fireblocks.policy_editor_beta.get_active_policy_legacy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.smartTransfer.getSmartTransferStatistic();" + source: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.getActivePolicyLegacy();" - lang: Java - source: CompletableFuture> response = - fireblocks.smartTransfer().getSmartTransferStatistic(); + source: CompletableFuture> + response = fireblocks.policyEditorBeta().getActivePolicyLegacy(); - lang: Python - source: response = fireblocks.smart_transfer.get_smart_transfer_statistic(); + source: response = fireblocks.policy_editor_beta.get_active_policy_legacy(); x-accepts: - application/json - /tags: + /tap/draft: get: - description: Retrieve a paged list of all tags according to filters. - operationId: getTags - parameters: - - description: Page cursor to get the next page. - example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Maximum number of items in the page - explode: true - in: query - name: pageSize - required: false - schema: - default: 100 - maximum: 100 - minimum: 1 - type: number - style: form - - description: Label prefix to filter by. - example: VIP - explode: true - in: query - name: label - required: false - schema: - type: string - style: form - - description: List of tag IDs to filter by. - explode: true - in: query - name: tagIds - required: false - schema: - items: - format: uuid - type: string - maxItems: 100 - type: array - style: form - - description: Whether to include pending approval requests info. - explode: true - in: query - name: includePendingApprovalsInfo - required: false - schema: - default: false - type: boolean - style: form - - explode: true - in: query - name: isProtected - required: false - schema: - type: boolean - style: form - - description: Filter by tag type - explode: true - in: query - name: type - required: false - schema: - items: - $ref: "#/components/schemas/TagType" - type: array - style: form + description: "Legacy Endpoint – Returns the active draft and its validation.\ + \ \n**Note:** \n- This endpoint will remain available for the foreseeable\ + \ future and is not deprecated. - The `getDraft` endpoint under policy/paths\ + \ provides policy type-specific operations and improved functionality. - These\ + \ endpoints are currently in beta and might be subject to changes.\nIf you\ + \ want to participate and learn more about the Fireblocks TAP, please contact\ + \ your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" + operationId: getDraftLegacy responses: "200": content: application/json: schema: - $ref: "#/components/schemas/TagsPagedResponse" - description: Tags fetched successfully + $ref: "#/components/schemas/LegacyDraftReviewAndValidationResponse" + description: A draft validation response object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Get list of tags + default: + $ref: "#/components/responses/Error" + summary: Get the active draft tags: - - Tags - x-rate-limit-category: query + - Policy Editor (Beta) + x-rate-limit-category: read x-readme: code-samples: + - language: python + code: policy = fireblocks.get_draft() + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: const policy = await fireblocks.getDraft(); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> =\ - \ fireblocks.tags.getTags(tagsApiGetTagsRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.getDraftLegacy();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tags().getTags(pageCursor,\ - \ pageSize, label, tagIds, includePendingApprovalsInfo, isProtected, type);" + code: CompletableFuture> + response = fireblocks.policyEditorBeta().getDraftLegacy(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tags.get_tags(page_cursor, page_size, label,\ - \ tag_ids, include_pending_approvals_info, is_protected, type);" + code: response = fireblocks.policy_editor_beta.get_draft_legacy(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.tags.getTags(tagsApiGetTagsRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.getDraftLegacy();" - lang: Java - source: "CompletableFuture> response = fireblocks.tags().getTags(pageCursor,\ - \ pageSize, label, tagIds, includePendingApprovalsInfo, isProtected, type);" + source: CompletableFuture> + response = fireblocks.policyEditorBeta().getDraftLegacy(); - lang: Python - source: "response = fireblocks.tags.get_tags(page_cursor, page_size, label,\ - \ tag_ids, include_pending_approvals_info, is_protected, type);" + source: response = fireblocks.policy_editor_beta.get_draft_legacy(); x-accepts: - application/json post: - description: |- - Create a new tag. - Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER. - operationId: createTag + description: "Legacy Endpoint – Send publish request of certain draft id and\ + \ returns the response. \n**Note:** \n- This endpoint will remain available\ + \ for the foreseeable future and is not deprecated. - The `publishDraft` endpoint\ + \ under policy/paths provides improved functionality and better performance.\ + \ - These endpoints are currently in beta and might be subject to changes.\n\ + If you want to participate and learn more about the Fireblocks TAP, please\ + \ contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" + operationId: publishDraftLegacy 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\ @@ -31460,153 +30615,144 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CreateTagRequest" + $ref: "#/components/schemas/LegacyPublishDraftRequest" required: true responses: "201": content: application/json: schema: - $ref: "#/components/schemas/Tag" - description: Tag created successfully + $ref: "#/components/schemas/LegacyPublishResult" + description: A policy publish result object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Create a new tag + default: + $ref: "#/components/responses/Error" + summary: Send publish request for a certain draft id tags: - - Tags + - Policy Editor (Beta) x-rate-limit-category: write x-readme: code-samples: + - language: python + code: policy = fireblocks.publish_draft() + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: const policy = await fireblocks.publishDraft(); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.tags.createTag(tagsApiCreateTagRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.publishDraftLegacy(policyEditorBetaApiPublishDraftLegacyRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tags().createTag(createTagRequest,\ + code: "CompletableFuture> response = fireblocks.policyEditorBeta().publishDraftLegacy(legacyPublishDraftRequest,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tags.create_tag(create_tag_request, idempotency_key);" + code: "response = fireblocks.policy_editor_beta.publish_draft_legacy(legacy_publish_draft_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tags.createTag(tagsApiCreateTagRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.publishDraftLegacy(policyEditorBetaApiPublishDraftLegacyRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tags().createTag(createTagRequest,\ + source: "CompletableFuture> response = fireblocks.policyEditorBeta().publishDraftLegacy(legacyPublishDraftRequest,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.tags.create_tag(create_tag_request, idempotency_key);" + source: "response = fireblocks.policy_editor_beta.publish_draft_legacy(legacy_publish_draft_request,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /tags/{tagId}: - delete: - description: |- - Delete the specified tag. - Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver. - operationId: deleteTag + put: + description: "Legacy Endpoint – Update the draft and return its validation.\ + \ \n**Note:** \n- This endpoint will remain available for the foreseeable\ + \ future and is not deprecated. - The `updateDraft` endpoint under policy/paths\ + \ provides policy type-specific operations and improved functionality. - These\ + \ endpoints are currently in beta and might be subject to changes.\nIf you\ + \ want to participate and learn more about the Fireblocks TAP, please contact\ + \ your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.\n" + operationId: updateDraftLegacy parameters: - - description: The ID of the tag to retrieve + - 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: path - name: tagId - required: true + in: header + name: Idempotency-Key + required: false schema: - format: uuid type: string style: simple - responses: - "204": - description: Tag was deleted successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - summary: Delete a tag - tags: - - Tags - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.tags.deleteTag(tagsApiDeleteTagRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: CompletableFuture> response = fireblocks.tags().deleteTag(tagId); - name: Fireblocks SDK Java example - - language: python - code: response = fireblocks.tags.delete_tag(tag_id); - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.tags.deleteTag(tagsApiDeleteTagRequest);" - - lang: Java - source: CompletableFuture> response = fireblocks.tags().deleteTag(tagId); - - lang: Python - source: response = fireblocks.tags.delete_tag(tag_id); - x-accepts: - - application/json - get: - description: Retrieve an existing tag by ID. - operationId: getTag - parameters: - - description: The ID of the tag to retrieve - explode: false - in: path - name: tagId + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/LegacyPolicyRules" required: true - schema: - format: uuid - type: string - style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/Tag" - description: A tag object + $ref: "#/components/schemas/LegacyDraftReviewAndValidationResponse" + description: A draft validation response object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Get a tag + default: + $ref: "#/components/responses/Error" + summary: Update the draft with a new set of rules tags: - - Tags - x-rate-limit-category: read + - Policy Editor (Beta) + x-rate-limit-category: write x-readme: code-samples: + - language: python + code: policy = fireblocks.update_draft() + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: const policy = await fireblocks.updateDraft(); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.tags.getTag(tagsApiGetTagRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.updateDraftLegacy(policyEditorBetaApiUpdateDraftLegacyRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tags().getTag(tagId); + code: "CompletableFuture>\ + \ response = fireblocks.policyEditorBeta().updateDraftLegacy(legacyPolicyRules,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.tags.get_tag(tag_id); + code: "response = fireblocks.policy_editor_beta.update_draft_legacy(legacy_policy_rules,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tags.getTag(tagsApiGetTagRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.updateDraftLegacy(policyEditorBetaApiUpdateDraftLegacyRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.tags().getTag(tagId); + source: "CompletableFuture>\ + \ response = fireblocks.policyEditorBeta().updateDraftLegacy(legacyPolicyRules,\ + \ idempotencyKey);" - lang: Python - source: response = fireblocks.tags.get_tag(tag_id); + source: "response = fireblocks.policy_editor_beta.update_draft_legacy(legacy_policy_rules,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - patch: - description: |- - Update an existing specified tag. - Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver. - operationId: updateTag + /tap/publish: + post: + description: "Send publish request of set of policy rules and returns the response.\ + \ \n**Note:** These endpoints are currently in beta and might be subject to\ + \ changes.\nIf you want to participate and learn more about the Fireblocks\ + \ TAP, please contact your Fireblocks Customer Success Manager or send an\ + \ email to CSM@fireblocks.com.\n" + operationId: publishPolicyRules parameters: - - description: The ID of the tag to update - explode: false - in: path - name: tagId - required: true - schema: - format: uuid - type: string - 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\ @@ -31622,287 +30768,261 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateTagRequest" + $ref: "#/components/schemas/LegacyPolicyRules" required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/Tag" - description: A tag object + $ref: "#/components/schemas/LegacyPublishResult" + description: A policy publish result object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - summary: Update a tag + default: + $ref: "#/components/responses/Error" + summary: Send publish request for a set of policy rules tags: - - Tags + - Policy Editor (Beta) x-rate-limit-category: write x-readme: code-samples: + - language: python + code: policy = fireblocks.publish_rules() + name: Fireblocks SDK Python example (Legacy) + - language: javascript + code: const policy = await fireblocks.publishRules(); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.tags.updateTag(tagsApiUpdateTagRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tags().updateTag(updateTagRequest,\ - \ tagId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.policyEditorBeta().publishPolicyRules(legacyPolicyRules,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tags.update_tag(update_tag_request, tag_id,\ + code: "response = fireblocks.policy_editor_beta.publish_policy_rules(legacy_policy_rules,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tags.updateTag(tagsApiUpdateTagRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tags().updateTag(updateTagRequest,\ - \ tagId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.policyEditorBeta().publishPolicyRules(legacyPolicyRules,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.tags.update_tag(update_tag_request, tag_id,\ + source: "response = fireblocks.policy_editor_beta.publish_policy_rules(legacy_policy_rules,\ \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /tags/approval_requests/{id}: + /policy/active_policy: get: - description: Get an approval request by id - operationId: getApprovalRequest + description: | + Returns the active policy and its validation for a specific policy type. + + **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com. + + Endpoint Permissions: Owner, Admin, Non-Signing Admin. + operationId: getActivePolicy parameters: - - explode: false - in: path - name: id + - description: "The policy type(s) to retrieve. Can be a single type or multiple\ + \ types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT)." + explode: true + in: query + name: policyType required: true schema: - example: "12345" - format: numeric - type: string - style: simple + $ref: "#/components/schemas/PolicyType" + style: form responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ApprovalRequest" - description: Approval request fetched successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - description: Unauthorized - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - description: Approval request not found + $ref: "#/components/schemas/PolicyAndValidationResponse" + description: A policy object with validation headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get an approval request by id + summary: Get the active policy and its validation by policy type tags: - - Tags - x-rate-limit-category: read + - Policy Editor V2 (Beta) + x-rate-limit-category: query x-readme: code-samples: + - language: javascript + code: | + // Single policy type + const policy = await fireblocks.getActivePolicy({policyType: "TRANSFER"}); + // Multiple policy types + const policy = await fireblocks.getActivePolicy({policyType: ["TRANSFER", "MINT"]}); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.tags.getApprovalRequest(tagsApiGetApprovalRequestRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorV2Beta.getActivePolicy(policyEditorV2BetaApiGetActivePolicyRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.tags().getApprovalRequest(id); + code: CompletableFuture> response + = fireblocks.policyEditorV2Beta().getActivePolicy(policyType); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.tags.get_approval_request(id); + code: response = fireblocks.policy_editor_v2_beta.get_active_policy(policy_type); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tags.getApprovalRequest(tagsApiGetApprovalRequestRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorV2Beta.getActivePolicy(policyEditorV2BetaApiGetActivePolicyRequest);" - lang: Java - source: CompletableFuture> response = fireblocks.tags().getApprovalRequest(id); + source: CompletableFuture> response + = fireblocks.policyEditorV2Beta().getActivePolicy(policyType); - lang: Python - source: response = fireblocks.tags.get_approval_request(id); + source: response = fireblocks.policy_editor_v2_beta.get_active_policy(policy_type); x-accepts: - application/json - /tags/approval_requests/{id}/cancel: - post: - description: Cancel an approval request by id. Can only cancel requests in PENDING - status. Returns 202 Accepted when the cancellation is processed. - operationId: cancelApprovalRequest + /policy/draft: + get: + description: "Returns the active draft and its validation for a specific policy\ + \ type. \n**Note:** These endpoints are currently in beta and might be subject\ + \ to changes.\n" + operationId: getDraft 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 - - explode: false - in: path - name: id + - description: "The policy type(s) to retrieve. Can be a single type or multiple\ + \ types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT)." + explode: true + in: query + name: policyType required: true schema: - example: "12345" - format: numeric - type: string - style: simple + $ref: "#/components/schemas/PolicyType" + style: form responses: - "202": - description: Approval request cancellation processed - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "401": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - description: Unauthorized - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "404": - description: Approval request not found - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "409": + "200": content: application/json: schema: - $ref: "#/components/schemas/ErrorResponse" - description: Invalid approval request state - cannot cancel request that - is not in PENDING status + $ref: "#/components/schemas/DraftReviewAndValidationResponse" + description: A draft validation response object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Cancel an approval request by id + summary: Get the active draft by policy type tags: - - Tags - x-rate-limit-category: write + - Policy Editor V2 (Beta) + x-rate-limit-category: read x-readme: code-samples: + - language: javascript + code: | + // Single policy type + const draft = await fireblocks.getDraft({policyType: "TRANSFER"}); + // Multiple policy types + const draft = await fireblocks.getDraft({policyType: ["TRANSFER", "MINT"]}); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise> = fireblocks.tags.cancelApprovalRequest(tagsApiCancelApprovalRequestRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorV2Beta.getDraft(policyEditorV2BetaApiGetDraftRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.tags().cancelApprovalRequest(id,\ - \ idempotencyKey);" + code: CompletableFuture> response + = fireblocks.policyEditorV2Beta().getDraft(policyType); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.tags.cancel_approval_request(id, idempotency_key);" + code: response = fireblocks.policy_editor_v2_beta.get_draft(policy_type); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.tags.cancelApprovalRequest(tagsApiCancelApprovalRequestRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorV2Beta.getDraft(policyEditorV2BetaApiGetDraftRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.tags().cancelApprovalRequest(id,\ - \ idempotencyKey);" + source: CompletableFuture> response + = fireblocks.policyEditorV2Beta().getDraft(policyType); - lang: Python - source: "response = fireblocks.tags.cancel_approval_request(id, idempotency_key);" + source: response = fireblocks.policy_editor_v2_beta.get_draft(policy_type); x-accepts: - application/json - /cosigners: - get: - description: |- - Get all workspace cosigners (paginated). - **Note:** These endpoints are currently in beta and might be subject to changes. - Endpoint Permission: Admin and Non-Signing Admin. - operationId: getCosigners + post: + description: "Send publish request of certain draft id and returns the response.\ + \ \n**Note:** These endpoints are currently in beta and might be subject to\ + \ changes.\nIf you want to participate and learn more about the Fireblocks\ + \ Policy Editor, please contact your Fireblocks Customer Success Manager or\ + \ send an email to CSM@fireblocks.com.\n" + operationId: publishDraft parameters: - - description: ASC / DESC ordering (default DESC) - example: ASC - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC - type: string - style: form - - description: Cursor of the required page - explode: true - in: query - name: pageCursor + - 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: form - - description: Maximum number of items in the page - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - default: 10 - maximum: 100 - minimum: 1 - type: number - style: form + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PublishDraftRequest" + required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/CosignersPaginatedResponse" - description: A paginated response containing Cosigner objects + $ref: "#/components/schemas/PublishResult" + description: A policy publish result object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get all cosigners + summary: Send publish request for a certain draft id tags: - - Cosigners (Beta) - x-rate-limit-category: query + - Policy Editor V2 (Beta) + x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: | + const policy = await fireblocks.publishDraft({policyTypes: ["TRANSFER"], draftId: "draft-123"}); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.cosignersBeta.getCosigners(cosignersBetaApiGetCosignersRequest);" + code: "const response: Promise> = fireblocks.policyEditorV2Beta.publishDraft(policyEditorV2BetaApiPublishDraftRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.cosignersBeta().getCosigners(order, pageCursor, pageSize);" + code: "CompletableFuture> response = fireblocks.policyEditorV2Beta().publishDraft(publishDraftRequest,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.get_cosigners(order, page_cursor,\ - \ page_size);" + code: "response = fireblocks.policy_editor_v2_beta.publish_draft(publish_draft_request,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.cosignersBeta.getCosigners(cosignersBetaApiGetCosignersRequest);" + source: "const response: Promise> = fireblocks.policyEditorV2Beta.publishDraft(policyEditorV2BetaApiPublishDraftRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.cosignersBeta().getCosigners(order, pageCursor, pageSize);" + source: "CompletableFuture> response = fireblocks.policyEditorV2Beta().publishDraft(publishDraftRequest,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.cosigners_beta.get_cosigners(order, page_cursor,\ - \ page_size);" + source: "response = fireblocks.policy_editor_v2_beta.publish_draft(publish_draft_request,\ + \ idempotency_key);" + x-content-type: application/json x-accepts: - application/json - post: - description: |- - Add a new cosigner. The cosigner will be pending pairing until the API key is manually paired - Endpoint Permission: Admin and Non-Signing Admin. - operationId: addCosigner + put: + description: "Update the draft and return its validation for specific policy\ + \ types. \n**Note:** These endpoints are currently in beta and might be subject\ + \ to changes.\n" + operationId: updateDraft 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\ @@ -31919,418 +31039,334 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/AddCosignerRequest" + $ref: "#/components/schemas/UpdateDraftRequest" required: true responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/AddCosignerResponse" - description: Pending cosigner added + $ref: "#/components/schemas/DraftReviewAndValidationResponse" + description: A draft validation response object headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Add cosigner + summary: Update the draft with a new set of rules by policy types tags: - - Cosigners (Beta) + - Policy Editor V2 (Beta) x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: | + const draft = await fireblocks.updateDraft({policyTypes: ["TRANSFER"], rules: rules}); + name: Fireblocks SDK Javascript example - language: typescript - code: "const response: Promise>\ - \ = fireblocks.cosignersBeta.addCosigner(cosignersBetaApiAddCosignerRequest);" + code: "const response: Promise>\ + \ = fireblocks.policyEditorV2Beta.updateDraft(policyEditorV2BetaApiUpdateDraftRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.cosignersBeta().addCosigner(addCosignerRequest,\ + code: "CompletableFuture>\ + \ response = fireblocks.policyEditorV2Beta().updateDraft(updateDraftRequest,\ \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.add_cosigner(add_cosigner_request,\ + code: "response = fireblocks.policy_editor_v2_beta.update_draft(update_draft_request,\ \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.cosignersBeta.addCosigner(cosignersBetaApiAddCosignerRequest);" + source: "const response: Promise>\ + \ = fireblocks.policyEditorV2Beta.updateDraft(policyEditorV2BetaApiUpdateDraftRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.cosignersBeta().addCosigner(addCosignerRequest,\ + source: "CompletableFuture>\ + \ response = fireblocks.policyEditorV2Beta().updateDraft(updateDraftRequest,\ \ idempotencyKey);" - lang: Python - source: "response = fireblocks.cosigners_beta.add_cosigner(add_cosigner_request,\ + source: "response = fireblocks.policy_editor_v2_beta.update_draft(update_draft_request,\ \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /cosigners/{cosignerId}: + /management/users: get: description: |- - Get a cosigner by ID. - **Note:** These endpoints are currently in beta and might be subject to changes. - Endpoint Permission: Admin and Non-Signing Admin. - operationId: getCosigner - parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple + 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: Admin, Non-Signing Admin. + operationId: getConsoleUsers responses: "200": content: application/json: schema: - $ref: "#/components/schemas/Cosigner" - description: A cosigner object + $ref: "#/components/schemas/GetConsoleUsersResponse" + description: got console users + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + 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/ErrorResponse" + description: Lacking permissions. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Internal error. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get cosigner + summary: Get console users tags: - - Cosigners (Beta) - x-rate-limit-category: read + - Console User + x-rate-limit-category: query x-readme: code-samples: + - language: javascript + code: const consoleUsers = await fireblocks.getConsoleUsers(); + name: Fireblocks SDK Javascript example + - language: python + code: consoleUsers = fireblocks.get_console_users() + name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.cosignersBeta.getCosigner(cosignersBetaApiGetCosignerRequest);" + code: "const response: Promise>\ + \ = fireblocks.consoleUser.getConsoleUsers();" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = fireblocks.cosignersBeta().getCosigner(cosignerId); + code: CompletableFuture> response = + fireblocks.consoleUser().getConsoleUsers(); name: Fireblocks SDK Java example - language: python - code: response = fireblocks.cosigners_beta.get_cosigner(cosigner_id); + code: response = fireblocks.console_user.get_console_users(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.cosignersBeta.getCosigner(cosignersBetaApiGetCosignerRequest);" + source: "const response: Promise>\ + \ = fireblocks.consoleUser.getConsoleUsers();" - lang: Java - source: CompletableFuture> response = fireblocks.cosignersBeta().getCosigner(cosignerId); + source: CompletableFuture> response = + fireblocks.consoleUser().getConsoleUsers(); - lang: Python - source: response = fireblocks.cosigners_beta.get_cosigner(cosigner_id); + source: response = fireblocks.console_user.get_console_users(); x-accepts: - application/json - patch: + post: description: |- - Rename a cosigner by ID. - **Note:** These endpoints are currently in beta and might be subject to changes. - Endpoint Permission: Admin and Non-Signing Admin. - operationId: renameCosigner + Create console users in your workspace + - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. + Learn more about Fireblocks Users management in the following [guide](https://developers.fireblocks.com/docs/manage-users). + Endpoint Permission: Admin, Non-Signing Admin. + operationId: createConsoleUser parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f + - 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: path - name: cosignerId - required: true + in: header + name: Idempotency-Key + required: false schema: - format: uuid type: string style: simple requestBody: content: application/json: schema: - $ref: "#/components/schemas/RenameCosigner" - required: true + $ref: "#/components/schemas/CreateConsoleUser" responses: "200": + description: User creation approval request has been sent + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + description: bad request + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": content: application/json: schema: - $ref: "#/components/schemas/Cosigner" - description: A cosigner object + $ref: "#/components/schemas/ErrorResponse" + 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/ErrorResponse" + description: Lacking permissions. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Internal error. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Rename cosigner + summary: Create console user tags: - - Cosigners (Beta) + - Console User x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: "const res = await fireblocks.createConsoleUser(firstName, lastName,\ + \ email, role);" + name: Fireblocks SDK Javascript example + - language: python + code: "res = fireblocks.create_console_user(first_name, last_name, email,\ + \ role)" + name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.cosignersBeta.renameCosigner(cosignersBetaApiRenameCosignerRequest);" + code: "const response: Promise> = fireblocks.consoleUser.createConsoleUser(consoleUserApiCreateConsoleUserRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.cosignersBeta().renameCosigner(renameCosigner,\ - \ cosignerId);" + code: "CompletableFuture> response = fireblocks.consoleUser().createConsoleUser(createConsoleUser,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.rename_cosigner(rename_cosigner,\ - \ cosigner_id);" + code: "response = fireblocks.console_user.create_console_user(create_console_user,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.cosignersBeta.renameCosigner(cosignersBetaApiRenameCosignerRequest);" + source: "const response: Promise> = fireblocks.consoleUser.createConsoleUser(consoleUserApiCreateConsoleUserRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.cosignersBeta().renameCosigner(renameCosigner,\ - \ cosignerId);" + source: "CompletableFuture> response = fireblocks.consoleUser().createConsoleUser(createConsoleUser,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.cosigners_beta.rename_cosigner(rename_cosigner,\ - \ cosigner_id);" + source: "response = fireblocks.console_user.create_console_user(create_console_user,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /cosigners/{cosignerId}/api_keys: + /management/api_users: get: description: |- - Get all cosigner paired API keys (paginated). - **Note:** These endpoints are currently in beta and might be subject to changes. - Endpoint Permission: Admin and Non-Signing Admin. - operationId: getApiKeys - parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple - - description: ASC / DESC ordering (default DESC) - example: ASC - explode: true - in: query - name: order - required: false - schema: - default: DESC - enum: - - ASC - - DESC - type: string - style: form - - description: Cursor of the required page - explode: true - in: query - name: pageCursor - required: false - schema: - type: string - style: form - - description: Maximum number of items in the page - example: 10 - explode: true - in: query - name: pageSize - required: false - schema: - default: 10 - maximum: 100 - minimum: 1 - type: number - style: form + List all API keys in your workspace. + - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. + Endpoint Permission: Admin, Non-Signing Admin. + operationId: getApiUsers responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ApiKeysPaginatedResponse" - description: A paginated response containing ApiKey objects + $ref: "#/components/schemas/GetAPIUsersResponse" + description: got api users headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get all API keys - tags: - - Cosigners (Beta) - x-rate-limit-category: query - x-readme: - code-samples: - - language: typescript - code: "const response: Promise>\ - \ = fireblocks.cosignersBeta.getApiKeys(cosignersBetaApiGetApiKeysRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response\ - \ = fireblocks.cosignersBeta().getApiKeys(cosignerId, order, pageCursor,\ - \ pageSize);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.cosigners_beta.get_api_keys(cosigner_id, order,\ - \ page_cursor, page_size);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.cosignersBeta.getApiKeys(cosignersBetaApiGetApiKeysRequest);" - - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.cosignersBeta().getApiKeys(cosignerId, order, pageCursor,\ - \ pageSize);" - - lang: Python - source: "response = fireblocks.cosigners_beta.get_api_keys(cosigner_id, order,\ - \ page_cursor, page_size);" - x-accepts: - - application/json - /cosigners/{cosignerId}/api_keys/{apiKeyId}: - delete: - description: |- - Unpair an API key from a cosigner - Endpoint Permission: Admin and Non-Signing Admin. - operationId: unpairApiKey - parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple - - description: The unique identifier of the API key - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: apiKeyId - required: true - schema: - type: string - style: simple - responses: - "202": + "401": content: application/json: schema: - $ref: "#/components/schemas/ApiKey" - description: The API key object to be unpaired + $ref: "#/components/schemas/ErrorResponse" + description: Unauthorized. Missing / invalid JWT token in Authorization + header. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - Location: - $ref: "#/components/headers/Location" - default: - $ref: "#/components/responses/Error" - summary: Unpair API key - tags: - - Cosigners (Beta) - x-rate-limit-category: write - x-readme: - code-samples: - - language: typescript - code: "const response: Promise> = fireblocks.cosignersBeta.unpairApiKey(cosignersBetaApiUnpairApiKeyRequest);" - name: Fireblocks SDK TypeScript example - - language: java - code: "CompletableFuture> response = fireblocks.cosignersBeta().unpairApiKey(cosignerId,\ - \ apiKeyId);" - name: Fireblocks SDK Java example - - language: python - code: "response = fireblocks.cosigners_beta.unpair_api_key(cosigner_id,\ - \ api_key_id);" - name: Fireblocks SDK Python example - x-codeSamples: - - lang: TypeScript - source: "const response: Promise> = fireblocks.cosignersBeta.unpairApiKey(cosignersBetaApiUnpairApiKeyRequest);" - - lang: Java - source: "CompletableFuture> response = fireblocks.cosignersBeta().unpairApiKey(cosignerId,\ - \ apiKeyId);" - - lang: Python - source: "response = fireblocks.cosigners_beta.unpair_api_key(cosigner_id,\ - \ api_key_id);" - x-accepts: - - application/json - get: - description: |- - Get an API key by ID. - **Note:** These endpoints are currently in beta and might be subject to changes. - Endpoint Permission: Admin and Non-Signing Admin. - operationId: getApiKey - parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple - - description: The unique identifier of the API key - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: apiKeyId - required: true - schema: - type: string - style: simple - responses: - "200": + "403": content: application/json: schema: - $ref: "#/components/schemas/ApiKey" - description: An ApiKey object + $ref: "#/components/schemas/ErrorResponse" + description: Lacking permissions. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Internal error. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get API key + summary: Get API Keys tags: - - Cosigners (Beta) - x-rate-limit-category: read + - Api User + x-rate-limit-category: query x-readme: code-samples: + - language: javascript + code: const apiUsers = await fireblocks.getApiUsers(); + name: Fireblocks SDK Javascript example + - language: python + code: apiUsers = fireblocks.get_api_users() + name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.cosignersBeta.getApiKey(cosignersBetaApiGetApiKeyRequest);" + code: "const response: Promise>\ + \ = fireblocks.apiUser.getApiUsers();" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.cosignersBeta().getApiKey(cosignerId,\ - \ apiKeyId);" + code: CompletableFuture> response = fireblocks.apiUser().getApiUsers(); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.get_api_key(cosigner_id, api_key_id);" + code: response = fireblocks.api_user.get_api_users(); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.cosignersBeta.getApiKey(cosignersBetaApiGetApiKeyRequest);" + source: "const response: Promise>\ + \ = fireblocks.apiUser.getApiUsers();" - lang: Java - source: "CompletableFuture> response = fireblocks.cosignersBeta().getApiKey(cosignerId,\ - \ apiKeyId);" + source: CompletableFuture> response = fireblocks.apiUser().getApiUsers(); - lang: Python - source: "response = fireblocks.cosigners_beta.get_api_key(cosigner_id, api_key_id);" + source: response = fireblocks.api_user.get_api_users(); x-accepts: - application/json - patch: + post: description: |- - Update the callback handler of an API key - Endpoint Permission: Admin and Non-Signing Admin. - operationId: updateCallbackHandler + Create a new API key in your workspace. + Learn more about Fireblocks API Keys management in the following [guide](https://developers.fireblocks.com/docs/manage-api-keys). + Endpoint Permission: Admin, Non-Signing Admin. + operationId: createApiUser parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple - - description: The unique identifier of the API key - example: 44fcead0-7053-4831-a53a-df7fb90d440f + - 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: path - name: apiKeyId - required: true + in: header + name: Idempotency-Key + required: false schema: type: string style: simple @@ -32338,76 +31374,97 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateCallbackHandlerRequest" - required: true + $ref: "#/components/schemas/CreateAPIUser" responses: - "202": + "200": + description: User creation approval request has been sent + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + description: bad request + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": content: application/json: schema: - $ref: "#/components/schemas/UpdateCallbackHandlerResponse" - description: The API key object with the new callback handler + $ref: "#/components/schemas/ErrorResponse" + 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/ErrorResponse" + description: Lacking permissions. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Internal error. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - Location: - $ref: "#/components/headers/Location" default: $ref: "#/components/responses/Error" - summary: Update API key callback handler + summary: Create API Key tags: - - Cosigners (Beta) + - Api User x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: "const res = await fireblocks.createApiUser(name, role, csrForNewUser,\ + \ coSignerType, isFirstUser);" + name: Fireblocks SDK Javascript example + - language: python + code: "res = fireblocks.create_api_user(name, role, csr_pem, co_signer_setup,\ + \ co_signer_setup_is_first_user)" + name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise>\ - \ = fireblocks.cosignersBeta.updateCallbackHandler(cosignersBetaApiUpdateCallbackHandlerRequest);" + code: "const response: Promise> = fireblocks.apiUser.createApiUser(apiUserApiCreateApiUserRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.cosignersBeta().updateCallbackHandler(updateCallbackHandlerRequest,\ - \ cosignerId, apiKeyId);" + code: "CompletableFuture> response = fireblocks.apiUser().createApiUser(createAPIUser,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.update_callback_handler(update_callback_handler_request,\ - \ cosigner_id, api_key_id);" + code: "response = fireblocks.api_user.create_api_user(create_a_p_i_user,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.cosignersBeta.updateCallbackHandler(cosignersBetaApiUpdateCallbackHandlerRequest);" + source: "const response: Promise> = fireblocks.apiUser.createApiUser(apiUserApiCreateApiUserRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.cosignersBeta().updateCallbackHandler(updateCallbackHandlerRequest,\ - \ cosignerId, apiKeyId);" + source: "CompletableFuture> response = fireblocks.apiUser().createApiUser(createAPIUser,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.cosigners_beta.update_callback_handler(update_callback_handler_request,\ - \ cosigner_id, api_key_id);" + source: "response = fireblocks.api_user.create_api_user(create_a_p_i_user,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - put: + /management/users/{id}/reset_device: + post: description: |- - Pair an API key to a cosigner - Endpoint Permission: Admin and Non-Signing Admin. - operationId: pairApiKey + Resets mobile device for given console user, that user will need to do mobile onboarding again. + - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. + Endpoint Permission: Admin, Non-Signing Admin. + operationId: resetDevice parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple - - description: The unique identifier of the API key - example: 44fcead0-7053-4831-a53a-df7fb90d440f + - description: The ID of the console user explode: false in: path - name: apiKeyId + name: id required: true schema: type: string @@ -32423,86 +31480,86 @@ paths: schema: type: string style: simple - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PairApiKeyRequest" - required: true responses: - "202": + "200": + description: Reset device approval request has been sent + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": content: application/json: schema: - $ref: "#/components/schemas/PairApiKeyResponse" - description: The API key object to be paired + $ref: "#/components/schemas/ErrorResponse" + 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/ErrorResponse" + description: Lacking permissions. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Internal error. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" - Location: - $ref: "#/components/headers/Location" default: $ref: "#/components/responses/Error" - summary: Pair API key + summary: Resets device tags: - - Cosigners (Beta) + - Reset device x-rate-limit-category: write x-readme: code-samples: + - language: javascript + code: const res = await fireblocks.resetDeviceRequest(consoleUserId); + name: Fireblocks SDK Javascript example + - language: python + code: res = fireblocks.reset_device_request(console_user_id) + name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> =\ - \ fireblocks.cosignersBeta.pairApiKey(cosignersBetaApiPairApiKeyRequest);" + code: "const response: Promise> = fireblocks.resetDevice.resetDevice(resetDeviceApiResetDeviceRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.cosignersBeta().pairApiKey(pairApiKeyRequest,\ - \ cosignerId, apiKeyId, idempotencyKey);" + code: "CompletableFuture> response = fireblocks.resetDevice().resetDevice(id,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.pair_api_key(pair_api_key_request,\ - \ cosigner_id, api_key_id, idempotency_key);" + code: "response = fireblocks.reset_device.reset_device(id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.cosignersBeta.pairApiKey(cosignersBetaApiPairApiKeyRequest);" + source: "const response: Promise> = fireblocks.resetDevice.resetDevice(resetDeviceApiResetDeviceRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.cosignersBeta().pairApiKey(pairApiKeyRequest,\ - \ cosignerId, apiKeyId, idempotencyKey);" + source: "CompletableFuture> response = fireblocks.resetDevice().resetDevice(id,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.cosigners_beta.pair_api_key(pair_api_key_request,\ - \ cosigner_id, api_key_id, idempotency_key);" - x-content-type: application/json + source: "response = fireblocks.reset_device.reset_device(id, idempotency_key);" x-accepts: - application/json - /cosigners/{cosignerId}/api_keys/{apiKeyId}/{requestId}: + /management/api_users/{userId}/whitelist_ip_addresses: get: description: |- - Get the status of an asynchronous request - Endpoint Permission: Admin and Non-Signing Admin. - operationId: getRequestStatus + Get a list of the whitelisted IP addresses for a specific API Key + - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions. + Endpoint Permission: Admin, Non-Signing Admin. + operationId: getWhitelistIpAddresses parameters: - - description: The unique identifier of the cosigner - example: 44fcead0-7053-4831-a53a-df7fb90d440f - explode: false - in: path - name: cosignerId - required: true - schema: - format: uuid - type: string - style: simple - - description: The unique identifier of the API key - example: 44fcead0-7053-4831-a53a-df7fb90d440f + - description: The ID of the api user explode: false in: path - name: apiKeyId - required: true - schema: - type: string - style: simple - - explode: false - in: path - name: requestId + name: userId required: true schema: type: string @@ -32512,188 +31569,212 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/Status" - description: The status of the request + $ref: "#/components/schemas/GetWhitelistIpAddressesResponse" + description: successfully got whitelisted ip addresses + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + 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/ErrorResponse" + description: Lacking permissions. + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "5XX": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Internal error. headers: X-Request-ID: $ref: "#/components/headers/X-Request-ID" default: $ref: "#/components/responses/Error" - summary: Get request status + summary: Get whitelisted ip addresses for an API Key tags: - - Cosigners (Beta) + - whitelist ip addresses x-rate-limit-category: read x-readme: code-samples: + - language: javascript + code: const whitelistedAddresses = await fireblocks.getWhitelistedAddresses(apiUserId); + name: Fireblocks SDK Javascript example + - language: python + code: whitelisted_addresses = fireblocks.get_whitelisted_ip_addresses(api_user_id) + name: Fireblocks SDK Python example (Legacy) - language: typescript - code: "const response: Promise> = fireblocks.cosignersBeta.getRequestStatus(cosignersBetaApiGetRequestStatusRequest);" + code: "const response: Promise>\ + \ = fireblocks.whitelistIpAddresses.getWhitelistIpAddresses(whitelistIpAddressesApiGetWhitelistIpAddressesRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.cosignersBeta().getRequestStatus(cosignerId,\ - \ apiKeyId, requestId);" + code: CompletableFuture> response + = fireblocks.whitelistIpAddresses().getWhitelistIpAddresses(userId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.cosigners_beta.get_request_status(cosigner_id,\ - \ api_key_id, request_id);" + code: response = fireblocks.whitelist_ip_addresses.get_whitelist_ip_addresses(user_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> = fireblocks.cosignersBeta.getRequestStatus(cosignersBetaApiGetRequestStatusRequest);" + source: "const response: Promise>\ + \ = fireblocks.whitelistIpAddresses.getWhitelistIpAddresses(whitelistIpAddressesApiGetWhitelistIpAddressesRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.cosignersBeta().getRequestStatus(cosignerId,\ - \ apiKeyId, requestId);" + source: CompletableFuture> response + = fireblocks.whitelistIpAddresses().getWhitelistIpAddresses(userId); - lang: Python - source: "response = fireblocks.cosigners_beta.get_request_status(cosigner_id,\ - \ api_key_id, request_id);" + source: response = fireblocks.whitelist_ip_addresses.get_whitelist_ip_addresses(user_id); x-accepts: - application/json - /utxo_management/{vaultAccountId}/{assetId}/unspent_outputs: + /smart-transfers: get: description: |- - Returns a paginated list of unspent transaction outputs (UTXOs) for a UTXO-based asset in a vault account, with optional filters for labels, statuses, amounts, and more. - **Note:** These endpoints are currently in beta and might be subject to changes. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: getUtxos + Find tickets by their title or ticker. You can also query all tickets without filters by not providing any input parameters. + **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: searchTickets 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 + - description: Search string - counterparty name or asset or ticketId. Optional + explode: true + in: query + name: q + required: false schema: + minLength: 1 type: string - x-fb-entity: asset - style: simple - - description: Cursor for the next page of results - example: MjAyNS0wNy0wOSAxMDo1MzoxMy40NTI=:NA== + style: form + - description: Ticket statuses for Smart Transfer tickets. Optional + example: + - DRAFT + - OPEN explode: true in: query - name: pageCursor + name: statuses required: false schema: - type: string + default: [] + items: + enum: + - DRAFT + - PENDING_APPROVAL + - OPEN + - IN_SETTLEMENT + - FULFILLED + - EXPIRED + - CANCELED + type: string + type: array style: form - - description: "Number of results per page (max 250, default 50)" - example: 50 + - description: "NetworkId that is used in the ticket\t. Optional" explode: true in: query - name: pageSize + name: networkId required: false schema: - default: 50 - maximum: 250 - minimum: 1 - type: integer + type: string style: form - - description: Field to sort by - example: AMOUNT + - description: Filter created tickets by created by self or by others. Optional explode: true in: query - name: sort + name: createdByMe required: false schema: - enum: - - AMOUNT - - CONFIRMATIONS - type: string + type: boolean style: form - - description: Sort order - example: ASC + - description: Lower bound of search range. Optional explode: true in: query - name: order + name: expiresAfter required: false schema: - enum: - - ASC - - DESC + format: date-time type: string style: form - - description: Only return UTXOs that have ALL of these labels (AND logic). - example: - - cold-storage + - description: Upper bound of search range. Optional explode: true in: query - name: includeAllLabels + name: expiresBefore required: false schema: - items: - type: string - type: array + format: date-time + type: string style: form - - description: Return UTXOs that have ANY of these labels (OR logic). - example: - - vip - - high-value + - description: "Type of transfer. ASYNC executes transfers as they are funded,\ + \ DVP executes all terms (legs) as one dvp transfer" explode: true in: query - name: includeAnyLabels + name: type required: false schema: - items: - type: string - type: array + enum: + - ASYNC + - DVP + type: string style: form - - description: Exclude UTXOs that have ANY of these labels. - example: - - deprecated + - description: External ref. ID that workspace can use to identify ticket outside + of Fireblocks system. explode: true in: query - name: excludeAnyLabels + name: externalRefId required: false schema: - items: - type: string - type: array + maxLength: 64 + minLength: 1 + type: string style: form - - description: Filter by UTXO statuses to include. - example: - - AVAILABLE - - PENDING + - description: ID of the record after which to fetch $limit records explode: true in: query - name: includeStatuses + name: after required: false schema: - items: - type: string - type: array + type: string style: form - - description: Filter by address - example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa + - description: "Number of records to fetch. By default, it is 100" explode: true in: query - name: address + name: limit required: false schema: - type: string + minimum: 1 + type: number style: form - - description: Minimum amount filter - example: "0.001" + - description: Sort by field explode: true in: query - name: minAmount + name: sortBy required: false schema: + default: createdAt + enum: + - createdAt + - updatedAt + - submittedAt + example: createdAt type: string style: form - - description: Maximum amount filter - example: "1.0" + - description: ASC / DESC ordering (default DESC) explode: true in: query - name: maxAmount + name: order required: false schema: + default: DESC + enum: + - ASC + - DESC + example: DESC type: string style: form responses: @@ -32701,75 +31782,59 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ListUtxosResponse" - description: A paginated list of UTXOs - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: List unspent outputs (UTXOs) + $ref: "#/components/schemas/SmartTransferTicketFilteredResponse" + description: Smart Transfer tickets were returned successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + summary: Find Ticket tags: - - UTXO Management (Beta) - x-rate-limit-category: read + - Smart Transfer + x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise> =\ - \ fireblocks.uTXOManagementBeta.getUtxos(uTXOManagementBetaApiGetUtxosRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.searchTickets(smartTransferApiSearchTicketsRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response = fireblocks.uTXOManagementBeta().getUtxos(vaultAccountId,\ - \ assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels,\ - \ excludeAnyLabels, includeStatuses, address, minAmount, maxAmount);" + code: "CompletableFuture>\ + \ response = fireblocks.smartTransfer().searchTickets(q, statuses, networkId,\ + \ createdByMe, expiresAfter, expiresBefore, type, externalRefId, after,\ + \ limit, sortBy, order);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.u_t_x_o_management_beta.get_utxos(vault_account_id,\ - \ asset_id, page_cursor, page_size, sort, order, include_all_labels, include_any_labels,\ - \ exclude_any_labels, include_statuses, address, min_amount, max_amount);" + code: "response = fireblocks.smart_transfer.search_tickets(q, statuses,\ + \ network_id, created_by_me, expires_after, expires_before, type, external_ref_id,\ + \ after, limit, sort_by, order);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise> =\ - \ fireblocks.uTXOManagementBeta.getUtxos(uTXOManagementBetaApiGetUtxosRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.searchTickets(smartTransferApiSearchTicketsRequest);" - lang: Java - source: "CompletableFuture> response = fireblocks.uTXOManagementBeta().getUtxos(vaultAccountId,\ - \ assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels,\ - \ excludeAnyLabels, includeStatuses, address, minAmount, maxAmount);" + source: "CompletableFuture>\ + \ response = fireblocks.smartTransfer().searchTickets(q, statuses, networkId,\ + \ createdByMe, expiresAfter, expiresBefore, type, externalRefId, after,\ + \ limit, sortBy, order);" - lang: Python - source: "response = fireblocks.u_t_x_o_management_beta.get_utxos(vault_account_id,\ - \ asset_id, page_cursor, page_size, sort, order, include_all_labels, include_any_labels,\ - \ exclude_any_labels, include_statuses, address, min_amount, max_amount);" + source: "response = fireblocks.smart_transfer.search_tickets(q, statuses,\ + \ network_id, created_by_me, expires_after, expires_before, type, external_ref_id,\ + \ after, limit, sort_by, order);" x-accepts: - application/json - /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. - operationId: updateUtxoLabels + post: + description: | + Creates a new Smart Transfer ticket. Learn more about Fireblocks Smart Transfers [here](https://developers.fireblocks.com/docs/execute-smart-transfers). + + **Note:** The `DVP` value is in Early Access and should only be used if Fireblocks has enabled it in your workspace. Contact your Customer Success Manager for more information. + + **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: createTicket 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\ @@ -32785,145 +31850,132 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/AttachDetachUtxoLabelsRequest" + $ref: "#/components/schemas/SmartTransferCreateTicket" required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/AttachDetachUtxoLabelsResponse" - description: UTXOs with updated labels - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Attach or detach labels to/from UTXOs + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Smart Transfer ticket was created successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Create Ticket tags: - - UTXO Management (Beta) - x-rate-limit-category: write + - Smart Transfer + x-rate-limit-category: async x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.uTXOManagementBeta.updateUtxoLabels(uTXOManagementBetaApiUpdateUtxoLabelsRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.createTicket(smartTransferApiCreateTicketRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.uTXOManagementBeta().updateUtxoLabels(attachDetachUtxoLabelsRequest,\ - \ vaultAccountId, assetId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().createTicket(smartTransferCreateTicket,\ + \ idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.u_t_x_o_management_beta.update_utxo_labels(attach_detach_utxo_labels_request,\ - \ vault_account_id, asset_id, idempotency_key);" + code: "response = fireblocks.smart_transfer.create_ticket(smart_transfer_create_ticket,\ + \ idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.uTXOManagementBeta.updateUtxoLabels(uTXOManagementBetaApiUpdateUtxoLabelsRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.createTicket(smartTransferApiCreateTicketRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.uTXOManagementBeta().updateUtxoLabels(attachDetachUtxoLabelsRequest,\ - \ vaultAccountId, assetId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().createTicket(smartTransferCreateTicket, idempotencyKey);" - lang: Python - source: "response = fireblocks.u_t_x_o_management_beta.update_utxo_labels(attach_detach_utxo_labels_request,\ - \ vault_account_id, asset_id, idempotency_key);" + source: "response = fireblocks.smart_transfer.create_ticket(smart_transfer_create_ticket,\ + \ idempotency_key);" x-content-type: application/json x-accepts: - application/json - /legal_entities: + /smart-transfers/{ticketId}: get: - description: |- - Returns legal entity registrations for the workspace with cursor-based pagination. - If query parameter vaultAccountId is used it returns the legal entity registration associated with a specific vault account. If no explicit mapping exists for the vault, the workspace default legal entity is returned. Returns an empty response if neither a vault mapping nor a default legal entity is configured. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: listLegalEntities + description: "Find Smart Transfer ticket by id. Endpoint Permission: Admin,\ + \ Non-Signing Admin, Signer, Approver, Editor, Viewer." + operationId: findTicketById parameters: - - description: "The ID of the vault account. When provided, returns the legal\ - \ entity associated with that vault account and pagination parameters are\ - \ ignored." - explode: true - in: query - name: vaultAccountId - required: false - schema: - format: numeric - type: string - x-fb-entity: vault_account - style: form - - description: Cursor string returned in `next` or `prev` of a previous response. - Ignored when `vaultAccountId` is provided. - explode: true - in: query - name: pageCursor - required: false + - explode: false + in: path + name: ticketId + required: true schema: type: string - style: form - - description: Maximum number of registrations to return. Ignored when `vaultAccountId` - is provided. - explode: true - in: query - name: pageSize - required: false - schema: - default: 50 - maximum: 100 - minimum: 1 - type: integer - style: form + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ListLegalEntitiesResponse" - description: "A paginated list of legal entity registrations. When `vaultAccountId`\ - \ is provided, `data` contains at most one item." - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: List legal entities (Paginated) + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Smart Transfer ticket returned successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + summary: Search Ticket by ID tags: - - Compliance + - Smart Transfer x-rate-limit-category: query x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.listLegalEntities(complianceApiListLegalEntitiesRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.findTicketById(smartTransferApiFindTicketByIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.compliance().listLegalEntities(vaultAccountId, pageCursor,\ - \ pageSize);" + code: CompletableFuture> response + = fireblocks.smartTransfer().findTicketById(ticketId); name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.list_legal_entities(vault_account_id,\ - \ page_cursor, page_size);" + code: response = fireblocks.smart_transfer.find_ticket_by_id(ticket_id); name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.listLegalEntities(complianceApiListLegalEntitiesRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.findTicketById(smartTransferApiFindTicketByIdRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.compliance().listLegalEntities(vaultAccountId, pageCursor,\ - \ pageSize);" + source: CompletableFuture> response + = fireblocks.smartTransfer().findTicketById(ticketId); - lang: Python - source: "response = fireblocks.compliance.list_legal_entities(vault_account_id,\ - \ page_cursor, page_size);" + source: response = fireblocks.smart_transfer.find_ticket_by_id(ticket_id); x-accepts: - application/json - post: - description: |- - Registers a new legal entity for the workspace using its LEI (Legal Entity Identifier) code. The LEI is validated against the GLEIF registry. Each workspace can register multiple legal entities. - Endpoint Permission: Admin, Non-Signing Admin. - operationId: registerLegalEntity + /smart-transfers/{ticketId}/expires-in: + put: + description: "Set expiration date on Smart Transfer ticket. Endpoint Permission:\ + \ Admin, Non-Signing Admin, Signer, Approver, Editor." + operationId: setTicketExpiration parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + 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\ @@ -32939,168 +31991,166 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/RegisterLegalEntityRequest" + $ref: "#/components/schemas/SmartTransferSetTicketExpiration" required: true responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/LegalEntityRegistration" - description: Legal entity registered successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Successfully set expiration date on Smart Transfer ticket + "403": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Invalid LEI or request parameters - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized "404": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: LEI not found in the GLEIF registry - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "409": - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorSchema" - description: A legal entity with this LEI is already registered for the - workspace - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "500": + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Internal Server Error - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Register a new legal entity + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Set expiration tags: - - Compliance + - Smart Transfer x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.registerLegalEntity(complianceApiRegisterLegalEntityRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.setTicketExpiration(smartTransferApiSetTicketExpirationRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.compliance().registerLegalEntity(registerLegalEntityRequest,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().setTicketExpiration(smartTransferSetTicketExpiration,\ + \ ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.register_legal_entity(register_legal_entity_request,\ - \ idempotency_key);" + code: "response = fireblocks.smart_transfer.set_ticket_expiration(smart_transfer_set_ticket_expiration,\ + \ ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.registerLegalEntity(complianceApiRegisterLegalEntityRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.setTicketExpiration(smartTransferApiSetTicketExpirationRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.compliance().registerLegalEntity(registerLegalEntityRequest,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().setTicketExpiration(smartTransferSetTicketExpiration,\ + \ ticketId, idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.register_legal_entity(register_legal_entity_request,\ - \ idempotency_key);" + source: "response = fireblocks.smart_transfer.set_ticket_expiration(smart_transfer_set_ticket_expiration,\ + \ ticket_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /legal_entities/{legalEntityId}: - get: - description: |- - Returns details of a specific legal entity registration, including GLEIF data when available. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: getLegalEntity + /smart-transfers/{ticketId}/external-id: + put: + description: "Set external id Smart Transfer ticket. Endpoint Permission: Admin,\ + \ Non-Signing Admin, Signer, Approver, Editor." + operationId: setExternalRefId parameters: - - description: The unique ID of the legal entity registration - explode: false + - explode: false in: path - name: legalEntityId + name: ticketId required: true schema: - format: uuid type: string 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/SmartTransferSetTicketExternalId" + required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/LegalEntityRegistration" - description: Legal entity registration details - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Successfully set external id on Smart Transfer ticket + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized "404": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Legal entity registration not found - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Get a legal entity + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Add external ref. ID tags: - - Compliance - x-rate-limit-category: read + - Smart Transfer + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.getLegalEntity(complianceApiGetLegalEntityRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.setExternalRefId(smartTransferApiSetExternalRefIdRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response = - fireblocks.compliance().getLegalEntity(legalEntityId); + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().setExternalRefId(smartTransferSetTicketExternalId,\ + \ ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.compliance.get_legal_entity(legal_entity_id); + code: "response = fireblocks.smart_transfer.set_external_ref_id(smart_transfer_set_ticket_external_id,\ + \ ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.getLegalEntity(complianceApiGetLegalEntityRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.setExternalRefId(smartTransferApiSetExternalRefIdRequest);" - lang: Java - source: CompletableFuture> response = - fireblocks.compliance().getLegalEntity(legalEntityId); + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().setExternalRefId(smartTransferSetTicketExternalId,\ + \ ticketId, idempotencyKey);" - lang: Python - source: response = fireblocks.compliance.get_legal_entity(legal_entity_id); + source: "response = fireblocks.smart_transfer.set_external_ref_id(smart_transfer_set_ticket_external_id,\ + \ ticket_id, idempotency_key);" + x-content-type: application/json x-accepts: - application/json + /smart-transfers/{ticketId}/submit: put: - description: |- - Updates the status of a legal entity registration. Setting isDefault to true marks the registration as the workspace default, which is applied to vault accounts that have no explicit legal entity mapping. - Endpoint Permission: Admin, Non-Signing Admin. - operationId: updateLegalEntity + description: "Submit Smart Transfer ticket - change status into ready for approval\ + \ if auto approval is not turned on, or OPEN if auto approval is on. Endpoint\ + \ Permission: Admin, Non-Signing Admin, Signer, Approver, Editor." + operationId: submitTicket parameters: - - description: The unique ID of the legal entity registration - explode: false + - explode: false in: path - name: legalEntityId + name: ticketId required: true schema: - format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -33118,172 +32168,154 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/UpdateLegalEntityRequest" + $ref: "#/components/schemas/SmartTransferSubmitTicket" required: true responses: "200": content: application/json: schema: - $ref: "#/components/schemas/LegalEntityRegistration" - description: Updated legal entity registration - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - "400": + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Successfully submitted Smart Transfer ticket + "403": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Registration is not in APPROVED status - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized "404": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Legal entity registration not found - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Update legal entity + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Submit ticket tags: - - Compliance + - Smart Transfer x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.updateLegalEntity(complianceApiUpdateLegalEntityRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.submitTicket(smartTransferApiSubmitTicketRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.compliance().updateLegalEntity(updateLegalEntityRequest,\ - \ legalEntityId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().submitTicket(smartTransferSubmitTicket,\ + \ ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.update_legal_entity(update_legal_entity_request,\ - \ legal_entity_id, idempotency_key);" + code: "response = fireblocks.smart_transfer.submit_ticket(smart_transfer_submit_ticket,\ + \ ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.updateLegalEntity(complianceApiUpdateLegalEntityRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.submitTicket(smartTransferApiSubmitTicketRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.compliance().updateLegalEntity(updateLegalEntityRequest,\ - \ legalEntityId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().submitTicket(smartTransferSubmitTicket, ticketId,\ + \ idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.update_legal_entity(update_legal_entity_request,\ - \ legal_entity_id, idempotency_key);" + source: "response = fireblocks.smart_transfer.submit_ticket(smart_transfer_submit_ticket,\ + \ ticket_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /legal_entities/{legalEntityId}/vaults: - get: - description: |- - Returns vault account IDs explicitly assigned to a specific legal entity registration, with cursor-based pagination. - Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. - operationId: listVaultsForLegalEntity + /smart-transfers/{ticketId}/fulfill: + put: + description: "Manually fulfill ticket, in case when all terms (legs) are funded\ + \ manually. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver,\ + \ Editor." + operationId: fulfillTicket parameters: - - description: The unique ID of the legal entity registration - explode: false + - explode: false in: path - name: legalEntityId + name: ticketId required: true schema: - format: uuid type: string style: simple - - description: Cursor string returned in `next` or `prev` of a previous response - explode: true - in: query - name: pageCursor + - 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: form - - description: Maximum number of registrations to return - explode: true - in: query - name: pageSize - required: false - schema: - default: 50 - maximum: 100 - minimum: 1 - type: integer - style: form + style: simple responses: "200": content: application/json: schema: - $ref: "#/components/schemas/ListVaultsForRegistrationResponse" - description: Paginated list of vault account IDs assigned to the legal entity - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Successfully fulfilled on Smart Transfer ticket + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized "404": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Legal entity registration not found - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: List vault accounts for a legal entity (Paginated) + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Fund ticket manually tags: - - Compliance - x-rate-limit-category: read + - Smart Transfer + x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.listVaultsForLegalEntity(complianceApiListVaultsForLegalEntityRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.fulfillTicket(smartTransferApiFulfillTicketRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.compliance().listVaultsForLegalEntity(legalEntityId,\ - \ pageCursor, pageSize);" + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().fulfillTicket(ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id,\ - \ page_cursor, page_size);" + code: "response = fireblocks.smart_transfer.fulfill_ticket(ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.listVaultsForLegalEntity(complianceApiListVaultsForLegalEntityRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.fulfillTicket(smartTransferApiFulfillTicketRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.compliance().listVaultsForLegalEntity(legalEntityId,\ - \ pageCursor, pageSize);" + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().fulfillTicket(ticketId, idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id,\ - \ page_cursor, page_size);" + source: "response = fireblocks.smart_transfer.fulfill_ticket(ticket_id, idempotency_key);" x-accepts: - application/json - post: - description: |- - Assigns one or more vault accounts to a specific legal entity registration. Explicitly mapped vault accounts take precedence over the workspace default legal entity. - Endpoint Permission: Admin, Non-Signing Admin. - operationId: assignVaultsToLegalEntity + /smart_transfers/{ticketId}/dvp/fund: + put: + description: Create or fulfill dvp ticket order + operationId: fundDvpTicket parameters: - - description: The unique ID of the legal entity registration - explode: false + - explode: false in: path - name: legalEntityId + name: ticketId required: true schema: - format: uuid type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -33301,70 +32333,80 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/AssignVaultsToLegalEntityRequest" + $ref: "#/components/schemas/SmartTransferFundDvpTicket" required: true responses: - "201": + "200": content: application/json: schema: - $ref: "#/components/schemas/AssignVaultsToLegalEntityResponse" - description: Vault accounts assigned successfully - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Successfully started creating or fulfilling order on dvp Smart + Transfer ticket + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized "404": content: application/json: schema: - $ref: "#/components/schemas/ErrorSchema" - description: Legal entity registration not found - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Assign vault accounts to a legal entity + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Fund dvp ticket tags: - - Compliance + - Smart Transfer x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.compliance.assignVaultsToLegalEntity(complianceApiAssignVaultsToLegalEntityRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.fundDvpTicket(smartTransferApiFundDvpTicketRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture>\ - \ response = fireblocks.compliance().assignVaultsToLegalEntity(assignVaultsToLegalEntityRequest,\ - \ legalEntityId, idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().fundDvpTicket(smartTransferFundDvpTicket,\ + \ ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.compliance.assign_vaults_to_legal_entity(assign_vaults_to_legal_entity_request,\ - \ legal_entity_id, idempotency_key);" + code: "response = fireblocks.smart_transfer.fund_dvp_ticket(smart_transfer_fund_dvp_ticket,\ + \ ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.compliance.assignVaultsToLegalEntity(complianceApiAssignVaultsToLegalEntityRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.fundDvpTicket(smartTransferApiFundDvpTicketRequest);" - lang: Java - source: "CompletableFuture>\ - \ response = fireblocks.compliance().assignVaultsToLegalEntity(assignVaultsToLegalEntityRequest,\ - \ legalEntityId, idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().fundDvpTicket(smartTransferFundDvpTicket,\ + \ ticketId, idempotencyKey);" - lang: Python - source: "response = fireblocks.compliance.assign_vaults_to_legal_entity(assign_vaults_to_legal_entity_request,\ - \ legal_entity_id, idempotency_key);" + source: "response = fireblocks.smart_transfer.fund_dvp_ticket(smart_transfer_fund_dvp_ticket,\ + \ ticket_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json - /genie/sessions: - post: - description: | - Starts a new conversation with Genie, the Fireblocks AI assistant. Returns a `sessionId` — pass it when sending messages, and reuse it across calls to keep one continuous conversation. - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: createGenieSession + /smart-transfers/{ticketId}/cancel: + put: + description: "Cancel Smart Transfer ticket. Endpoint Permission: Admin, Non-Signing\ + \ Admin, Signer, Approver, Editor." + operationId: cancelTicket parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + 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\ @@ -33381,56 +32423,67 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GenieCreateSessionResponse" - description: Session created - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Create a Genie session + $ref: "#/components/schemas/SmartTransferTicketResponse" + description: Smart Transfer ticket successfully canceled + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Cancel Ticket tags: - - Genie (Beta) + - Smart Transfer x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.genieBeta.createGenieSession(genieBetaApiCreateGenieSessionRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.cancelTicket(smartTransferApiCancelTicketRequest);" name: Fireblocks SDK TypeScript example - language: java - code: CompletableFuture> response - = fireblocks.genieBeta().createGenieSession(idempotencyKey); + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().cancelTicket(ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: response = fireblocks.genie_beta.create_genie_session(idempotency_key); + code: "response = fireblocks.smart_transfer.cancel_ticket(ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.genieBeta.createGenieSession(genieBetaApiCreateGenieSessionRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.cancelTicket(smartTransferApiCancelTicketRequest);" - lang: Java - source: CompletableFuture> response - = fireblocks.genieBeta().createGenieSession(idempotencyKey); + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().cancelTicket(ticketId, idempotencyKey);" - lang: Python - source: response = fireblocks.genie_beta.create_genie_session(idempotency_key); + source: "response = fireblocks.smart_transfer.cancel_ticket(ticket_id, idempotency_key);" x-accepts: - application/json - /genie/sessions/{sessionId}/messages: + /smart-transfers/{ticketId}/terms: post: - description: | - Sends a question to Genie and returns a single answer. Reuse the `sessionId` from the original session on follow-up messages to continue the conversation with prior context. - - **Note:** This endpoint is currently in beta and might be subject to changes. - operationId: sendGenieMessage + description: "Creates new smart transfer ticket term (when the ticket status\ + \ is DRAFT). Learn more about Fireblocks Smart Transfers in the following\ + \ [guide](https://developers.fireblocks.com/docs/execute-smart-transfers).\ + \ Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor." + operationId: createTicketTerm parameters: - - description: The Genie session ID returned from `POST /genie/sessions`. - explode: false + - explode: false in: path - name: sessionId + name: ticketId required: true schema: - example: 7c1b2e1c-1c2a-4f3a-9c2d-2e0a8a1f8e1a type: string style: simple - description: "A unique identifier for the request. If the request is sent\ @@ -33448,106 +32501,2961 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/GenieSendMessageRequest" + $ref: "#/components/schemas/SmartTransferCreateTicketTerm" required: true responses: - "200": + "201": content: application/json: schema: - $ref: "#/components/schemas/GenieChatMessage" - description: Genie response - headers: - X-Request-ID: - $ref: "#/components/headers/X-Request-ID" - default: - $ref: "#/components/responses/Error" - summary: Send a message to a Genie session + $ref: "#/components/schemas/SmartTransferTicketTermResponse" + description: Smart Transfer ticket term was created successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Create leg (term) tags: - - Genie (Beta) + - Smart Transfer x-rate-limit-category: write x-readme: code-samples: - language: typescript - code: "const response: Promise>\ - \ = fireblocks.genieBeta.sendGenieMessage(genieBetaApiSendGenieMessageRequest);" + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.createTicketTerm(smartTransferApiCreateTicketTermRequest);" name: Fireblocks SDK TypeScript example - language: java - code: "CompletableFuture> response\ - \ = fireblocks.genieBeta().sendGenieMessage(genieSendMessageRequest, sessionId,\ - \ idempotencyKey);" + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().createTicketTerm(smartTransferCreateTicketTerm,\ + \ ticketId, idempotencyKey);" name: Fireblocks SDK Java example - language: python - code: "response = fireblocks.genie_beta.send_genie_message(genie_send_message_request,\ - \ session_id, idempotency_key);" + code: "response = fireblocks.smart_transfer.create_ticket_term(smart_transfer_create_ticket_term,\ + \ ticket_id, idempotency_key);" name: Fireblocks SDK Python example x-codeSamples: - lang: TypeScript - source: "const response: Promise>\ - \ = fireblocks.genieBeta.sendGenieMessage(genieBetaApiSendGenieMessageRequest);" + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.createTicketTerm(smartTransferApiCreateTicketTermRequest);" - lang: Java - source: "CompletableFuture> response\ - \ = fireblocks.genieBeta().sendGenieMessage(genieSendMessageRequest, sessionId,\ - \ idempotencyKey);" + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().createTicketTerm(smartTransferCreateTicketTerm,\ + \ ticketId, idempotencyKey);" - lang: Python - source: "response = fireblocks.genie_beta.send_genie_message(genie_send_message_request,\ - \ session_id, idempotency_key);" + source: "response = fireblocks.smart_transfer.create_ticket_term(smart_transfer_create_ticket_term,\ + \ ticket_id, idempotency_key);" x-content-type: application/json x-accepts: - application/json -components: - headers: - X-Request-ID: - description: Unique ID correlated to the API request. Please provide it in any - support ticket you create or on Github issues related to Fireblocks SDKs - explode: false - schema: - type: string - style: simple - next-page: - description: URL representing a new request to this API endpoint to receive - the next page of results. - explode: false - schema: - type: string - style: simple - prev-page: - description: URL representing a new request to this API endpoint to receive - the previous page of results. - explode: false - schema: - type: string - style: simple - Location: - description: The location URL of the request status - explode: false - schema: - type: string - style: simple - parameters: - X-Idempotency-Key: - 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 - X-End-User-Wallet-Id_required: - description: Unique ID of the End-User wallet to the API request. Required for - end-user wallet operations. - explode: false - in: header - name: X-End-User-Wallet-Id - required: true - schema: - format: uuid - type: string - style: simple - X-End-User-Wallet-Id: + /smart-transfers/{ticketId}/terms/{termId}: + delete: + description: Delete ticket term when ticket is in DRAFT status + operationId: removeTicketTerm + parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: termId + required: true + schema: + type: string + style: simple + responses: + "204": + description: Smart Transfer ticket term successfully removed + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + summary: Delete ticket leg (term) + tags: + - Smart Transfer + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.smartTransfer.removeTicketTerm(smartTransferApiRemoveTicketTermRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.smartTransfer().removeTicketTerm(ticketId,\ + \ termId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.remove_ticket_term(ticket_id,\ + \ term_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.smartTransfer.removeTicketTerm(smartTransferApiRemoveTicketTermRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.smartTransfer().removeTicketTerm(ticketId,\ + \ termId);" + - lang: Python + source: "response = fireblocks.smart_transfer.remove_ticket_term(ticket_id,\ + \ term_id);" + x-accepts: + - application/json + get: + description: "Find a specific term of a specific Smart Transfer ticket. Endpoint\ + \ Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer." + operationId: findTicketTermById + parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: termId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferTicketTermResponse" + description: Smart Transfer ticket term returned successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + summary: Get Smart Transfer ticket term + tags: + - Smart Transfer + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.findTicketTermById(smartTransferApiFindTicketTermByIdRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().findTicketTermById(ticketId, termId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.find_ticket_term_by_id(ticket_id,\ + \ term_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.findTicketTermById(smartTransferApiFindTicketTermByIdRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().findTicketTermById(ticketId, termId);" + - lang: Python + source: "response = fireblocks.smart_transfer.find_ticket_term_by_id(ticket_id,\ + \ term_id);" + x-accepts: + - application/json + put: + description: Update ticket term (when ticket status is DRAFT) + operationId: updateTicketTerm + parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: termId + required: true + schema: + type: string + 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/SmartTransferUpdateTicketTerm" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferTicketTermResponse" + description: Smart Transfer ticket term updated successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + summary: Update ticket leg (term) + tags: + - Smart Transfer + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.updateTicketTerm(smartTransferApiUpdateTicketTermRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().updateTicketTerm(smartTransferUpdateTicketTerm,\ + \ ticketId, termId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.update_ticket_term(smart_transfer_update_ticket_term,\ + \ ticket_id, term_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.updateTicketTerm(smartTransferApiUpdateTicketTermRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().updateTicketTerm(smartTransferUpdateTicketTerm,\ + \ ticketId, termId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.smart_transfer.update_ticket_term(smart_transfer_update_ticket_term,\ + \ ticket_id, term_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /smart-transfers/{ticketId}/terms/{termId}/fund: + put: + description: "Set funding source for ticket term (in case of ASYNC tickets,\ + \ this will execute transfer immediately). Endpoint Permission: Admin, Non-Signing\ + \ Admin, Signer, Approver, Editor." + operationId: fundTicketTerm + parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: termId + required: true + schema: + type: string + 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/SmartTransferFundTerm" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferTicketTermResponse" + description: Funding source for ticket term successfully done + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Define funding source + tags: + - Smart Transfer + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.fundTicketTerm(smartTransferApiFundTicketTermRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().fundTicketTerm(smartTransferFundTerm, ticketId,\ + \ termId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.fund_ticket_term(smart_transfer_fund_term,\ + \ ticket_id, term_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.fundTicketTerm(smartTransferApiFundTicketTermRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().fundTicketTerm(smartTransferFundTerm, ticketId,\ + \ termId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.smart_transfer.fund_ticket_term(smart_transfer_fund_term,\ + \ ticket_id, term_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /smart_transfers/{ticketId}/terms/{termId}/dvp/approve: + put: + description: Set funding source for ticket term and creating approving transaction + for contract to transfer asset + operationId: approveDvPTicketTerm + parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: termId + required: true + schema: + type: string + 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/SmartTransferApproveTerm" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferTicketTermResponse" + description: Creating approval transaction started + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Set funding source and approval + tags: + - Smart Transfer + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.approveDvPTicketTerm(smartTransferApiApproveDvPTicketTermRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().approveDvPTicketTerm(smartTransferApproveTerm,\ + \ ticketId, termId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.approve_dv_p_ticket_term(smart_transfer_approve_term,\ + \ ticket_id, term_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.approveDvPTicketTerm(smartTransferApiApproveDvPTicketTermRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().approveDvPTicketTerm(smartTransferApproveTerm,\ + \ ticketId, termId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.smart_transfer.approve_dv_p_ticket_term(smart_transfer_approve_term,\ + \ ticket_id, term_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /smart-transfers/{ticketId}/terms/{termId}/manually-fund: + put: + description: |- + Manually set ticket term transaction. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: manuallyFundTicketTerm + parameters: + - explode: false + in: path + name: ticketId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: termId + required: true + schema: + type: string + 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/SmartTransferManuallyFundTerm" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferTicketTermResponse" + description: Successfully manually set ticket term transaction + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferNotFoundResponse" + description: Not found + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Manually add term transaction + tags: + - Smart Transfer + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.manuallyFundTicketTerm(smartTransferApiManuallyFundTicketTermRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().manuallyFundTicketTerm(smartTransferManuallyFundTerm,\ + \ ticketId, termId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.manually_fund_ticket_term(smart_transfer_manually_fund_term,\ + \ ticket_id, term_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.manuallyFundTicketTerm(smartTransferApiManuallyFundTicketTermRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().manuallyFundTicketTerm(smartTransferManuallyFundTerm,\ + \ ticketId, termId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.smart_transfer.manually_fund_ticket_term(smart_transfer_manually_fund_term,\ + \ ticket_id, term_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /smart-transfers/settings/user-groups: + get: + description: |- + Get Smart Transfer user groups. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: getSmartTransferUserGroups + parameters: [] + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferUserGroupsResponse" + description: User group settings were returned successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Get user group + tags: + - Smart Transfer + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.getSmartTransferUserGroups();" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response + = fireblocks.smartTransfer().getSmartTransferUserGroups(); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.smart_transfer.get_smart_transfer_user_groups(); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.getSmartTransferUserGroups();" + - lang: Java + source: CompletableFuture> response + = fireblocks.smartTransfer().getSmartTransferUserGroups(); + - lang: Python + source: response = fireblocks.smart_transfer.get_smart_transfer_user_groups(); + x-accepts: + - application/json + post: + description: |- + Set Smart Transfers user group to receive email notifications for Smart Transfers. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor. + operationId: setUserGroups + 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/SmartTransferSetUserGroups" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferUserGroupsResponse" + description: User group settings were set successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + "422": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferBadRequestResponse" + description: Bad Request + summary: Set user group + tags: + - Smart Transfer + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.setUserGroups(smartTransferApiSetUserGroupsRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().setUserGroups(smartTransferSetUserGroups,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.smart_transfer.set_user_groups(smart_transfer_set_user_groups,\ + \ idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.setUserGroups(smartTransferApiSetUserGroupsRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.smartTransfer().setUserGroups(smartTransferSetUserGroups,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.smart_transfer.set_user_groups(smart_transfer_set_user_groups,\ + \ idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /smart_transfers/statistic: + get: + description: Get smart transfer statistic + operationId: getSmartTransferStatistic + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferStatistic" + description: Smart Transfer ticket statistic returned successfully + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/SmartTransferForbiddenResponse" + description: Unauthorized + default: + $ref: "#/components/responses/Error" + summary: Get smart transfers statistic + tags: + - Smart Transfer + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.smartTransfer.getSmartTransferStatistic();" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = + fireblocks.smartTransfer().getSmartTransferStatistic(); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.smart_transfer.get_smart_transfer_statistic(); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.smartTransfer.getSmartTransferStatistic();" + - lang: Java + source: CompletableFuture> response = + fireblocks.smartTransfer().getSmartTransferStatistic(); + - lang: Python + source: response = fireblocks.smart_transfer.get_smart_transfer_statistic(); + x-accepts: + - application/json + /tags: + get: + description: Retrieve a paged list of all tags according to filters. + operationId: getTags + parameters: + - description: Page cursor to get the next page. + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Maximum number of items in the page + explode: true + in: query + name: pageSize + required: false + schema: + default: 100 + maximum: 100 + minimum: 1 + type: number + style: form + - description: Label prefix to filter by. + example: VIP + explode: true + in: query + name: label + required: false + schema: + type: string + style: form + - description: List of tag IDs to filter by. + explode: true + in: query + name: tagIds + required: false + schema: + items: + format: uuid + type: string + maxItems: 100 + type: array + style: form + - description: Whether to include pending approval requests info. + explode: true + in: query + name: includePendingApprovalsInfo + required: false + schema: + default: false + type: boolean + style: form + - explode: true + in: query + name: isProtected + required: false + schema: + type: boolean + style: form + - description: Filter by tag type + explode: true + in: query + name: type + required: false + schema: + items: + $ref: "#/components/schemas/TagType" + type: array + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TagsPagedResponse" + description: Tags fetched successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Get list of tags + tags: + - Tags + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> =\ + \ fireblocks.tags.getTags(tagsApiGetTagsRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.tags().getTags(pageCursor,\ + \ pageSize, label, tagIds, includePendingApprovalsInfo, isProtected, type);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.tags.get_tags(page_cursor, page_size, label,\ + \ tag_ids, include_pending_approvals_info, is_protected, type);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> =\ + \ fireblocks.tags.getTags(tagsApiGetTagsRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.tags().getTags(pageCursor,\ + \ pageSize, label, tagIds, includePendingApprovalsInfo, isProtected, type);" + - lang: Python + source: "response = fireblocks.tags.get_tags(page_cursor, page_size, label,\ + \ tag_ids, include_pending_approvals_info, is_protected, type);" + x-accepts: + - application/json + post: + description: |- + Create a new tag. + Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER. + operationId: createTag + 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/CreateTagRequest" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/Tag" + description: Tag created successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Create a new tag + tags: + - Tags + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tags.createTag(tagsApiCreateTagRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.tags().createTag(createTagRequest,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.tags.create_tag(create_tag_request, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tags.createTag(tagsApiCreateTagRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.tags().createTag(createTagRequest,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.tags.create_tag(create_tag_request, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /tags/{tagId}: + delete: + description: |- + Delete the specified tag. + Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver. + operationId: deleteTag + parameters: + - description: The ID of the tag to retrieve + explode: false + in: path + name: tagId + required: true + schema: + format: uuid + type: string + style: simple + responses: + "204": + description: Tag was deleted successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Delete a tag + tags: + - Tags + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tags.deleteTag(tagsApiDeleteTagRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.tags().deleteTag(tagId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.tags.delete_tag(tag_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tags.deleteTag(tagsApiDeleteTagRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.tags().deleteTag(tagId); + - lang: Python + source: response = fireblocks.tags.delete_tag(tag_id); + x-accepts: + - application/json + get: + description: Retrieve an existing tag by ID. + operationId: getTag + parameters: + - description: The ID of the tag to retrieve + explode: false + in: path + name: tagId + required: true + schema: + format: uuid + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Tag" + description: A tag object + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Get a tag + tags: + - Tags + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tags.getTag(tagsApiGetTagRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.tags().getTag(tagId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.tags.get_tag(tag_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tags.getTag(tagsApiGetTagRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.tags().getTag(tagId); + - lang: Python + source: response = fireblocks.tags.get_tag(tag_id); + x-accepts: + - application/json + patch: + description: |- + Update an existing specified tag. + Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver. + operationId: updateTag + parameters: + - description: The ID of the tag to update + explode: false + in: path + name: tagId + required: true + schema: + format: uuid + type: string + 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/UpdateTagRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Tag" + description: A tag object + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + summary: Update a tag + tags: + - Tags + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tags.updateTag(tagsApiUpdateTagRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.tags().updateTag(updateTagRequest,\ + \ tagId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.tags.update_tag(update_tag_request, tag_id,\ + \ idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tags.updateTag(tagsApiUpdateTagRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.tags().updateTag(updateTagRequest,\ + \ tagId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.tags.update_tag(update_tag_request, tag_id,\ + \ idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /tags/approval_requests/{id}: + get: + description: Get an approval request by id + operationId: getApprovalRequest + parameters: + - explode: false + in: path + name: id + required: true + schema: + example: "12345" + format: numeric + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ApprovalRequest" + description: Approval request fetched successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Unauthorized + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Approval request not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get an approval request by id + tags: + - Tags + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tags.getApprovalRequest(tagsApiGetApprovalRequestRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.tags().getApprovalRequest(id); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.tags.get_approval_request(id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tags.getApprovalRequest(tagsApiGetApprovalRequestRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.tags().getApprovalRequest(id); + - lang: Python + source: response = fireblocks.tags.get_approval_request(id); + x-accepts: + - application/json + /tags/approval_requests/{id}/cancel: + post: + description: Cancel an approval request by id. Can only cancel requests in PENDING + status. Returns 202 Accepted when the cancellation is processed. + operationId: cancelApprovalRequest + 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 + - explode: false + in: path + name: id + required: true + schema: + example: "12345" + format: numeric + type: string + style: simple + responses: + "202": + description: Approval request cancellation processed + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Unauthorized + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + description: Approval request not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + description: Invalid approval request state - cannot cancel request that + is not in PENDING status + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Cancel an approval request by id + tags: + - Tags + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.tags.cancelApprovalRequest(tagsApiCancelApprovalRequestRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.tags().cancelApprovalRequest(id,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.tags.cancel_approval_request(id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.tags.cancelApprovalRequest(tagsApiCancelApprovalRequestRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.tags().cancelApprovalRequest(id,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.tags.cancel_approval_request(id, idempotency_key);" + x-accepts: + - application/json + /cosigners: + get: + description: |- + Get all workspace cosigners (paginated). + **Note:** These endpoints are currently in beta and might be subject to changes. + Endpoint Permission: Admin and Non-Signing Admin. + operationId: getCosigners + parameters: + - description: ASC / DESC ordering (default DESC) + example: ASC + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form + - description: Cursor of the required page + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Maximum number of items in the page + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + default: 10 + maximum: 100 + minimum: 1 + type: number + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/CosignersPaginatedResponse" + description: A paginated response containing Cosigner objects + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get all cosigners + tags: + - Cosigners (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.cosignersBeta.getCosigners(cosignersBetaApiGetCosignersRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.cosignersBeta().getCosigners(order, pageCursor, pageSize);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.get_cosigners(order, page_cursor,\ + \ page_size);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.cosignersBeta.getCosigners(cosignersBetaApiGetCosignersRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.cosignersBeta().getCosigners(order, pageCursor, pageSize);" + - lang: Python + source: "response = fireblocks.cosigners_beta.get_cosigners(order, page_cursor,\ + \ page_size);" + x-accepts: + - application/json + post: + description: |- + Add a new cosigner. The cosigner will be pending pairing until the API key is manually paired + Endpoint Permission: Admin and Non-Signing Admin. + operationId: addCosigner + 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/AddCosignerRequest" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/AddCosignerResponse" + description: Pending cosigner added + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Add cosigner + tags: + - Cosigners (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.cosignersBeta.addCosigner(cosignersBetaApiAddCosignerRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.cosignersBeta().addCosigner(addCosignerRequest,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.add_cosigner(add_cosigner_request,\ + \ idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.cosignersBeta.addCosigner(cosignersBetaApiAddCosignerRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.cosignersBeta().addCosigner(addCosignerRequest,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.cosigners_beta.add_cosigner(add_cosigner_request,\ + \ idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /cosigners/{cosignerId}: + get: + description: |- + Get a cosigner by ID. + **Note:** These endpoints are currently in beta and might be subject to changes. + Endpoint Permission: Admin and Non-Signing Admin. + operationId: getCosigner + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Cosigner" + description: A cosigner object + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get cosigner + tags: + - Cosigners (Beta) + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.cosignersBeta.getCosigner(cosignersBetaApiGetCosignerRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = fireblocks.cosignersBeta().getCosigner(cosignerId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.cosigners_beta.get_cosigner(cosigner_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.cosignersBeta.getCosigner(cosignersBetaApiGetCosignerRequest);" + - lang: Java + source: CompletableFuture> response = fireblocks.cosignersBeta().getCosigner(cosignerId); + - lang: Python + source: response = fireblocks.cosigners_beta.get_cosigner(cosigner_id); + x-accepts: + - application/json + patch: + description: |- + Rename a cosigner by ID. + **Note:** These endpoints are currently in beta and might be subject to changes. + Endpoint Permission: Admin and Non-Signing Admin. + operationId: renameCosigner + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RenameCosigner" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Cosigner" + description: A cosigner object + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Rename cosigner + tags: + - Cosigners (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.cosignersBeta.renameCosigner(cosignersBetaApiRenameCosignerRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.cosignersBeta().renameCosigner(renameCosigner,\ + \ cosignerId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.rename_cosigner(rename_cosigner,\ + \ cosigner_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.cosignersBeta.renameCosigner(cosignersBetaApiRenameCosignerRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.cosignersBeta().renameCosigner(renameCosigner,\ + \ cosignerId);" + - lang: Python + source: "response = fireblocks.cosigners_beta.rename_cosigner(rename_cosigner,\ + \ cosigner_id);" + x-content-type: application/json + x-accepts: + - application/json + /cosigners/{cosignerId}/api_keys: + get: + description: |- + Get all cosigner paired API keys (paginated). + **Note:** These endpoints are currently in beta and might be subject to changes. + Endpoint Permission: Admin and Non-Signing Admin. + operationId: getApiKeys + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + - description: ASC / DESC ordering (default DESC) + example: ASC + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form + - description: Cursor of the required page + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Maximum number of items in the page + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + default: 10 + maximum: 100 + minimum: 1 + type: number + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKeysPaginatedResponse" + description: A paginated response containing ApiKey objects + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get all API keys + tags: + - Cosigners (Beta) + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.cosignersBeta.getApiKeys(cosignersBetaApiGetApiKeysRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.cosignersBeta().getApiKeys(cosignerId, order, pageCursor,\ + \ pageSize);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.get_api_keys(cosigner_id, order,\ + \ page_cursor, page_size);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.cosignersBeta.getApiKeys(cosignersBetaApiGetApiKeysRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.cosignersBeta().getApiKeys(cosignerId, order, pageCursor,\ + \ pageSize);" + - lang: Python + source: "response = fireblocks.cosigners_beta.get_api_keys(cosigner_id, order,\ + \ page_cursor, page_size);" + x-accepts: + - application/json + /cosigners/{cosignerId}/api_keys/{apiKeyId}: + delete: + description: |- + Unpair an API key from a cosigner + Endpoint Permission: Admin and Non-Signing Admin. + operationId: unpairApiKey + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + - description: The unique identifier of the API key + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: apiKeyId + required: true + schema: + type: string + style: simple + responses: + "202": + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKey" + description: The API key object to be unpaired + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + Location: + $ref: "#/components/headers/Location" + default: + $ref: "#/components/responses/Error" + summary: Unpair API key + tags: + - Cosigners (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.cosignersBeta.unpairApiKey(cosignersBetaApiUnpairApiKeyRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.cosignersBeta().unpairApiKey(cosignerId,\ + \ apiKeyId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.unpair_api_key(cosigner_id,\ + \ api_key_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.cosignersBeta.unpairApiKey(cosignersBetaApiUnpairApiKeyRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.cosignersBeta().unpairApiKey(cosignerId,\ + \ apiKeyId);" + - lang: Python + source: "response = fireblocks.cosigners_beta.unpair_api_key(cosigner_id,\ + \ api_key_id);" + x-accepts: + - application/json + get: + description: |- + Get an API key by ID. + **Note:** These endpoints are currently in beta and might be subject to changes. + Endpoint Permission: Admin and Non-Signing Admin. + operationId: getApiKey + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + - description: The unique identifier of the API key + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: apiKeyId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ApiKey" + description: An ApiKey object + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get API key + tags: + - Cosigners (Beta) + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.cosignersBeta.getApiKey(cosignersBetaApiGetApiKeyRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.cosignersBeta().getApiKey(cosignerId,\ + \ apiKeyId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.get_api_key(cosigner_id, api_key_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.cosignersBeta.getApiKey(cosignersBetaApiGetApiKeyRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.cosignersBeta().getApiKey(cosignerId,\ + \ apiKeyId);" + - lang: Python + source: "response = fireblocks.cosigners_beta.get_api_key(cosigner_id, api_key_id);" + x-accepts: + - application/json + patch: + description: |- + Update the callback handler of an API key + Endpoint Permission: Admin and Non-Signing Admin. + operationId: updateCallbackHandler + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + - description: The unique identifier of the API key + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: apiKeyId + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateCallbackHandlerRequest" + required: true + responses: + "202": + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateCallbackHandlerResponse" + description: The API key object with the new callback handler + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + Location: + $ref: "#/components/headers/Location" + default: + $ref: "#/components/responses/Error" + summary: Update API key callback handler + tags: + - Cosigners (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.cosignersBeta.updateCallbackHandler(cosignersBetaApiUpdateCallbackHandlerRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.cosignersBeta().updateCallbackHandler(updateCallbackHandlerRequest,\ + \ cosignerId, apiKeyId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.update_callback_handler(update_callback_handler_request,\ + \ cosigner_id, api_key_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.cosignersBeta.updateCallbackHandler(cosignersBetaApiUpdateCallbackHandlerRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.cosignersBeta().updateCallbackHandler(updateCallbackHandlerRequest,\ + \ cosignerId, apiKeyId);" + - lang: Python + source: "response = fireblocks.cosigners_beta.update_callback_handler(update_callback_handler_request,\ + \ cosigner_id, api_key_id);" + x-content-type: application/json + x-accepts: + - application/json + put: + description: |- + Pair an API key to a cosigner + Endpoint Permission: Admin and Non-Signing Admin. + operationId: pairApiKey + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + - description: The unique identifier of the API key + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: apiKeyId + required: true + schema: + type: string + 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/PairApiKeyRequest" + required: true + responses: + "202": + content: + application/json: + schema: + $ref: "#/components/schemas/PairApiKeyResponse" + description: The API key object to be paired + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + Location: + $ref: "#/components/headers/Location" + default: + $ref: "#/components/responses/Error" + summary: Pair API key + tags: + - Cosigners (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> =\ + \ fireblocks.cosignersBeta.pairApiKey(cosignersBetaApiPairApiKeyRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.cosignersBeta().pairApiKey(pairApiKeyRequest,\ + \ cosignerId, apiKeyId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.pair_api_key(pair_api_key_request,\ + \ cosigner_id, api_key_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> =\ + \ fireblocks.cosignersBeta.pairApiKey(cosignersBetaApiPairApiKeyRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.cosignersBeta().pairApiKey(pairApiKeyRequest,\ + \ cosignerId, apiKeyId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.cosigners_beta.pair_api_key(pair_api_key_request,\ + \ cosigner_id, api_key_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /cosigners/{cosignerId}/api_keys/{apiKeyId}/{requestId}: + get: + description: |- + Get the status of an asynchronous request + Endpoint Permission: Admin and Non-Signing Admin. + operationId: getRequestStatus + parameters: + - description: The unique identifier of the cosigner + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: cosignerId + required: true + schema: + format: uuid + type: string + style: simple + - description: The unique identifier of the API key + example: 44fcead0-7053-4831-a53a-df7fb90d440f + explode: false + in: path + name: apiKeyId + required: true + schema: + type: string + style: simple + - explode: false + in: path + name: requestId + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/Status" + description: The status of the request + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get request status + tags: + - Cosigners (Beta) + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> = fireblocks.cosignersBeta.getRequestStatus(cosignersBetaApiGetRequestStatusRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.cosignersBeta().getRequestStatus(cosignerId,\ + \ apiKeyId, requestId);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.cosigners_beta.get_request_status(cosigner_id,\ + \ api_key_id, request_id);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> = fireblocks.cosignersBeta.getRequestStatus(cosignersBetaApiGetRequestStatusRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.cosignersBeta().getRequestStatus(cosignerId,\ + \ apiKeyId, requestId);" + - lang: Python + source: "response = fireblocks.cosigners_beta.get_request_status(cosigner_id,\ + \ api_key_id, request_id);" + x-accepts: + - application/json + /utxo_management/{vaultAccountId}/{assetId}/unspent_outputs: + get: + description: |- + Returns a paginated list of unspent transaction outputs (UTXOs) for a UTXO-based asset in a vault account, with optional filters for labels, statuses, amounts, and more. + **Note:** These endpoints are currently in beta and might be subject to changes. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: getUtxos + 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: Cursor for the next page of results + example: MjAyNS0wNy0wOSAxMDo1MzoxMy40NTI=:NA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: "Number of results per page (max 250, default 50)" + example: 50 + explode: true + in: query + name: pageSize + required: false + schema: + default: 50 + maximum: 250 + minimum: 1 + type: integer + style: form + - description: Field to sort by + example: AMOUNT + explode: true + in: query + name: sort + required: false + schema: + enum: + - AMOUNT + - CONFIRMATIONS + type: string + style: form + - description: Sort order + example: ASC + explode: true + in: query + name: order + required: false + schema: + enum: + - ASC + - DESC + type: string + style: form + - description: Only return UTXOs that have ALL of these labels (AND logic). + example: + - cold-storage + explode: true + in: query + name: includeAllLabels + required: false + schema: + items: + type: string + type: array + style: form + - description: Return UTXOs that have ANY of these labels (OR logic). + example: + - vip + - high-value + explode: true + in: query + name: includeAnyLabels + required: false + schema: + items: + type: string + type: array + style: form + - description: Exclude UTXOs that have ANY of these labels. + example: + - deprecated + explode: true + in: query + name: excludeAnyLabels + required: false + schema: + items: + type: string + type: array + style: form + - description: Filter by UTXO statuses to include. + example: + - AVAILABLE + - PENDING + explode: true + in: query + name: includeStatuses + required: false + schema: + items: + type: string + type: array + style: form + - description: Filter by address + example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa + explode: true + in: query + name: address + required: false + schema: + type: string + style: form + - description: Minimum amount filter + example: "0.001" + explode: true + in: query + name: minAmount + required: false + schema: + type: string + style: form + - description: Maximum amount filter + example: "1.0" + explode: true + in: query + name: maxAmount + required: false + schema: + type: string + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ListUtxosResponse" + description: A paginated list of UTXOs + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: List unspent outputs (UTXOs) + tags: + - UTXO Management (Beta) + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise> =\ + \ fireblocks.uTXOManagementBeta.getUtxos(uTXOManagementBetaApiGetUtxosRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response = fireblocks.uTXOManagementBeta().getUtxos(vaultAccountId,\ + \ assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels,\ + \ excludeAnyLabels, includeStatuses, address, minAmount, maxAmount);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.u_t_x_o_management_beta.get_utxos(vault_account_id,\ + \ asset_id, page_cursor, page_size, sort, order, include_all_labels, include_any_labels,\ + \ exclude_any_labels, include_statuses, address, min_amount, max_amount);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise> =\ + \ fireblocks.uTXOManagementBeta.getUtxos(uTXOManagementBetaApiGetUtxosRequest);" + - lang: Java + source: "CompletableFuture> response = fireblocks.uTXOManagementBeta().getUtxos(vaultAccountId,\ + \ assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels,\ + \ excludeAnyLabels, includeStatuses, address, minAmount, maxAmount);" + - lang: Python + source: "response = fireblocks.u_t_x_o_management_beta.get_utxos(vault_account_id,\ + \ asset_id, page_cursor, page_size, sort, order, include_all_labels, include_any_labels,\ + \ exclude_any_labels, include_statuses, address, min_amount, max_amount);" + x-accepts: + - application/json + /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. + operationId: updateUtxoLabels + 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/AttachDetachUtxoLabelsRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/AttachDetachUtxoLabelsResponse" + description: UTXOs with updated labels + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Attach or detach labels to/from UTXOs + tags: + - UTXO Management (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.uTXOManagementBeta.updateUtxoLabels(uTXOManagementBetaApiUpdateUtxoLabelsRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.uTXOManagementBeta().updateUtxoLabels(attachDetachUtxoLabelsRequest,\ + \ vaultAccountId, assetId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.u_t_x_o_management_beta.update_utxo_labels(attach_detach_utxo_labels_request,\ + \ vault_account_id, asset_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.uTXOManagementBeta.updateUtxoLabels(uTXOManagementBetaApiUpdateUtxoLabelsRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.uTXOManagementBeta().updateUtxoLabels(attachDetachUtxoLabelsRequest,\ + \ vaultAccountId, assetId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.u_t_x_o_management_beta.update_utxo_labels(attach_detach_utxo_labels_request,\ + \ vault_account_id, asset_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /legal_entities: + get: + description: |- + Returns legal entity registrations for the workspace with cursor-based pagination. + If query parameter vaultAccountId is used it returns the legal entity registration associated with a specific vault account. If no explicit mapping exists for the vault, the workspace default legal entity is returned. Returns an empty response if neither a vault mapping nor a default legal entity is configured. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: listLegalEntities + parameters: + - description: "The ID of the vault account. When provided, returns the legal\ + \ entity associated with that vault account and pagination parameters are\ + \ ignored." + explode: true + in: query + name: vaultAccountId + required: false + schema: + format: numeric + type: string + x-fb-entity: vault_account + style: form + - description: Cursor string returned in `next` or `prev` of a previous response. + Ignored when `vaultAccountId` is provided. + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Maximum number of registrations to return. Ignored when `vaultAccountId` + is provided. + explode: true + in: query + name: pageSize + required: false + schema: + default: 50 + maximum: 100 + minimum: 1 + type: integer + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ListLegalEntitiesResponse" + description: "A paginated list of legal entity registrations. When `vaultAccountId`\ + \ is provided, `data` contains at most one item." + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: List legal entities (Paginated) + tags: + - Compliance + x-rate-limit-category: query + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.listLegalEntities(complianceApiListLegalEntitiesRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.compliance().listLegalEntities(vaultAccountId, pageCursor,\ + \ pageSize);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance.list_legal_entities(vault_account_id,\ + \ page_cursor, page_size);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.listLegalEntities(complianceApiListLegalEntitiesRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.compliance().listLegalEntities(vaultAccountId, pageCursor,\ + \ pageSize);" + - lang: Python + source: "response = fireblocks.compliance.list_legal_entities(vault_account_id,\ + \ page_cursor, page_size);" + x-accepts: + - application/json + post: + description: |- + Registers a new legal entity for the workspace using its LEI (Legal Entity Identifier) code. The LEI is validated against the GLEIF registry. Each workspace can register multiple legal entities. + Endpoint Permission: Admin, Non-Signing Admin. + operationId: registerLegalEntity + 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/RegisterLegalEntityRequest" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/LegalEntityRegistration" + description: Legal entity registered successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Invalid LEI or request parameters + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: LEI not found in the GLEIF registry + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: A legal entity with this LEI is already registered for the + workspace + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Internal Server Error + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Register a new legal entity + tags: + - Compliance + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.registerLegalEntity(complianceApiRegisterLegalEntityRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.compliance().registerLegalEntity(registerLegalEntityRequest,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance.register_legal_entity(register_legal_entity_request,\ + \ idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.registerLegalEntity(complianceApiRegisterLegalEntityRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.compliance().registerLegalEntity(registerLegalEntityRequest,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.compliance.register_legal_entity(register_legal_entity_request,\ + \ idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /legal_entities/{legalEntityId}: + get: + description: |- + Returns details of a specific legal entity registration, including GLEIF data when available. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: getLegalEntity + parameters: + - description: The unique ID of the legal entity registration + explode: false + in: path + name: legalEntityId + required: true + schema: + format: uuid + type: string + style: simple + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LegalEntityRegistration" + description: Legal entity registration details + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Legal entity registration not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Get a legal entity + tags: + - Compliance + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.getLegalEntity(complianceApiGetLegalEntityRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response = + fireblocks.compliance().getLegalEntity(legalEntityId); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.compliance.get_legal_entity(legal_entity_id); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.getLegalEntity(complianceApiGetLegalEntityRequest);" + - lang: Java + source: CompletableFuture> response = + fireblocks.compliance().getLegalEntity(legalEntityId); + - lang: Python + source: response = fireblocks.compliance.get_legal_entity(legal_entity_id); + x-accepts: + - application/json + put: + description: |- + Updates the status of a legal entity registration. Setting isDefault to true marks the registration as the workspace default, which is applied to vault accounts that have no explicit legal entity mapping. + Endpoint Permission: Admin, Non-Signing Admin. + operationId: updateLegalEntity + parameters: + - description: The unique ID of the legal entity registration + explode: false + in: path + name: legalEntityId + required: true + schema: + format: uuid + type: string + 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/UpdateLegalEntityRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/LegalEntityRegistration" + description: Updated legal entity registration + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Registration is not in APPROVED status + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Legal entity registration not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Update legal entity + tags: + - Compliance + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.updateLegalEntity(complianceApiUpdateLegalEntityRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.compliance().updateLegalEntity(updateLegalEntityRequest,\ + \ legalEntityId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance.update_legal_entity(update_legal_entity_request,\ + \ legal_entity_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.updateLegalEntity(complianceApiUpdateLegalEntityRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.compliance().updateLegalEntity(updateLegalEntityRequest,\ + \ legalEntityId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.compliance.update_legal_entity(update_legal_entity_request,\ + \ legal_entity_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /legal_entities/{legalEntityId}/vaults: + get: + description: |- + Returns vault account IDs explicitly assigned to a specific legal entity registration, with cursor-based pagination. + Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + operationId: listVaultsForLegalEntity + parameters: + - description: The unique ID of the legal entity registration + explode: false + in: path + name: legalEntityId + required: true + schema: + format: uuid + type: string + style: simple + - description: Cursor string returned in `next` or `prev` of a previous response + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + - description: Maximum number of registrations to return + explode: true + in: query + name: pageSize + required: false + schema: + default: 50 + maximum: 100 + minimum: 1 + type: integer + style: form + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/ListVaultsForRegistrationResponse" + description: Paginated list of vault account IDs assigned to the legal entity + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Legal entity registration not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: List vault accounts for a legal entity (Paginated) + tags: + - Compliance + x-rate-limit-category: read + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.listVaultsForLegalEntity(complianceApiListVaultsForLegalEntityRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture>\ + \ response = fireblocks.compliance().listVaultsForLegalEntity(legalEntityId,\ + \ pageCursor, pageSize);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id,\ + \ page_cursor, page_size);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.listVaultsForLegalEntity(complianceApiListVaultsForLegalEntityRequest);" + - lang: Java + source: "CompletableFuture>\ + \ response = fireblocks.compliance().listVaultsForLegalEntity(legalEntityId,\ + \ pageCursor, pageSize);" + - lang: Python + source: "response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id,\ + \ page_cursor, page_size);" + x-accepts: + - application/json + post: + description: |- + Assigns one or more vault accounts to a specific legal entity registration. Explicitly mapped vault accounts take precedence over the workspace default legal entity. + Endpoint Permission: Admin, Non-Signing Admin. + operationId: assignVaultsToLegalEntity + parameters: + - description: The unique ID of the legal entity registration + explode: false + in: path + name: legalEntityId + required: true + schema: + format: uuid + type: string + 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/AssignVaultsToLegalEntityRequest" + required: true + responses: + "201": + content: + application/json: + schema: + $ref: "#/components/schemas/AssignVaultsToLegalEntityResponse" + description: Vault accounts assigned successfully + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorSchema" + description: Legal entity registration not found + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Assign vault accounts to a legal entity + tags: + - Compliance + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.compliance.assignVaultsToLegalEntity(complianceApiAssignVaultsToLegalEntityRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture>\ + \ response = fireblocks.compliance().assignVaultsToLegalEntity(assignVaultsToLegalEntityRequest,\ + \ legalEntityId, idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.compliance.assign_vaults_to_legal_entity(assign_vaults_to_legal_entity_request,\ + \ legal_entity_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.compliance.assignVaultsToLegalEntity(complianceApiAssignVaultsToLegalEntityRequest);" + - lang: Java + source: "CompletableFuture>\ + \ response = fireblocks.compliance().assignVaultsToLegalEntity(assignVaultsToLegalEntityRequest,\ + \ legalEntityId, idempotencyKey);" + - lang: Python + source: "response = fireblocks.compliance.assign_vaults_to_legal_entity(assign_vaults_to_legal_entity_request,\ + \ legal_entity_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json + /genie/sessions: + post: + description: | + Starts a new conversation with Genie, the Fireblocks AI assistant. Returns a `sessionId` — pass it when sending messages, and reuse it across calls to keep one continuous conversation. + + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: createGenieSession + 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 + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GenieCreateSessionResponse" + description: Session created + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Create a Genie session + tags: + - Genie (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.genieBeta.createGenieSession(genieBetaApiCreateGenieSessionRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: CompletableFuture> response + = fireblocks.genieBeta().createGenieSession(idempotencyKey); + name: Fireblocks SDK Java example + - language: python + code: response = fireblocks.genie_beta.create_genie_session(idempotency_key); + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.genieBeta.createGenieSession(genieBetaApiCreateGenieSessionRequest);" + - lang: Java + source: CompletableFuture> response + = fireblocks.genieBeta().createGenieSession(idempotencyKey); + - lang: Python + source: response = fireblocks.genie_beta.create_genie_session(idempotency_key); + x-accepts: + - application/json + /genie/sessions/{sessionId}/messages: + post: + description: | + Sends a question to Genie and returns a single answer. Reuse the `sessionId` from the original session on follow-up messages to continue the conversation with prior context. + + **Note:** This endpoint is currently in beta and might be subject to changes. + operationId: sendGenieMessage + parameters: + - description: The Genie session ID returned from `POST /genie/sessions`. + explode: false + in: path + name: sessionId + required: true + schema: + example: 7c1b2e1c-1c2a-4f3a-9c2d-2e0a8a1f8e1a + type: string + 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/GenieSendMessageRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/GenieChatMessage" + description: Genie response + headers: + X-Request-ID: + $ref: "#/components/headers/X-Request-ID" + default: + $ref: "#/components/responses/Error" + summary: Send a message to a Genie session + tags: + - Genie (Beta) + x-rate-limit-category: write + x-readme: + code-samples: + - language: typescript + code: "const response: Promise>\ + \ = fireblocks.genieBeta.sendGenieMessage(genieBetaApiSendGenieMessageRequest);" + name: Fireblocks SDK TypeScript example + - language: java + code: "CompletableFuture> response\ + \ = fireblocks.genieBeta().sendGenieMessage(genieSendMessageRequest, sessionId,\ + \ idempotencyKey);" + name: Fireblocks SDK Java example + - language: python + code: "response = fireblocks.genie_beta.send_genie_message(genie_send_message_request,\ + \ session_id, idempotency_key);" + name: Fireblocks SDK Python example + x-codeSamples: + - lang: TypeScript + source: "const response: Promise>\ + \ = fireblocks.genieBeta.sendGenieMessage(genieBetaApiSendGenieMessageRequest);" + - lang: Java + source: "CompletableFuture> response\ + \ = fireblocks.genieBeta().sendGenieMessage(genieSendMessageRequest, sessionId,\ + \ idempotencyKey);" + - lang: Python + source: "response = fireblocks.genie_beta.send_genie_message(genie_send_message_request,\ + \ session_id, idempotency_key);" + x-content-type: application/json + x-accepts: + - application/json +components: + headers: + X-Request-ID: + description: Unique ID correlated to the API request. Please provide it in any + support ticket you create or on Github issues related to Fireblocks SDKs + explode: false + schema: + type: string + style: simple + next-page: + description: URL representing a new request to this API endpoint to receive + the next page of results. + explode: false + schema: + type: string + style: simple + prev-page: + description: URL representing a new request to this API endpoint to receive + the previous page of results. + explode: false + schema: + type: string + style: simple + Location: + description: The location URL of the request status + explode: false + schema: + type: string + style: simple + parameters: + X-Idempotency-Key: + 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 + X-End-User-Wallet-Id_required: + description: Unique ID of the End-User wallet to the API request. Required for + end-user wallet operations. + explode: false + in: header + name: X-End-User-Wallet-Id + required: true + schema: + format: uuid + type: string + style: simple + X-End-User-Wallet-Id: description: Unique ID of the End-User wallet to the API request. Required for end-user wallet operations. explode: false @@ -33558,6 +35466,115 @@ components: format: uuid type: string style: simple + TokenPageCursor: + description: Page cursor to get the next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + explode: true + in: query + name: pageCursor + required: false + schema: + type: string + style: form + TokenPageSize: + description: "Number of items per page (max 100), requesting more than 100 will\ + \ return 100 items" + example: 10 + explode: true + in: query + name: pageSize + required: false + schema: + maximum: 100 + minimum: 1 + type: integer + style: form + TokenOrder: + description: ASC / DESC ordering (default DESC) + explode: true + in: query + name: order + required: false + schema: + default: DESC + enum: + - ASC + - DESC + type: string + style: form + TokenStartDate: + description: Start date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: startDate + required: false + schema: + format: date-time + type: string + style: form + TokenEndDate: + description: End date of the time range in ISO 8601 format + example: 2025-01-16T15:45:00Z + explode: true + in: query + name: endDate + required: false + schema: + format: date-time + type: string + style: form + TokenInterval: + description: Time interval for grouping data + example: DAY + explode: true + in: query + name: interval + required: false + schema: + default: DAY + enum: + - HOUR + - DAY + - WEEK + - MONTH + type: string + style: form + TokenSortByTimestamp: + description: Sorting field (enum). Sorting only supported by 'blockTimestamp' + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - blockTimestamp + type: string + style: form + TokenBalancesSortBy: + description: Sorting field for balances + explode: true + in: query + name: sortBy + required: false + schema: + default: blockTimestamp + enum: + - accountAddress + - blockTimestamp + type: string + style: form + TokenAccountAddress: + description: The account address to get balance history for + explode: false + in: path + name: accountAddress + required: true + schema: + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + style: simple BaseAssetId: description: The blockchain base assetId example: ETH_TEST3 @@ -36620,6 +38637,13 @@ components: - assetTypes - capabilities type: object + ConnectedAccountType: + enum: + - EXCHANGE + - FIAT + - CONNECTED_ACCOUNT + example: CONNECTED_ACCOUNT + type: string ConnectedAccount: properties: id: @@ -36644,7 +38668,18 @@ components: description: "The ID of the parent main account, if this is a sub account." example: acc-parent-001 type: string + apiKey: + description: The API key identifier used to connect this account. + example: rk_live_abc123 + type: string + providerAccountName: + description: The account name provided by the provider. + example: Main Account + type: string + accountType: + $ref: "#/components/schemas/ConnectedAccountType" required: + - accountType - id - manifest - name @@ -36670,6 +38705,7 @@ components: capabilities: - DEPOSITS - WITHDRAWALS + accountType: CONNECTED_ACCOUNT - id: acc-654321 name: Secondary Account providerId: BRIDGE @@ -36682,6 +38718,7 @@ components: assetTypes: [] capabilities: - WITHDRAWALS + accountType: CONNECTED_ACCOUNT properties: data: description: List of connected accounts matching the query. @@ -36699,6 +38736,7 @@ components: capabilities: - DEPOSITS - WITHDRAWALS + accountType: CONNECTED_ACCOUNT - id: acc-654321 name: Secondary Account providerId: BRIDGE @@ -36711,6 +38749,7 @@ components: assetTypes: [] capabilities: - WITHDRAWALS + accountType: CONNECTED_ACCOUNT items: $ref: "#/components/schemas/ConnectedAccount" type: array @@ -36741,6 +38780,7 @@ components: - $ref: "#/components/schemas/ConnectedAccount" - $ref: "#/components/schemas/ConnectedSingleAccount" example: + apiKey: rk_live_abc123 totalBalance: amount: "1201.15" denominatedAssetId: ea6c3cb7-355a-4ee3-82ff-267c69970214 @@ -36750,8 +38790,10 @@ components: assetTypes: [] capabilities: - WITHDRAWALS + accountType: CONNECTED_ACCOUNT name: Main Venue Account id: acc-123456 + providerAccountName: Main Account parentId: acc-parent-001 subAccountsIds: - acc-sub-001 @@ -37000,6 +39042,207 @@ components: required: - data type: object + AllowlistEntryStatus: + description: | + Current status of the allowlist entry. + - `ACTIVE` — Entry is approved and usable. + - `PENDING_PROVIDER_COOLDOWN` — Entry was recently added or modified and is in the provider-enforced cooldown window before becoming active. + - `PENDING_PROVIDER_REVIEW` — Entry is awaiting provider-side review. + - `PENDING_APPROVAL` — Entry is awaiting customer/admin approval on the Fireblocks side. + - `REJECTED` — Entry was rejected at submission time and will not become active. + - `REMOVED` — Entry was deactivated after previously being active. May still appear in results for audit purposes. + enum: + - ACTIVE + - PENDING_PROVIDER_COOLDOWN + - PENDING_PROVIDER_REVIEW + - PENDING_APPROVAL + - REJECTED + - REMOVED + example: ACTIVE + type: string + AllowlistEntryProviderMetadata: + additionalProperties: + description: Provider-defined value. May be any JSON type. + description: | + Provider-specific pass-through data for this address. Treat as an opaque blob: the shape, set of keys, and value types vary by provider, by entry, and over time. Keys may be added, renamed, or removed without notice as providers evolve their integrations or as new providers are added. The example below illustrates one possible shape and is not a contract — do not program against specific keys. + example: + coinbase_exchange_id: "1234567890" + nullable: true + type: object + AllowlistEntry: + example: + providerReferenceId: CB-SAMPLE-001 + addedAt: 2024-01-15T10:30:00Z + address: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb + assets: + - BTC + - ETH + providerMetadata: + coinbase_exchange_id: "1234567890" + id: 550e8400-e29b-41d4-a716-446655440000 + label: Coinbase Hot Wallet + addressIdentifier: addressIdentifier + networks: + - ETHEREUM + - POLYGON + status: ACTIVE + properties: + id: + description: Unique identifier for the allowlist entry + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid + type: string + address: + description: The blockchain address + example: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb + type: string + assets: + description: | + Assets approved for this address. + + Each value is either a Fireblocks asset ID (when the provider's asset maps to a Fireblocks-supported asset) or the raw provider asset symbol (when no mapping exists). Treat values as opaque strings. + + Possible combinations: + - One or more specific asset values (e.g., `["BTC", "ETH"]`) + + See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs. + example: + - BTC + - ETH + items: + type: string + type: array + networks: + description: | + Networks approved for this address. + + Each value is either a Fireblocks network ID (when the provider's network maps to a Fireblocks-supported blockchain) or the raw provider blockchain identifier (when no mapping exists). Treat values as opaque strings. + + Possible combinations: + - One or more specific network values (e.g., `["ETHEREUM", "POLYGON"]`) + + See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers. + example: + - ETHEREUM + - POLYGON + items: + type: string + type: array + label: + description: Human-readable label for the address + example: Coinbase Hot Wallet + nullable: true + type: string + addressIdentifier: + description: "Additional identifier (e.g., memo, destination tag)" + nullable: true + type: string + example: null + status: + $ref: "#/components/schemas/AllowlistEntryStatus" + addedAt: + description: ISO 8601 timestamp when entry was added + example: 2024-01-15T10:30:00Z + format: date-time + type: string + providerReferenceId: + description: Provider's internal reference ID + example: CB-SAMPLE-001 + nullable: true + type: string + providerMetadata: + additionalProperties: + description: Provider-defined value. May be any JSON type. + description: | + Provider-specific pass-through data for this address. Treat as an opaque blob: the shape, set of keys, and value types vary by provider, by entry, and over time. Keys may be added, renamed, or removed without notice as providers evolve their integrations or as new providers are added. The example below illustrates one possible shape and is not a contract — do not program against specific keys. + example: + coinbase_exchange_id: "1234567890" + nullable: true + type: object + required: + - addedAt + - address + - assets + - id + - networks + - status + type: object + AllowlistMetadata: + description: Allowlist-specific metadata + example: + lastSyncedAt: 2026-05-01T15:30:00Z + syncStatus: SUCCESS + properties: + lastSyncedAt: + description: ISO 8601 timestamp of last sync with provider + example: 2026-05-01T15:30:00Z + format: date-time + type: string + syncStatus: + description: Status of last sync operation + enum: + - SUCCESS + - FAILED + - IN_PROGRESS + - NEVER_SYNCED + example: SUCCESS + type: string + type: object + AllowlistResponse: + example: + next: eyJsYXN0SWQiOiJlbnRyeS0wMDQifQ== + metadata: + lastSyncedAt: 2026-05-01T15:30:00Z + syncStatus: SUCCESS + total: 42 + data: + - id: 550e8400-e29b-41d4-a716-446655440000 + address: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb + assets: + - BTC + - ETH + networks: + - ETHEREUM + - POLYGON + label: Coinbase Hot Wallet + addressIdentifier: null + status: ACTIVE + addedAt: 2024-01-15T10:30:00Z + providerReferenceId: CB-SAMPLE-001 + properties: + data: + description: Array of allowlist entries + example: + - id: 550e8400-e29b-41d4-a716-446655440000 + address: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb + assets: + - BTC + - ETH + networks: + - ETHEREUM + - POLYGON + label: Coinbase Hot Wallet + addressIdentifier: null + status: ACTIVE + addedAt: 2024-01-15T10:30:00Z + providerReferenceId: CB-SAMPLE-001 + items: + $ref: "#/components/schemas/AllowlistEntry" + type: array + metadata: + $ref: "#/components/schemas/AllowlistMetadata" + total: + description: Total number of allowlist entries + example: 42 + type: integer + next: + description: "Cursor for the next page of results, if available" + example: eyJsYXN0SWQiOiJlbnRyeS0wMDQifQ== + type: string + required: + - data + - total + type: object CounterpartyGroup: description: A counterparty group used to classify counterparties for compliance and routing purposes @@ -39952,6 +42195,7 @@ components: - PROGRAM_CALL - MULTI_DESTINATION - OEC_PARTNER + - WALLET_POOL type: string SourceTransferPeerPathResponse: description: Source of the transaction. @@ -40606,6 +42850,7 @@ components: - END_USER_WALLET - PROGRAM_CALL - MULTI_DESTINATION + - WALLET_POOL example: VAULT_ACCOUNT type: string TransferPeerSubTypeEnum: @@ -46307,11 +48552,26 @@ components: - beneficiary - originator type: object + TransactionConfigurations: + example: + expiresAfterSeconds: 3600 + properties: + expiresAfterSeconds: + description: "The number of seconds the transaction is valid for before\ + \ it expires. After the specified duration, the transaction will expire\ + \ if it has not been broadcasted." + example: 3600 + maximum: 86400 + minimum: 300 + type: number + type: object TransactionRequest: example: note: Ticket 123 priorityFee: "2" networkFee: TransactionRequest_networkFee + configurations: + expiresAfterSeconds: 3600 fee: TransactionRequest_fee destination: oneTimeAddress: @@ -46382,7 +48642,6 @@ components: customerRefId: abcdef travelRuleMessageId: trm_12345678-1234-1234-1234-123456789012 useGasless: true - expiresAfterSeconds: 3600 travelRuleMessage: originatorRef: ORG123456 travelRuleBehaviorRef: TRB987654 @@ -47682,14 +49941,8 @@ components: useGasless: description: '- Override the default gasless configuration by sending true\false' type: boolean - expiresAfterSeconds: - description: "The number of seconds the transaction is valid for before\ - \ it expires. After the specified duration, the transaction will expire\ - \ if it has not been broadcasted." - example: 3600 - maximum: 86400 - minimum: 600 - type: number + configurations: + $ref: "#/components/schemas/TransactionConfigurations" type: object CreateTransactionResponse: example: @@ -49539,6 +51792,8 @@ components: note: Ticket 123 priorityFee: "2" networkFee: TransactionRequest_networkFee + configurations: + expiresAfterSeconds: 3600 fee: TransactionRequest_fee destination: oneTimeAddress: @@ -49609,7 +51864,6 @@ components: customerRefId: abcdef travelRuleMessageId: trm_12345678-1234-1234-1234-123456789012 useGasless: true - expiresAfterSeconds: 3600 travelRuleMessage: originatorRef: ORG123456 travelRuleBehaviorRef: TRB987654 @@ -50803,6 +53057,8 @@ components: note: Ticket 123 priorityFee: "2" networkFee: TransactionRequest_networkFee + configurations: + expiresAfterSeconds: 3600 fee: TransactionRequest_fee destination: oneTimeAddress: @@ -50873,7 +53129,6 @@ components: customerRefId: abcdef travelRuleMessageId: trm_12345678-1234-1234-1234-123456789012 useGasless: true - expiresAfterSeconds: 3600 travelRuleMessage: originatorRef: ORG123456 travelRuleBehaviorRef: TRB987654 @@ -52258,11 +54513,38 @@ 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 Webhook: example: createdAt: 1625126400000 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 @@ -52312,6 +54594,8 @@ components: example: 1625126400000 format: int64 type: integer + mtls: + $ref: "#/components/schemas/WebhookMtls" required: - createdAt - events @@ -52327,6 +54611,11 @@ components: - createdAt: 1625126400000 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 @@ -52336,6 +54625,11 @@ components: - createdAt: 1625126400000 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 @@ -52359,6 +54653,11 @@ components: CreateWebhookRequest: example: description: This webhook is used for transactions notifications + mtls: + clientSignedCert: |- + -----BEGIN CERTIFICATE----- + ... + -----END CERTIFICATE----- url: https://example.com/webhook events: - transaction.created @@ -52390,13 +54689,38 @@ components: \ receive notifications." example: false type: boolean + mtls: + $ref: "#/components/schemas/WebhookMtls" required: - events - url type: object + WebhookMtlsCsrResponse: + description: mTLS Certificate Signing Request response + example: + csr: |- + -----BEGIN CERTIFICATE REQUEST----- + ... + -----END CERTIFICATE REQUEST----- + properties: + csr: + description: The Fireblocks PEM-encoded Certificate Signing Request (CSR). + example: |- + -----BEGIN CERTIFICATE REQUEST----- + ... + -----END CERTIFICATE REQUEST----- + type: string + required: + - csr + type: object UpdateWebhookRequest: example: description: This webhook is used for transactions notifications + mtls: + clientSignedCert: |- + -----BEGIN CERTIFICATE----- + ... + -----END CERTIFICATE----- url: https://example.com/webhook events: - transaction.created @@ -52427,6 +54751,8 @@ components: description: The status of the webhook example: false type: boolean + mtls: + $ref: "#/components/schemas/WebhookMtls" type: object WebhookMetric: example: @@ -52824,16 +55150,524 @@ components: example: Fireblocks type: string required: - - id + - id + - name + type: object + LeanContractDto: + example: + owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + canDeploy: true + vendor: "" + name: My Contract + description: an ERC20 implementation + isPublic: true + attributes: + useCases: + - Stablecoin + - CBDC + standards: + - ERC-20 + - ERC-1400 + auditor: + name: MyAuditor + imageURL: https://my-images.com/my-image.jpg + link: https://my-auditor.com/my-audit-report + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: FUNGIBLE_TOKEN + properties: + id: + description: The unique identifier of the contract template + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: string + name: + description: The name of the contract template + example: My Contract + type: string + description: + description: A short description of the contract template + example: an ERC20 implementation + type: string + attributes: + allOf: + - $ref: "#/components/schemas/ContractAttributes" + description: The attributes related to this contract template. It will be + displayed in the tokenization page + example: + useCases: + - Stablecoin + - CBDC + standards: + - ERC-20 + - ERC-1400 + auditor: + name: MyAuditor + imageURL: https://my-images.com/my-image.jpg + link: https://my-auditor.com/my-audit-report + isPublic: + description: Is this a contract that is viewable by all fireblocks's users + or is it visible only for this workspace + example: true + type: boolean + canDeploy: + description: "True if the workspace allowed to deploy this contract, false\ + \ otherwise" + example: true + type: boolean + owner: + description: "The workspace id of the owner of this contract template. If\ + \ it's a private contract, only this workspace will be allowed to deploy\ + \ it" + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: string + vendor: + allOf: + - $ref: "#/components/schemas/VendorDto" + description: The details of the vendor of this contract template. Applicable + only for public contract templates + type: + enum: + - FUNGIBLE_TOKEN + - NON_FUNGIBLE_TOKEN + - NON_TOKEN + - TOKEN_EXTENSION + - TOKEN_UTILITY + type: string + required: + - description + - id + - isPublic + - name + type: object + TemplatesPaginatedResponse: + example: + next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + data: + - owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + canDeploy: true + vendor: "" + name: My Contract + description: an ERC20 implementation + isPublic: true + attributes: + useCases: + - Stablecoin + - CBDC + standards: + - ERC-20 + - ERC-1400 + auditor: + name: MyAuditor + imageURL: https://my-images.com/my-image.jpg + link: https://my-auditor.com/my-audit-report + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: FUNGIBLE_TOKEN + - owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + canDeploy: true + vendor: "" + name: My Contract + description: an ERC20 implementation + isPublic: true + attributes: + useCases: + - Stablecoin + - CBDC + standards: + - ERC-20 + - ERC-1400 + auditor: + name: MyAuditor + imageURL: https://my-images.com/my-image.jpg + link: https://my-auditor.com/my-audit-report + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: FUNGIBLE_TOKEN + properties: + data: + description: The data of the current page + items: + $ref: "#/components/schemas/LeanContractDto" + type: array + next: + description: The ID of the next page + example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + nullable: true + type: string + required: + - data + type: object + FunctionDoc: + properties: + details: + description: A description of the function + type: string + params: + additionalProperties: + type: string + description: A description of the function parameters + type: object + returns: + additionalProperties: + type: string + description: A description of the function return values. only for read + functions + type: object + type: object + ContractDoc: + properties: + details: + description: A description of the contract + example: A token that can be minted and burned + type: string + events: + description: A description of the contract`s events + example: "Upgraded(address): {\"details\": \"Emitted when the implementation\ + \ is upgraded.\"}" + type: string + kind: + description: Is it devdoc or userdoc + example: dev + type: string + methods: + additionalProperties: + $ref: "#/components/schemas/FunctionDoc" + description: The description of the contract functions + example: + constructor: + details: Initializes the contract + type: object + version: + description: The version of the contract + example: 1 + type: number + required: + - kind + - methods + - version + type: object + Parameter: + example: + components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + properties: + name: + description: The name of the parameter as it appears in the ABI + example: _name + type: string + description: + description: "A description of the parameter, fetched from the devdoc of\ + \ this contract" + example: The name of the token + type: string + internalType: + description: The internal type of the parameter as it appears in the ABI + example: string + type: string + type: + description: The type of the parameter as it appears in the ABI + example: string + type: string + components: + items: + $ref: "#/components/schemas/Parameter" + type: array + required: + - name + - type + type: object + AbiFunction: + example: + outputs: + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + inputs: + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + name: mint + stateMutability: pure + description: description + type: constructor + properties: + name: + description: The name of the contract function as it appears in the ABI + example: mint + type: string + stateMutability: + description: The state mutability of the contract function as it appears + in the ABI + enum: + - pure + - view + - nonpayable + - payable + example: pure + type: string + type: + description: The type of the function + enum: + - constructor + - function + - error + - event + - receive + - fallback + example: constructor + type: string + inputs: + description: The parameters that this function/constructor posses + items: + $ref: "#/components/schemas/Parameter" + type: array + outputs: + description: The parameters that this 'read' function returns + items: + $ref: "#/components/schemas/Parameter" + type: array + description: + description: The documentation of this function (if has any) + type: string + required: + - type + type: object + ContractUploadRequest: + example: + longDescription: | + a full ERC20 implementation, containing the following: + + - mint + - burn + bytecode: bytecode + protocol: ETH + docs: + details: "This contract implements an upgradeable proxy. It is upgradeable\ + \ because calls are delegated to an implementation address that can be\ + \ changed. This address is stored in storage in the location specified\ + \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ + \ conflict with the storage layout of the implementation behind the proxy." + errors: + ERC1967NonPayable(): + - details: An upgrade function sees `msg.value > 0` that may be lost. + events: + Upgraded(address): + details: Emitted when the implementation is upgraded. + kind: dev + methods: + constructor: + details: "Initializes the upgradeable proxy with an initial implementation\ + \ specified by `implementation`. If `_data` is nonempty, it's used\ + \ as data in a delegate call to `implementation`. This will typically\ + \ be an encoded function call, and allows initializing the storage\ + \ of the proxy like a Solidity constructor. Requirements: - If `data`\ + \ is empty, `msg.value` must be zero." + version: 1 + name: My Contract + description: an ERC20 implementation + abi: + - inputs: + - internalType: address + name: implementation + type: address + - internalType: bytes + name: _data + type: bytes + stateMutability: payable + type: constructor + attributes: + useCases: + - Stablecoin + - CBDC + standards: + - ERC-20 + - ERC-1400 + auditor: + name: MyAuditor + imageURL: https://my-images.com/my-image.jpg + link: https://my-auditor.com/my-audit-report + type: FUNGIBLE_TOKEN + sourcecode: sourcecode + properties: + name: + description: The name of the contract template + example: My Contract + type: string + description: + description: A short description of the contract template + example: an ERC20 implementation + type: string + longDescription: + description: "A full description of the contract template. May contain \n\ + \ to break the lines" + example: | + a full ERC20 implementation, containing the following: + + - mint + - burn + type: string + bytecode: + description: The compiled artifact of this smart contract. Used for deployment + of this contract template + type: string + sourcecode: + description: The source code of the contract. Optional. + type: string + type: + description: The type of the contract template + enum: + - FUNGIBLE_TOKEN + - NON_FUNGIBLE_TOKEN + - NON_TOKEN + - TOKEN_EXTENSION + - TOKEN_UTILITY + example: FUNGIBLE_TOKEN + type: string + docs: + allOf: + - $ref: "#/components/schemas/ContractDoc" + description: A `natspec` compliant documentation json. Can be retrieved + from the output json after compilation + example: + details: "This contract implements an upgradeable proxy. It is upgradeable\ + \ because calls are delegated to an implementation address that can\ + \ be changed. This address is stored in storage in the location specified\ + \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ + \ conflict with the storage layout of the implementation behind the\ + \ proxy." + errors: + ERC1967NonPayable(): + - details: An upgrade function sees `msg.value > 0` that may be lost. + events: + Upgraded(address): + details: Emitted when the implementation is upgraded. + kind: dev + methods: + constructor: + details: "Initializes the upgradeable proxy with an initial implementation\ + \ specified by `implementation`. If `_data` is nonempty, it's used\ + \ as data in a delegate call to `implementation`. This will typically\ + \ be an encoded function call, and allows initializing the storage\ + \ of the proxy like a Solidity constructor. Requirements: - If `data`\ + \ is empty, `msg.value` must be zero." + version: 1 + abi: + description: The abi of the contract template. Necessary for displaying + and for after deployment encoding + example: + - inputs: + - internalType: address + name: implementation + type: address + - internalType: bytes + name: _data + type: bytes + stateMutability: payable + type: constructor + items: + $ref: "#/components/schemas/AbiFunction" + type: array + attributes: + allOf: + - $ref: "#/components/schemas/ContractAttributes" + description: The attributes related to this contract template. It will be + displayed in the tokenization page + example: + useCases: + - Stablecoin + - CBDC + standards: + - ERC-20 + - ERC-1400 + auditor: + name: MyAuditor + imageURL: https://my-images.com/my-image.jpg + link: https://my-auditor.com/my-audit-report + protocol: + description: The protocol that the template will be used for + enum: + - ETH + - SOL + example: ETH + type: string + required: + - abi + - bytecode + - description - name + - type type: object - LeanContractDto: + ContractTemplateDto: example: + longDescription: | + a full ERC20 implementation, containing the following: + + - mint + - burn owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + description: an ERC20 implementation + abi: + - inputs: + - internalType: address + name: implementation + type: address + - internalType: bytes + name: _data + type: bytes + stateMutability: payable + type: constructor + initializationPhase: ON_DEPLOYMENT + type: FUNGIBLE_TOKEN + docs: + details: "This contract implements an upgradeable proxy. It is upgradeable\ + \ because calls are delegated to an implementation address that can be\ + \ changed. This address is stored in storage in the location specified\ + \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ + \ conflict with the storage layout of the implementation behind the proxy." + errors: + ERC1967NonPayable(): + - details: An upgrade function sees `msg.value > 0` that may be lost. + events: + Upgraded(address): + details: Emitted when the implementation is upgraded. + kind: dev + methods: + constructor: + details: "Initializes the upgradeable proxy with an initial implementation\ + \ specified by `implementation`. If `_data` is nonempty, it's used\ + \ as data in a delegate call to `implementation`. This will typically\ + \ be an encoded function call, and allows initializing the storage\ + \ of the proxy like a Solidity constructor. Requirements: - If `data`\ + \ is empty, `msg.value` must be zero." + version: 1 canDeploy: true vendor: "" name: My Contract - description: an ERC20 implementation + implementationContractId: implementationContractId isPublic: true attributes: useCases: @@ -52847,7 +55681,6 @@ components: imageURL: https://my-images.com/my-image.jpg link: https://my-auditor.com/my-audit-report id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: FUNGIBLE_TOKEN properties: id: description: The unique identifier of the contract template @@ -52861,6 +55694,31 @@ components: description: A short description of the contract template example: an ERC20 implementation type: string + longDescription: + description: "A full description of the contract template. May contain \n\ + \ to break the lines" + example: | + a full ERC20 implementation, containing the following: + + - mint + - burn + type: string + abi: + description: The abi of the contract template. Necessary for displaying + and for after deployment encoding + example: + - inputs: + - internalType: address + name: implementation + type: address + - internalType: bytes + name: _data + type: bytes + stateMutability: payable + type: constructor + items: + $ref: "#/components/schemas/AbiFunction" + type: array attributes: allOf: - $ref: "#/components/schemas/ContractAttributes" @@ -52877,16 +55735,34 @@ components: name: MyAuditor imageURL: https://my-images.com/my-image.jpg link: https://my-auditor.com/my-audit-report - isPublic: - description: Is this a contract that is viewable by all fireblocks's users - or is it visible only for this workspace - example: true - type: boolean - canDeploy: - description: "True if the workspace allowed to deploy this contract, false\ - \ otherwise" - example: true - type: boolean + docs: + allOf: + - $ref: "#/components/schemas/ContractDoc" + description: A `natspec` compliant documentation json. Can be retrieved + from the output json after compilation + example: + details: "This contract implements an upgradeable proxy. It is upgradeable\ + \ because calls are delegated to an implementation address that can\ + \ be changed. This address is stored in storage in the location specified\ + \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ + \ conflict with the storage layout of the implementation behind the\ + \ proxy." + errors: + ERC1967NonPayable(): + - details: An upgrade function sees `msg.value > 0` that may be lost. + events: + Upgraded(address): + details: Emitted when the implementation is upgraded. + kind: dev + methods: + constructor: + details: "Initializes the upgradeable proxy with an initial implementation\ + \ specified by `implementation`. If `_data` is nonempty, it's used\ + \ as data in a delegate call to `implementation`. This will typically\ + \ be an encoded function call, and allows initializing the storage\ + \ of the proxy like a Solidity constructor. Requirements: - If `data`\ + \ is empty, `msg.value` must be zero." + version: 1 owner: description: "The workspace id of the owner of this contract template. If\ \ it's a private contract, only this workspace will be allowed to deploy\ @@ -52898,134 +55774,78 @@ components: - $ref: "#/components/schemas/VendorDto" description: The details of the vendor of this contract template. Applicable only for public contract templates + isPublic: + description: Is this a contract that is viewable by all fireblocks's users + or is it visible only for this workspace + example: true + type: boolean + canDeploy: + description: "True if the workspace allowed to deploy this contract, false\ + \ otherwise" + example: true + type: boolean type: + description: The type of the contract template enum: - FUNGIBLE_TOKEN - NON_FUNGIBLE_TOKEN - NON_TOKEN - TOKEN_EXTENSION - TOKEN_UTILITY + example: FUNGIBLE_TOKEN + type: string + implementationContractId: + type: string + initializationPhase: + enum: + - ON_DEPLOYMENT + - POST_DEPLOYMENT type: string required: + - abi - description - id + - initializationPhase - isPublic - name type: object - TemplatesPaginatedResponse: + HttpContractDoesNotExistError: example: - next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 - data: - - owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - canDeploy: true - vendor: "" - name: My Contract - description: an ERC20 implementation - isPublic: true - attributes: - useCases: - - Stablecoin - - CBDC - standards: - - ERC-20 - - ERC-1400 - auditor: - name: MyAuditor - imageURL: https://my-images.com/my-image.jpg - link: https://my-auditor.com/my-audit-report - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: FUNGIBLE_TOKEN - - owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - canDeploy: true - vendor: "" - name: My Contract - description: an ERC20 implementation - isPublic: true - attributes: - useCases: - - Stablecoin - - CBDC - standards: - - ERC-20 - - ERC-1400 - auditor: - name: MyAuditor - imageURL: https://my-images.com/my-image.jpg - link: https://my-auditor.com/my-audit-report - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: FUNGIBLE_TOKEN - properties: - data: - description: The data of the current page - items: - $ref: "#/components/schemas/LeanContractDto" - type: array - next: - description: The ID of the next page - example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 - nullable: true - type: string - required: - - data - type: object - FunctionDoc: - properties: - details: - description: A description of the function - type: string - params: - additionalProperties: - type: string - description: A description of the function parameters - type: object - returns: - additionalProperties: - type: string - description: A description of the function return values. only for read - functions - type: object - type: object - ContractDoc: + code: "404" + message: Contract does not exist properties: - details: - description: A description of the contract - example: A token that can be minted and burned - type: string - events: - description: A description of the contract`s events - example: "Upgraded(address): {\"details\": \"Emitted when the implementation\ - \ is upgraded.\"}" + message: + description: Not Found error code + example: Contract does not exist type: string - kind: - description: Is it devdoc or userdoc - example: dev + code: + description: Error code + example: "404" type: string - methods: - additionalProperties: - $ref: "#/components/schemas/FunctionDoc" - description: The description of the contract functions - example: - constructor: - details: Initializes the contract - type: object - version: - description: The version of the contract - example: 1 - type: number - required: - - kind - - methods - - version type: object - Parameter: + ParameterWithValue: example: components: - - null - - null + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string name: _name description: The name of the token + functionValue: "" internalType: string type: string + value: "true" properties: name: description: The name of the parameter as it appears in the ABI @@ -53037,7 +55857,7 @@ components: example: The name of the token type: string internalType: - description: The internal type of the parameter as it appears in the ABI + description: The internal type of the parameter as it appears in the ABI example: string type: string type: @@ -53048,582 +55868,989 @@ components: items: $ref: "#/components/schemas/Parameter" type: array + value: + description: The value of the parameter. can also be ParameterWithValue + example: "true" + type: string + functionValue: + allOf: + - $ref: "#/components/schemas/LeanAbiFunction" + description: "The function value of this param (if has one). If this is\ + \ set, the `value` shouldn`t be. Used for proxies" required: - name - type type: object - AbiFunction: + LeanAbiFunction: + properties: + name: + description: The function name + example: initialize + type: string + inputs: + description: The function inputs + items: + $ref: "#/components/schemas/ParameterWithValue" + type: array + outputs: + description: The function outputs + items: + $ref: "#/components/schemas/ParameterWithValue" + type: array + stateMutability: + description: "The state mutability of the function (e.g., view, pure, nonpayable,\ + \ payable)" + enum: + - view + - pure + - nonpayable + - payable + example: nonpayable + type: string + required: + - inputs + type: object + ContractDeployRequest: + example: + assetId: ETH_TEST5 + constructorParameters: + - internalType: string + name: name_ + type: string + value: TokenName + - internalType: string + name: symbol_ + type: string + value: TokenSymbol + useGasless: false + fee: "2000" + vaultAccountId: "0" + feeLevel: MEDIUM + properties: + assetId: + description: The base asset identifier of the blockchain you want to deploy + to + example: ETH_TEST5 + type: string + vaultAccountId: + description: The vault account id you wish to deploy from + example: "0" + type: string + constructorParameters: + description: The constructor parameters of this contract + example: + - internalType: string + name: name_ + type: string + value: TokenName + - internalType: string + name: symbol_ + type: string + value: TokenSymbol + items: + $ref: "#/components/schemas/ParameterWithValue" + type: array + useGasless: + description: "Indicates whether the token should be created in a gasless\ + \ manner, utilizing the ERC-2771 standard. When set to true, the transaction\ + \ will be relayed by a designated relayer. The workspace must be configured\ + \ to use Fireblocks gasless relay." + example: false + type: boolean + fee: + description: Max fee amount for the write function transaction. interchangeable + with the 'feeLevel' field + example: "2000" + type: string + feeLevel: + description: Fee level for the write function transaction. interchangeable + with the 'fee' field + enum: + - LOW + - MEDIUM + - HIGH + example: MEDIUM + type: string + required: + - assetId + - vaultAccountId + type: object + ContractDeployResponse: + example: + txId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + properties: + txId: + description: The transaction id of the deployment request + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: string + required: + - txId + type: object + SupportedBlockchain: + example: + nativeAssetId: 9f9f7062-df90-4fc0-8697-96685184356a + displayName: Ethereum + legacyId: ETH + id: 9f9f7062-df90-4fc0-8697-96685184357b + properties: + id: + description: The ID of the blockchain + example: 9f9f7062-df90-4fc0-8697-96685184357b + type: string + legacyId: + description: The old blockchain ID representation of the blockchain + example: ETH + type: string + displayName: + description: The name of the blockchain + example: Ethereum + type: string + nativeAssetId: + description: Native asset ID of this blockchain + example: 9f9f7062-df90-4fc0-8697-96685184356a + type: string + required: + - displayName + - id + - legacyId + - nativeAssetId + type: object + SupportedBlockChainsResponse: + example: + supportedBlockchains: + - nativeAssetId: 9f9f7062-df90-4fc0-8697-96685184356a + displayName: Ethereum + legacyId: ETH + id: 9f9f7062-df90-4fc0-8697-96685184357b + - nativeAssetId: 9f9f7062-df90-4fc0-8697-96685184356a + displayName: Ethereum + legacyId: ETH + id: 9f9f7062-df90-4fc0-8697-96685184357b + supportsAllBlockchains: true + properties: + supportsAllBlockchains: + description: Boolean representing if all blockchains are supported + example: true + type: boolean + supportedBlockchains: + description: List of supported blockchains + items: + $ref: "#/components/schemas/SupportedBlockchain" + type: array + required: + - supportsAllBlockchains + type: object + LeanDeployedContractResponseDto: + example: + contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + blockchainId: blockchainId + properties: + id: + description: The deployed contract data identifier + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: string + contractAddress: + description: The contract's onchain address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + type: string + contractTemplateId: + description: The contract template identifier + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: string + blockchainId: + type: string + required: + - blockchainId + - contractAddress + - contractTemplateId + - id + type: object + DeployedContractsPaginatedResponse: + example: + next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + data: + - contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + blockchainId: blockchainId + - contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + blockchainId: blockchainId + properties: + data: + description: The data of the current page + items: + $ref: "#/components/schemas/LeanDeployedContractResponseDto" + type: array + next: + description: The ID of the next page + example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + nullable: true + type: string + required: + - data + type: object + GasslessStandardConfigurations: + description: The gasless configuration of the contract example: - outputs: - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - inputs: + gaslessStandardConfigurations: + key: + forwarderAddresses: + - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 + - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 + lastOnChainCheck: 2024-09-09T04:17:46.918Z + properties: + gaslessStandardConfigurations: + additionalProperties: + $ref: "#/components/schemas/GasslessStandardConfigurations_gaslessStandardConfigurations_value" + type: object + type: object + ParameterWithValueList: + items: + $ref: "#/components/schemas/ParameterWithValue" + type: array + MultichainDeploymentMetadata: + description: The multichain deployment metadata + example: + address: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e + initParams: - components: - - null - - null + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string name: _name description: The name of the token + functionValue: "" internalType: string type: string + value: "true" - components: - - null - - null + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string name: _name description: The name of the token + functionValue: "" internalType: string type: string - name: mint - stateMutability: pure - description: description - type: constructor + value: "true" + deploymentSalt: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + templateId: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38 + encodedInitParams: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef properties: - name: - description: The name of the contract function as it appears in the ABI - example: mint + id: + description: The unique identifier of the deployment metadata + format: uuid type: string - stateMutability: - description: The state mutability of the contract function as it appears - in the ABI - enum: - - pure - - view - - nonpayable - - payable - example: pure + address: + description: The address of the deployed contract + example: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e type: string - type: - description: The type of the function - enum: - - constructor - - function - - error - - event - - receive - - fallback - example: constructor + templateId: + description: The unique identifier of the contract template + example: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38 + format: uuid type: string - inputs: - description: The parameters that this function/constructor posses + deploymentSalt: + description: The salt used for the deployment + example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + type: string + initParams: items: - $ref: "#/components/schemas/Parameter" + $ref: "#/components/schemas/ParameterWithValue" type: array - outputs: - description: The parameters that this 'read' function returns + encodedInitParams: + description: The encoded init params + example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + type: string + type: object + SolanaConfig: + description: The Solana configuration of the contract + example: + extensions: + - metadataPointer + - transferHook + type: TOKEN2022 + properties: + extensions: + description: The extensions that the contract implements. + example: + - metadataPointer + - transferHook items: - $ref: "#/components/schemas/Parameter" + type: string type: array - description: - description: The documentation of this function (if has any) + type: + description: The type of the contract. + enum: + - SPL + - TOKEN2022 + - PROGRAM + example: TOKEN2022 type: string - required: - - type type: object - ContractUploadRequest: + DeployedContractResponseDto: example: - longDescription: | - a full ERC20 implementation, containing the following: - - - mint - - burn - bytecode: bytecode - protocol: ETH - docs: - details: "This contract implements an upgradeable proxy. It is upgradeable\ - \ because calls are delegated to an implementation address that can be\ - \ changed. This address is stored in storage in the location specified\ - \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ - \ conflict with the storage layout of the implementation behind the proxy." - errors: - ERC1967NonPayable(): - - details: An upgrade function sees `msg.value > 0` that may be lost. - events: - Upgraded(address): - details: Emitted when the implementation is upgraded. - kind: dev - methods: - constructor: - details: "Initializes the upgradeable proxy with an initial implementation\ - \ specified by `implementation`. If `_data` is nonempty, it's used\ - \ as data in a delegate call to `implementation`. This will typically\ - \ be an encoded function call, and allows initializing the storage\ - \ of the proxy like a Solidity constructor. Requirements: - If `data`\ - \ is empty, `msg.value` must be zero." - version: 1 - name: My Contract - description: an ERC20 implementation - abi: - - inputs: - - internalType: address - name: implementation - type: address - - internalType: bytes - name: _data - type: bytes - stateMutability: payable - type: constructor - attributes: - useCases: - - Stablecoin - - CBDC - standards: - - ERC-20 - - ERC-1400 - auditor: - name: MyAuditor - imageURL: https://my-images.com/my-image.jpg - link: https://my-auditor.com/my-audit-report - type: FUNGIBLE_TOKEN - sourcecode: sourcecode + baseAssetId: ETH_TEST5 + gaslessConfig: + gaslessStandardConfigurations: + key: + forwarderAddresses: + - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 + - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 + lastOnChainCheck: 2024-09-09T04:17:46.918Z + contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + solanaConfig: + extensions: + - metadataPointer + - transferHook + type: TOKEN2022 + contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + vaultAccountId: "0" + multichainDeploymentMetadata: + address: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e + initParams: + - components: + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + name: _name + description: The name of the token + functionValue: "" + internalType: string + type: string + value: "true" + - components: + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + - components: + - null + - null + name: _name + description: The name of the token + internalType: string + type: string + name: _name + description: The name of the token + functionValue: "" + internalType: string + type: string + value: "true" + deploymentSalt: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 + templateId: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38 + encodedInitParams: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + blockchainId: blockchainId properties: - name: - description: The name of the contract template - example: My Contract + id: + description: The deployed contract data identifier + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d type: string - description: - description: A short description of the contract template - example: an ERC20 implementation + contractAddress: + description: The contract's onchain address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 type: string - longDescription: - description: "A full description of the contract template. May contain \n\ - \ to break the lines" - example: | - a full ERC20 implementation, containing the following: - - - mint - - burn + contractTemplateId: + description: The contract template identifier + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d type: string - bytecode: - description: The compiled artifact of this smart contract. Used for deployment - of this contract template + vaultAccountId: + description: The vault account id this contract was deploy from + example: "0" type: string - sourcecode: - description: The source code of the contract. Optional. + blockchainId: type: string - type: - description: The type of the contract template - enum: - - FUNGIBLE_TOKEN - - NON_FUNGIBLE_TOKEN - - NON_TOKEN - - TOKEN_EXTENSION - - TOKEN_UTILITY - example: FUNGIBLE_TOKEN + baseAssetId: + description: The blockchain base assetId + example: ETH_TEST5 type: string - docs: - allOf: - - $ref: "#/components/schemas/ContractDoc" - description: A `natspec` compliant documentation json. Can be retrieved - from the output json after compilation - example: - details: "This contract implements an upgradeable proxy. It is upgradeable\ - \ because calls are delegated to an implementation address that can\ - \ be changed. This address is stored in storage in the location specified\ - \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ - \ conflict with the storage layout of the implementation behind the\ - \ proxy." - errors: - ERC1967NonPayable(): - - details: An upgrade function sees `msg.value > 0` that may be lost. - events: - Upgraded(address): - details: Emitted when the implementation is upgraded. - kind: dev - methods: - constructor: - details: "Initializes the upgradeable proxy with an initial implementation\ - \ specified by `implementation`. If `_data` is nonempty, it's used\ - \ as data in a delegate call to `implementation`. This will typically\ - \ be an encoded function call, and allows initializing the storage\ - \ of the proxy like a Solidity constructor. Requirements: - If `data`\ - \ is empty, `msg.value` must be zero." - version: 1 - abi: - description: The abi of the contract template. Necessary for displaying - and for after deployment encoding - example: - - inputs: - - internalType: address - name: implementation - type: address - - internalType: bytes - name: _data - type: bytes - stateMutability: payable - type: constructor - items: - $ref: "#/components/schemas/AbiFunction" - type: array - attributes: - allOf: - - $ref: "#/components/schemas/ContractAttributes" - description: The attributes related to this contract template. It will be - displayed in the tokenization page - example: - useCases: - - Stablecoin - - CBDC - standards: - - ERC-20 - - ERC-1400 - auditor: - name: MyAuditor - imageURL: https://my-images.com/my-image.jpg - link: https://my-auditor.com/my-audit-report - protocol: - description: The protocol that the template will be used for - enum: - - ETH - - SOL + gaslessConfig: + $ref: "#/components/schemas/GasslessStandardConfigurations" + multichainDeploymentMetadata: + $ref: "#/components/schemas/MultichainDeploymentMetadata" + solanaConfig: + $ref: "#/components/schemas/SolanaConfig" + required: + - blockchainId + - contractAddress + - contractTemplateId + - id + type: object + FetchAbiRequestDto: + example: + baseAssetId: ETH + contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + properties: + baseAssetId: + description: The blockchain base assetId example: ETH type: string + contractAddress: + description: The contract's onchain address + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + type: string required: - - abi - - bytecode - - description - - name - - type + - baseAssetId + - contractAddress type: object - ContractTemplateDto: + ContractWithAbiDto: example: - longDescription: | - a full ERC20 implementation, containing the following: - - - mint - - burn - owner: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - description: an ERC20 implementation + baseAssetId: ETH_TEST6 + implementation: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 + name: WETH9 + contractAddress: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 abi: - inputs: - internalType: address - name: implementation + name: to type: address - - internalType: bytes - name: _data - type: bytes - stateMutability: payable - type: constructor - initializationPhase: ON_DEPLOYMENT - type: FUNGIBLE_TOKEN - docs: - details: "This contract implements an upgradeable proxy. It is upgradeable\ - \ because calls are delegated to an implementation address that can be\ - \ changed. This address is stored in storage in the location specified\ - \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ - \ conflict with the storage layout of the implementation behind the proxy." - errors: - ERC1967NonPayable(): - - details: An upgrade function sees `msg.value > 0` that may be lost. - events: - Upgraded(address): - details: Emitted when the implementation is upgraded. - kind: dev - methods: - constructor: - details: "Initializes the upgradeable proxy with an initial implementation\ - \ specified by `implementation`. If `_data` is nonempty, it's used\ - \ as data in a delegate call to `implementation`. This will typically\ - \ be an encoded function call, and allows initializing the storage\ - \ of the proxy like a Solidity constructor. Requirements: - If `data`\ - \ is empty, `msg.value` must be zero." - version: 1 - canDeploy: true - vendor: "" - name: My Contract - implementationContractId: implementationContractId + - internalType: uint256 + name: amount + type: uint256 + stateMutability: nonpayable + type: function + name: mint isPublic: true - attributes: - useCases: - - Stablecoin - - CBDC - standards: - - ERC-20 - - ERC-1400 - auditor: - name: MyAuditor - imageURL: https://my-images.com/my-image.jpg - link: https://my-auditor.com/my-audit-report - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + isProxy: true properties: - id: - description: The unique identifier of the contract template - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: string - name: - description: The name of the contract template - example: My Contract - type: string - description: - description: A short description of the contract template - example: an ERC20 implementation + contractAddress: + description: The address of the contract + example: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 type: string - longDescription: - description: "A full description of the contract template. May contain \n\ - \ to break the lines" - example: | - a full ERC20 implementation, containing the following: - - - mint - - burn + baseAssetId: + description: The blockchain base assetId + example: ETH_TEST6 + type: string + name: + description: The name of the contract + example: WETH9 type: string abi: - description: The abi of the contract template. Necessary for displaying - and for after deployment encoding + description: The ABI of the contract example: - inputs: - internalType: address - name: implementation + name: to type: address - - internalType: bytes - name: _data - type: bytes - stateMutability: payable - type: constructor + - internalType: uint256 + name: amount + type: uint256 + stateMutability: nonpayable + type: function + name: mint items: $ref: "#/components/schemas/AbiFunction" type: array - attributes: - allOf: - - $ref: "#/components/schemas/ContractAttributes" - description: The attributes related to this contract template. It will be - displayed in the tokenization page - example: - useCases: - - Stablecoin - - CBDC - standards: - - ERC-20 - - ERC-1400 - auditor: - name: MyAuditor - imageURL: https://my-images.com/my-image.jpg - link: https://my-auditor.com/my-audit-report - docs: - allOf: - - $ref: "#/components/schemas/ContractDoc" - description: A `natspec` compliant documentation json. Can be retrieved - from the output json after compilation - example: - details: "This contract implements an upgradeable proxy. It is upgradeable\ - \ because calls are delegated to an implementation address that can\ - \ be changed. This address is stored in storage in the location specified\ - \ by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't\ - \ conflict with the storage layout of the implementation behind the\ - \ proxy." - errors: - ERC1967NonPayable(): - - details: An upgrade function sees `msg.value > 0` that may be lost. - events: - Upgraded(address): - details: Emitted when the implementation is upgraded. - kind: dev - methods: - constructor: - details: "Initializes the upgradeable proxy with an initial implementation\ - \ specified by `implementation`. If `_data` is nonempty, it's used\ - \ as data in a delegate call to `implementation`. This will typically\ - \ be an encoded function call, and allows initializing the storage\ - \ of the proxy like a Solidity constructor. Requirements: - If `data`\ - \ is empty, `msg.value` must be zero." - version: 1 - owner: - description: "The workspace id of the owner of this contract template. If\ - \ it's a private contract, only this workspace will be allowed to deploy\ - \ it" - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + isProxy: + description: Whether the contract is a proxy contract + example: true + type: boolean + implementation: + description: The implementation contract address + example: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 type: string - vendor: - allOf: - - $ref: "#/components/schemas/VendorDto" - description: The details of the vendor of this contract template. Applicable - only for public contract templates isPublic: - description: Is this a contract that is viewable by all fireblocks's users - or is it visible only for this workspace + description: Whether the contract ABI is public example: true type: boolean - canDeploy: - description: "True if the workspace allowed to deploy this contract, false\ - \ otherwise" + required: + - abi + - baseAssetId + - contractAddress + - isPublic + - name + type: object + AddAbiRequestDto: + example: + baseAssetId: ETH + name: MyContract + contractAddress: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 + abi: + - inputs: + - internalType: address + name: to + type: address + - internalType: uint256 + name: amount + type: uint256 + stateMutability: nonpayable + type: function + name: mint + properties: + contractAddress: + description: The address of deployed contract + example: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 + type: string + baseAssetId: + description: The blockchain base assetId + example: ETH + type: string + abi: + description: The ABI of the contract + example: + - inputs: + - internalType: address + name: to + type: address + - internalType: uint256 + name: amount + type: uint256 + stateMutability: nonpayable + type: function + name: mint + items: + $ref: "#/components/schemas/AbiFunction" + type: array + name: + description: The name of the contract + example: MyContract + type: string + required: + - abi + - baseAssetId + - contractAddress + type: object + AssetMetadataDto: + example: + symbol: MYT + holdersCount: 6 + totalSupply: "1000000000000000" + contractAddress: 0x1234567890abcdef1234567890abcdef12345678 + vaultAccountId: "0" + type: ERC20 + blockchain: ETH_TEST5 + assetId: BQ5R_MY_TOKEN + issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ + decimals: 18 + name: MyToken + testnet: true + networkProtocol: ETH + properties: + assetId: + description: The Fireblocks` asset id + example: BQ5R_MY_TOKEN + type: string + name: + description: The name of the token + example: MyToken + type: string + symbol: + description: The symbol of the token + example: MYT + type: string + networkProtocol: + description: The network protocol of the token + example: ETH + type: string + totalSupply: + description: The total supply of the token + example: "1000000000000000" + type: string + holdersCount: + description: The number of holders of the token + example: 6 + type: number + type: + description: The type of the token + example: ERC20 + type: string + contractAddress: + description: The address of the token contract + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + issuerAddress: + description: "In case of Stellar or Ripple, the address of the issuer of\ + \ the token" + example: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ + type: string + testnet: + description: Is it deployed on testnet or to mainnet example: true type: boolean + blockchain: + description: The blockchain native asset id which the token is deployed + on + example: ETH_TEST5 + type: string + decimals: + description: The number of decimals of the token + example: 18 + type: number + vaultAccountId: + description: The id of the vault account that initiated the request to issue + the token. Will be empty if token was issued outside of Fireblocks. + example: "0" + type: string + required: + - assetId + type: object + CollectionMetadataDto: + properties: + fbCollectionId: + description: Fireblocks collection id + example: 911fe739f0d4d123c98fd366c3bed35c6e30c00e + type: string + name: + description: Collection name + example: Rarible + type: string + symbol: + description: Collection symbol + example: RARI + type: string + standard: + description: Collection contract standard + example: "[\"ERC721\",\"ERC1155\",\"FA2\"]" + type: string + blockchainDescriptor: + description: Collection's blockchain + example: ETH + type: string + contractAddress: + description: Collection contract address + example: 0x1723017329a804564bC8d215496C89eaBf1F3211 + type: string + required: + - blockchainDescriptor + - fbCollectionId + type: object + ContractMetadataDto: + properties: + id: + description: The deployed contract ID + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + type: string + blockchainId: + description: The blockchain ID + example: B7QG017M + type: string + contractAddress: + description: The address of the token contract + example: 0x1234567890abcdef1234567890abcdef12345678 + type: string + contractTemplateId: + description: The contract template ID + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: string + vaultAccountId: + description: The vault account ID that initiated the request to issue the + token + example: "0" + type: string + required: + - blockchainId + - contractAddress + - contractTemplateId + - id + type: object + TokenLinkDto: + example: + displayName: My Simple ERC20 Token + id: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + refId: BQ5R_MY_TOKEN + type: NON_FUNGIBLE_TOKEN + tokenMetadata: + symbol: MYT + holdersCount: 6 + totalSupply: "1000000000000000" + contractAddress: 0x1234567890abcdef1234567890abcdef12345678 + vaultAccountId: "0" + type: ERC20 + blockchain: ETH_TEST5 + assetId: BQ5R_MY_TOKEN + issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ + decimals: 18 + name: MyToken + testnet: true + networkProtocol: ETH + status: COMPLETED + properties: + id: + description: The token link id + example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + type: string + status: + description: The token status + enum: + - PENDING + - COMPLETED + example: COMPLETED + type: string type: - description: The type of the contract template + description: The type of token enum: - FUNGIBLE_TOKEN - NON_FUNGIBLE_TOKEN - - NON_TOKEN - - TOKEN_EXTENSION - TOKEN_UTILITY - example: FUNGIBLE_TOKEN + - TOKEN_EXTENSION + example: NON_FUNGIBLE_TOKEN type: string - implementationContractId: + refId: + description: The Fireblocks' reference id + example: BQ5R_MY_TOKEN type: string - initializationPhase: - enum: - - ON_DEPLOYMENT - - POST_DEPLOYMENT + displayName: + description: "The token display name. If was not provided, would be taken\ + \ from the contract template" + example: My Simple ERC20 Token type: string + tokenMetadata: + $ref: "#/components/schemas/TokenLinkDto_tokenMetadata" required: - - abi - - description - id - - initializationPhase - - isPublic - - name + - status type: object - HttpContractDoesNotExistError: + TokensPaginatedResponse: example: - code: "404" - message: Contract does not exist + next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + data: + - displayName: My Simple ERC20 Token + id: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + refId: BQ5R_MY_TOKEN + type: NON_FUNGIBLE_TOKEN + tokenMetadata: + symbol: MYT + holdersCount: 6 + totalSupply: "1000000000000000" + contractAddress: 0x1234567890abcdef1234567890abcdef12345678 + vaultAccountId: "0" + type: ERC20 + blockchain: ETH_TEST5 + assetId: BQ5R_MY_TOKEN + issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ + decimals: 18 + name: MyToken + testnet: true + networkProtocol: ETH + status: COMPLETED + - displayName: My Simple ERC20 Token + id: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + refId: BQ5R_MY_TOKEN + type: NON_FUNGIBLE_TOKEN + tokenMetadata: + symbol: MYT + holdersCount: 6 + totalSupply: "1000000000000000" + contractAddress: 0x1234567890abcdef1234567890abcdef12345678 + vaultAccountId: "0" + type: ERC20 + blockchain: ETH_TEST5 + assetId: BQ5R_MY_TOKEN + issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ + decimals: 18 + name: MyToken + testnet: true + networkProtocol: ETH + status: COMPLETED properties: - message: - description: Not Found error code - example: Contract does not exist - type: string - code: - description: Error code - example: "404" + data: + description: The data of the current page + items: + $ref: "#/components/schemas/TokenLinkDto" + type: array + next: + description: The ID of the next page + example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + nullable: true type: string + required: + - data type: object - ParameterWithValue: + EVMTokenCreateParamsDto: example: - components: - - components: - - null - - null - name: _name - description: The name of the token - internalType: string + deployFunctionParams: + - internalType: string + name: name type: string - - components: - - null - - null - name: _name - description: The name of the token - internalType: string + value: name + - internalType: string + name: symbol type: string - name: _name - description: The name of the token - functionValue: "" - internalType: string - type: string - value: "true" + value: symbol + - components: + - internalType: bool + name: _isMintable + type: bool + internalType: struct MyStruct + name: customConfigProps + type: tuple + value: + - internalType: bool + name: _isMintable + type: bool + value: false + contractId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d properties: - name: - description: The name of the parameter as it appears in the ABI - example: _name - type: string - description: - description: "A description of the parameter, fetched from the devdoc of\ - \ this contract" - example: The name of the token - type: string - internalType: - description: The internal type of the parameter as it appears in the ABI - example: string - type: string - type: - description: The type of the parameter as it appears in the ABI - example: string + contractId: + description: The id of the contract template that will be used to create + the token + example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d type: string - components: + deployFunctionParams: + description: The deploy function parameters and values of the contract template + example: + - internalType: string + name: name + type: string + value: name + - internalType: string + name: symbol + type: string + value: symbol + - components: + - internalType: bool + name: _isMintable + type: bool + internalType: struct MyStruct + name: customConfigProps + type: tuple + value: + - internalType: bool + name: _isMintable + type: bool + value: false items: - $ref: "#/components/schemas/Parameter" + $ref: "#/components/schemas/ParameterWithValue" type: array - value: - description: The value of the parameter. can also be ParameterWithValue - example: "true" + required: + - contractId + type: object + StellarRippleCreateParamsDto: + properties: + symbol: + description: The symbol of the token + example: MyUSDT + type: string + name: + description: The name of the token + example: My USD Tether + type: string + issuerAddress: + description: The address of the issuer of this token. Will be part of the + identifier of this token on chain. + example: rnDV4JiwgRNhudPY2sm65AzECpRXaasL4r type: string - functionValue: - allOf: - - $ref: "#/components/schemas/LeanAbiFunction" - description: "The function value of this param (if has one). If this is\ - \ set, the `value` shouldn`t be. Used for proxies" required: + - issuerAddress - name - - type + - symbol type: object - LeanAbiFunction: + SolanaSimpleCreateParams: properties: name: - description: The function name - example: initialize + description: The name of the token or asset being created. + example: SolanaToken type: string - inputs: - description: The function inputs - items: - $ref: "#/components/schemas/ParameterWithValue" - type: array - outputs: - description: The function outputs - items: - $ref: "#/components/schemas/ParameterWithValue" - type: array - stateMutability: - description: "The state mutability of the function (e.g., view, pure, nonpayable,\ - \ payable)" - enum: - - view - - pure - - nonpayable - - payable - example: nonpayable + symbol: + description: "The symbol for the token, typically an abbreviated representation." + example: SOL type: string + decimals: + description: "The number of decimal places the token supports (e.g., 9 for\ + \ typical Solana tokens)." + example: 9 + type: integer required: - - inputs + - decimals + - name + - symbol type: object - ContractDeployRequest: + CreateTokenRequestDto: example: + txNote: Token creation transaction for new stablecoin assetId: ETH_TEST5 - constructorParameters: - - internalType: string - name: name_ - type: string - value: TokenName - - internalType: string - name: symbol_ - type: string - value: TokenSymbol + displayName: displayName useGasless: false fee: "2000" vaultAccountId: "0" + externalId: 0192e4f5-924e-7bb9-8e5b-c748270feb38 feeLevel: MEDIUM + blockchainId: B7QG017M + createParams: + deployFunctionParams: + - internalType: string + name: name + type: string + value: name + - internalType: string + name: symbol + type: string + value: symbol + - components: + - internalType: bool + name: _isMintable + type: bool + internalType: struct MyStruct + name: customConfigProps + type: tuple + value: + - internalType: bool + name: _isMintable + type: bool + value: false + contractId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d properties: + blockchainId: + description: The id of the blockchain the request was initiated on + example: B7QG017M + type: string assetId: description: The base asset identifier of the blockchain you want to deploy to example: ETH_TEST5 type: string vaultAccountId: - description: The vault account id you wish to deploy from + description: The id of the vault account that initiated the request to issue + the token example: "0" type: string - constructorParameters: - description: The constructor parameters of this contract - example: - - internalType: string - name: name_ - type: string - value: TokenName - - internalType: string - name: symbol_ - type: string - value: TokenSymbol - items: - $ref: "#/components/schemas/ParameterWithValue" - type: array + createParams: + $ref: "#/components/schemas/CreateTokenRequestDto_createParams" + displayName: + type: string useGasless: description: "Indicates whether the token should be created in a gasless\ \ manner, utilizing the ERC-2771 standard. When set to true, the transaction\ @@ -53645,1026 +56872,786 @@ components: - HIGH example: MEDIUM type: string - required: - - assetId - - vaultAccountId - type: object - ContractDeployResponse: - example: - txId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - properties: - txId: - description: The transaction id of the deployment request - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + txNote: + description: Custom note that describes the transaction at your Fireblocks + workspace. This note will be visible in the Fireblocks UI and in the transaction + details and not on the blockchain. + example: Token creation transaction for new stablecoin + type: string + externalId: + description: External id that can be used to identify the transaction in + your system. The unique identifier of the transaction outside of Fireblocks + with max length of 255 characters + example: 0192e4f5-924e-7bb9-8e5b-c748270feb38 type: string required: - - txId + - createParams + - vaultAccountId type: object - SupportedBlockchain: + AssetAlreadyExistHttpError: example: - nativeAssetId: 9f9f7062-df90-4fc0-8697-96685184356a - displayName: Ethereum - legacyId: ETH - id: 9f9f7062-df90-4fc0-8697-96685184357b + message: message + error: Conflict + statusCode: 409 properties: - id: - description: The ID of the blockchain - example: 9f9f7062-df90-4fc0-8697-96685184357b - type: string - legacyId: - description: The old blockchain ID representation of the blockchain - example: ETH - type: string - displayName: - description: The name of the blockchain - example: Ethereum + statusCode: + description: HTTP status code + example: 409 + format: int32 + type: integer + message: + description: Error message type: string - nativeAssetId: - description: Native asset ID of this blockchain - example: 9f9f7062-df90-4fc0-8697-96685184356a + error: + description: Short description of the HTTP error + example: Conflict type: string - required: - - displayName - - id - - legacyId - - nativeAssetId type: object - SupportedBlockChainsResponse: + LinkedTokensCount: example: - supportedBlockchains: - - nativeAssetId: 9f9f7062-df90-4fc0-8697-96685184356a - displayName: Ethereum - legacyId: ETH - id: 9f9f7062-df90-4fc0-8697-96685184357b - - nativeAssetId: 9f9f7062-df90-4fc0-8697-96685184356a - displayName: Ethereum - legacyId: ETH - id: 9f9f7062-df90-4fc0-8697-96685184357b - supportsAllBlockchains: true + count: 42 properties: - supportsAllBlockchains: - description: Boolean representing if all blockchains are supported - example: true - type: boolean - supportedBlockchains: - description: List of supported blockchains - items: - $ref: "#/components/schemas/SupportedBlockchain" - type: array + count: + description: The total count of linked tokens + example: 42 + type: number required: - - supportsAllBlockchains + - count type: object - LeanDeployedContractResponseDto: + TokenLinkRequestDto: example: - contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + baseAssetId: ETH_TEST3 + displayName: My Simple ERC20 Token contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - blockchainId: blockchainId + refId: USDC_ETH_TEST3_1XF5 + type: FUNGIBLE_TOKEN properties: - id: - description: The deployed contract data identifier - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + type: + description: The type of token being linked + enum: + - FUNGIBLE_TOKEN + - NON_FUNGIBLE_TOKEN + - TOKEN_UTILITY + - TOKEN_EXTENSION + type: string + refId: + description: "The Fireblocks' token link reference id. For example, 'BQ5R_BDESC_ABC'\ + \ if it's a fungible \n\t\t\t\t\tasset" + example: USDC_ETH_TEST3_1XF5 + type: string + displayName: + description: The token display name + example: My Simple ERC20 Token + type: string + baseAssetId: + description: The blockchain base assetId + example: ETH_TEST3 type: string contractAddress: description: The contract's onchain address example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 type: string - contractTemplateId: - description: The contract template identifier - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: string - blockchainId: - type: string required: - - blockchainId - - contractAddress - - contractTemplateId - - id + - type type: object - DeployedContractsPaginatedResponse: + TokenLinkExistsHttpError: example: - next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 - data: - - contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - blockchainId: blockchainId - - contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - blockchainId: blockchainId + message: message + error: Conflict + statusCode: 409 properties: - data: - description: The data of the current page - items: - $ref: "#/components/schemas/LeanDeployedContractResponseDto" - type: array - next: - description: The ID of the next page - example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 - nullable: true + statusCode: + description: HTTP status code + example: 409 + format: int32 + type: integer + message: + description: Error message + type: string + error: + description: Short description of the HTTP error + example: Conflict type: string - required: - - data type: object - GasslessStandardConfigurations: - description: The gasless configuration of the contract + NotFoundException: example: - gaslessStandardConfigurations: - key: - forwarderAddresses: - - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 - - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 - lastOnChainCheck: 2024-09-09T04:17:46.918Z + message: message + error: Not Found + statusCode: 404 properties: - gaslessStandardConfigurations: - additionalProperties: - $ref: "#/components/schemas/GasslessStandardConfigurations_gaslessStandardConfigurations_value" - type: object - type: object - ParameterWithValueList: - items: - $ref: "#/components/schemas/ParameterWithValue" - type: array - MultichainDeploymentMetadata: - description: The multichain deployment metadata - example: - address: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e - initParams: - - components: - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - name: _name - description: The name of the token - functionValue: "" - internalType: string + statusCode: + description: HTTP status code + example: 404 + format: int32 + type: integer + message: + description: Error message type: string - value: "true" - - components: - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - name: _name - description: The name of the token - functionValue: "" - internalType: string + error: + description: Short description of the HTTP error + example: Not Found type: string - value: "true" - deploymentSalt: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 - templateId: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38 - encodedInitParams: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + type: object + AccessRegistryAddressItem: + example: + address: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateAdded: 2024-07-01T00:00:00Z properties: - id: - description: The unique identifier of the deployment metadata - format: uuid - type: string address: - description: The address of the deployed contract - example: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e - type: string - templateId: - description: The unique identifier of the contract template - example: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38 - format: uuid - type: string - deploymentSalt: - description: The salt used for the deployment - example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + description: The address that was added to the access registry + example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 type: string - initParams: - items: - $ref: "#/components/schemas/ParameterWithValue" - type: array - encodedInitParams: - description: The encoded init params - example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + dateAdded: + description: The date when the address was added to the access registry + example: 2024-07-01T00:00:00Z + format: date-time type: string + required: + - address + - dateAdded type: object - SolanaConfig: - description: The Solana configuration of the contract + AccessRegistryCurrentStateResponse: example: - extensions: - - metadataPointer - - transferHook - type: TOKEN2022 + next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + total: 150 + data: + - address: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateAdded: 2024-07-01T00:00:00.000Z + prev: dGhpcyBpcyBhIHByZXZpb3VzIGN1bcnNvcg== properties: - extensions: - description: The extensions that the contract implements. + data: + description: Array of active addresses in the access registry example: - - metadataPointer - - transferHook + - address: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateAdded: 2024-07-01T00:00:00.000Z items: - type: string + $ref: "#/components/schemas/AccessRegistryAddressItem" type: array - type: - description: The type of the contract. - enum: - - SPL - - TOKEN2022 - - PROGRAM - example: TOKEN2022 - type: string - type: object - DeployedContractResponseDto: - example: - baseAssetId: ETH_TEST5 - gaslessConfig: - gaslessStandardConfigurations: - key: - forwarderAddresses: - - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 - - 0x2E7B54631e18E9eEcc2eb5219249cc8388586f66 - lastOnChainCheck: 2024-09-09T04:17:46.918Z - contractTemplateId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - solanaConfig: - extensions: - - metadataPointer - - transferHook - type: TOKEN2022 - contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - vaultAccountId: "0" - multichainDeploymentMetadata: - address: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e - initParams: - - components: - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - name: _name - description: The name of the token - functionValue: "" - internalType: string - type: string - value: "true" - - components: - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - - components: - - null - - null - name: _name - description: The name of the token - internalType: string - type: string - name: _name - description: The name of the token - functionValue: "" - internalType: string - type: string - value: "true" - deploymentSalt: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 - templateId: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38 - encodedInitParams: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - blockchainId: blockchainId - properties: - id: - description: The deployed contract data identifier - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: string - contractAddress: - description: The contract's onchain address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - type: string - contractTemplateId: - description: The contract template identifier - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - type: string - vaultAccountId: - description: The vault account id this contract was deploy from - example: "0" - type: string - blockchainId: + next: + description: Cursor for next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== type: string - baseAssetId: - description: The blockchain base assetId - example: ETH_TEST5 + prev: + description: Cursor for previous page + example: dGhpcyBpcyBhIHByZXZpb3VzIGN1bcnNvcg== type: string - gaslessConfig: - $ref: "#/components/schemas/GasslessStandardConfigurations" - multichainDeploymentMetadata: - $ref: "#/components/schemas/MultichainDeploymentMetadata" - solanaConfig: - $ref: "#/components/schemas/SolanaConfig" + total: + description: Total count of active addresses in the access registry + example: 150 + type: number required: - - blockchainId - - contractAddress - - contractTemplateId - - id + - data type: object - FetchAbiRequestDto: + AccessRegistrySummaryResponse: + example: + totalActiveAddresses: 42 + properties: + totalActiveAddresses: + description: The total number of active addresses in the access registry + example: 42 + type: number + required: + - totalActiveAddresses + type: object + TokenContractSummaryResponse: example: baseAssetId: ETH - contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + totalSupply: "1000000000000000000000" + contractAddress: 0x1234567890123456789012345678901234567890 + totalAddresses: 150 properties: baseAssetId: - description: The blockchain base assetId + description: The base asset ID example: ETH type: string contractAddress: - description: The contract's onchain address - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + description: The contract address + example: 0x1234567890123456789012345678901234567890 + type: string + totalAddresses: + description: Total number of addresses with balances + example: 150 + type: number + totalSupply: + description: The total supply of the token + example: "1000000000000000000000" type: string required: - baseAssetId - contractAddress + - totalAddresses + - totalSupply type: object - ContractWithAbiDto: + TotalSupplyItemDto: example: - baseAssetId: ETH_TEST6 - implementation: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 - name: WETH9 - contractAddress: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 - abi: - - inputs: - - internalType: address - name: to - type: address - - internalType: uint256 - name: amount - type: uint256 - stateMutability: nonpayable - type: function - name: mint - isPublic: true - isProxy: true + totalSupply: "1000000000000000000000" + timestamp: 2024-01-01T23:59:59.999Z properties: - contractAddress: - description: The address of the contract - example: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 - type: string - baseAssetId: - description: The blockchain base assetId - example: ETH_TEST6 - type: string - name: - description: The name of the contract - example: WETH9 + timestamp: + description: Timestamp of the data point + example: 2024-01-01T23:59:59.999Z + format: date-time type: string - abi: - description: The ABI of the contract - example: - - inputs: - - internalType: address - name: to - type: address - - internalType: uint256 - name: amount - type: uint256 - stateMutability: nonpayable - type: function - name: mint - items: - $ref: "#/components/schemas/AbiFunction" - type: array - isProxy: - description: Whether the contract is a proxy contract - example: true - type: boolean - implementation: - description: The implementation contract address - example: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 + totalSupply: + description: Total supply at the given timestamp + example: "1000000000000000000000" type: string - isPublic: - description: Whether the contract ABI is public - example: true - type: boolean required: - - abi - - baseAssetId - - contractAddress - - isPublic - - name + - timestamp + - totalSupply type: object - AddAbiRequestDto: + TotalSupplyPagedResponse: example: - baseAssetId: ETH - name: MyContract - contractAddress: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 - abi: - - inputs: - - internalType: address - name: to - type: address - - internalType: uint256 - name: amount - type: uint256 - stateMutability: nonpayable - type: function - name: mint + next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + total: 150 + data: + - timestamp: 2024-01-01T23:59:59.999Z + totalSupply: "1000000000000000000000" + prev: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== properties: - contractAddress: - description: The address of deployed contract - example: 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 - type: string - baseAssetId: - description: The blockchain base assetId - example: ETH - type: string - abi: - description: The ABI of the contract + data: + description: Array of total supply data points example: - - inputs: - - internalType: address - name: to - type: address - - internalType: uint256 - name: amount - type: uint256 - stateMutability: nonpayable - type: function - name: mint + - timestamp: 2024-01-01T23:59:59.999Z + totalSupply: "1000000000000000000000" items: - $ref: "#/components/schemas/AbiFunction" + $ref: "#/components/schemas/TotalSupplyItemDto" type: array - name: - description: The name of the contract - example: MyContract + next: + description: Cursor for next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + type: string + prev: + description: Cursor for previous page + example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== type: string + total: + description: Total count of items + example: 150 + type: number required: - - abi - - baseAssetId - - contractAddress + - data type: object - AssetMetadataDto: + AddressBalanceItemDto: example: - symbol: MYT - holdersCount: 6 - totalSupply: "1000000000000000" - contractAddress: 0x1234567890abcdef1234567890abcdef12345678 - vaultAccountId: "0" - type: ERC20 - blockchain: ETH_TEST5 - assetId: BQ5R_MY_TOKEN - issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ - decimals: 18 - name: MyToken - testnet: true - networkProtocol: ETH + lastUpdated: 2023-12-01T12:00:00Z + balance: "1000000000000000000" + accountAddress: 0x1234567890123456789012345678901234567890 properties: - assetId: - description: The Fireblocks` asset id - example: BQ5R_MY_TOKEN - type: string - name: - description: The name of the token - example: MyToken - type: string - symbol: - description: The symbol of the token - example: MYT - type: string - networkProtocol: - description: The network protocol of the token - example: ETH - type: string - totalSupply: - description: The total supply of the token - example: "1000000000000000" + accountAddress: + description: The account address + example: 0x1234567890123456789012345678901234567890 type: string - holdersCount: - description: The number of holders of the token - example: 6 - type: number - type: - description: The type of the token - example: ERC20 + balance: + description: The current balance of the account + example: "1000000000000000000" type: string - contractAddress: - description: The address of the token contract - example: 0x1234567890abcdef1234567890abcdef12345678 + lastUpdated: + description: The timestamp when this balance was last updated + example: 2023-12-01T12:00:00Z + format: date-time type: string - issuerAddress: - description: "In case of Stellar or Ripple, the address of the issuer of\ - \ the token" - example: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ + required: + - accountAddress + - balance + - lastUpdated + type: object + AddressBalancePagedResponse: + example: + next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + total: 150 + data: + - accountAddress: 0x1234567890123456789012345678901234567890 + balance: "1000000000000000000" + lastUpdated: 2023-12-01T12:00:00.000Z + prev: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== + properties: + data: + description: Array of address balance data + example: + - accountAddress: 0x1234567890123456789012345678901234567890 + balance: "1000000000000000000" + lastUpdated: 2023-12-01T12:00:00.000Z + items: + $ref: "#/components/schemas/AddressBalanceItemDto" + type: array + next: + description: Cursor for next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== type: string - testnet: - description: Is it deployed on testnet or to mainnet - example: true - type: boolean - blockchain: - description: The blockchain native asset id which the token is deployed - on - example: ETH_TEST5 + prev: + description: Cursor for previous page (reserved for future support) + example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== type: string - decimals: - description: The number of decimals of the token - example: 18 + total: + description: Total count of items + example: 150 type: number - vaultAccountId: - description: The id of the vault account that initiated the request to issue - the token. Will be empty if token was issued outside of Fireblocks. - example: "0" - type: string required: - - assetId + - data type: object - CollectionMetadataDto: + BalanceHistoryItemDto: + example: + balance: "1000000000000000000000" + timestamp: 2024-01-01T23:59:59.999Z properties: - fbCollectionId: - description: Fireblocks collection id - example: 911fe739f0d4d123c98fd366c3bed35c6e30c00e - type: string - name: - description: Collection name - example: Rarible - type: string - symbol: - description: Collection symbol - example: RARI + timestamp: + description: Timestamp of the data point + example: 2024-01-01T23:59:59.999Z + format: date-time type: string - standard: - description: Collection contract standard - example: "[\"ERC721\",\"ERC1155\",\"FA2\"]" + balance: + description: Balance at the given timestamp + example: "1000000000000000000000" type: string - blockchainDescriptor: - description: Collection's blockchain - example: ETH + required: + - balance + - timestamp + type: object + BalanceHistoryPagedResponse: + example: + next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + total: 150 + data: + - timestamp: 2024-01-01T23:59:59.999Z + balance: "1000000000000000000000" + prev: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== + properties: + data: + description: Array of balance history data points + example: + - timestamp: 2024-01-01T23:59:59.999Z + balance: "1000000000000000000000" + items: + $ref: "#/components/schemas/BalanceHistoryItemDto" + type: array + next: + description: Cursor for next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== type: string - contractAddress: - description: Collection contract address - example: 0x1723017329a804564bC8d215496C89eaBf1F3211 + prev: + description: Cursor for previous page + example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== type: string + total: + description: Total count of items + example: 150 + type: number required: - - blockchainDescriptor - - fbCollectionId + - data type: object - ContractMetadataDto: + OnchainTransferEvent: properties: id: - description: The deployed contract ID - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + description: Unique identifier for the transfer event + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid type: string - blockchainId: - description: The blockchain ID - example: B7QG017M + transactionHash: + description: Hash of the transaction containing this transfer + example: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + type: string + logIndex: + description: Index of the log within the transaction + example: "0" type: string contractAddress: - description: The address of the token contract - example: 0x1234567890abcdef1234567890abcdef12345678 + description: Address of the token contract + example: 0x1234567890123456789012345678901234567890 type: string - contractTemplateId: - description: The contract template ID - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + fromAddress: + description: Address that sent the tokens + example: 0xabcdef1234567890abcdef1234567890abcdef12 type: string - vaultAccountId: - description: The vault account ID that initiated the request to issue the - token - example: "0" + toAddress: + description: Address that received the tokens + example: 0x1234567890123456789012345678901234567890 type: string - required: - - blockchainId - - contractAddress - - contractTemplateId - - id - type: object - TokenLinkDto: - example: - displayName: My Simple ERC20 Token - id: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb - refId: BQ5R_MY_TOKEN - type: NON_FUNGIBLE_TOKEN - tokenMetadata: - symbol: MYT - holdersCount: 6 - totalSupply: "1000000000000000" - contractAddress: 0x1234567890abcdef1234567890abcdef12345678 - vaultAccountId: "0" - type: ERC20 - blockchain: ETH_TEST5 - assetId: BQ5R_MY_TOKEN - issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ - decimals: 18 - name: MyToken - testnet: true - networkProtocol: ETH - status: COMPLETED - properties: - id: - description: The token link id - example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb + value: + description: Amount of tokens transferred (in smallest unit) + example: "1000000000000000000" type: string - status: - description: The token status - enum: - - PENDING - - COMPLETED - example: COMPLETED + chainId: + description: Chain ID of the blockchain + example: 1 + type: integer + baseAssetId: + description: The blockchain base asset identifier + example: ETH_TEST3 type: string - type: - description: The type of token - enum: - - FUNGIBLE_TOKEN - - NON_FUNGIBLE_TOKEN - - TOKEN_UTILITY - - TOKEN_EXTENSION - example: NON_FUNGIBLE_TOKEN + blockNumber: + description: Block number containing this transfer + example: 12345678 + type: integer + blockHash: + description: Hash of the block containing this transfer + example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef type: string - refId: - description: The Fireblocks' reference id - example: BQ5R_MY_TOKEN + blockTimestamp: + description: Timestamp when the block was mined + example: 2025-01-16T15:45:00Z + format: date-time type: string - displayName: - description: "The token display name. If was not provided, would be taken\ - \ from the contract template" - example: My Simple ERC20 Token + eventName: + description: Name of the event (typically "Transfer") + example: Transfer type: string - tokenMetadata: - $ref: "#/components/schemas/TokenLinkDto_tokenMetadata" required: + - baseAssetId + - blockHash + - blockNumber + - blockTimestamp + - chainId + - contractAddress + - eventName + - fromAddress - id - - status + - logIndex + - toAddress + - transactionHash + - value type: object - TokensPaginatedResponse: + OnchainTransfersPagedResponse: example: - next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + total: 150 data: - - displayName: My Simple ERC20 Token - id: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb - refId: BQ5R_MY_TOKEN - type: NON_FUNGIBLE_TOKEN - tokenMetadata: - symbol: MYT - holdersCount: 6 - totalSupply: "1000000000000000" - contractAddress: 0x1234567890abcdef1234567890abcdef12345678 - vaultAccountId: "0" - type: ERC20 - blockchain: ETH_TEST5 - assetId: BQ5R_MY_TOKEN - issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ - decimals: 18 - name: MyToken - testnet: true - networkProtocol: ETH - status: COMPLETED - - displayName: My Simple ERC20 Token - id: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb - refId: BQ5R_MY_TOKEN - type: NON_FUNGIBLE_TOKEN - tokenMetadata: - symbol: MYT - holdersCount: 6 - totalSupply: "1000000000000000" - contractAddress: 0x1234567890abcdef1234567890abcdef12345678 - vaultAccountId: "0" - type: ERC20 - blockchain: ETH_TEST5 - assetId: BQ5R_MY_TOKEN - issuerAddress: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ - decimals: 18 - name: MyToken - testnet: true - networkProtocol: ETH - status: COMPLETED + - id: 550e8400-e29b-41d4-a716-446655440000 + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + logIndex: "0" + contractAddress: 0x1234567890123456789012345678901234567890 + fromAddress: 0xabcdef1234567890abcdef1234567890abcdef12 + toAddress: 0x1234567890123456789012345678901234567890 + value: "1000000000000000000" + chainId: 1 + baseAssetId: ETH_TEST3 + blockNumber: 12345678 + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + blockTimestamp: 2025-01-16T15:45:00Z + eventName: Transfer + prev: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== properties: data: - description: The data of the current page + description: Array of ERC20 transfer events + example: + - id: 550e8400-e29b-41d4-a716-446655440000 + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + logIndex: "0" + contractAddress: 0x1234567890123456789012345678901234567890 + fromAddress: 0xabcdef1234567890abcdef1234567890abcdef12 + toAddress: 0x1234567890123456789012345678901234567890 + value: "1000000000000000000" + chainId: 1 + baseAssetId: ETH_TEST3 + blockNumber: 12345678 + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + blockTimestamp: 2025-01-16T15:45:00Z + eventName: Transfer items: - $ref: "#/components/schemas/TokenLinkDto" + $ref: "#/components/schemas/OnchainTransferEvent" type: array next: - description: The ID of the next page - example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 - nullable: true + description: Cursor for next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + type: string + prev: + description: Cursor for previous page + example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== type: string + total: + description: Total count of items + example: 150 + type: number required: - data type: object - EVMTokenCreateParamsDto: + DecodedLog: + description: Decoded event log from a blockchain transaction. Note - Additional + dynamic properties may be present beyond the required ones. example: - deployFunctionParams: - - internalType: string - name: name - type: string - value: name - - internalType: string - name: symbol - type: string - value: symbol - - components: - - internalType: bool - name: _isMintable - type: bool - internalType: struct MyStruct - name: customConfigProps - type: tuple - value: - - internalType: bool - name: _isMintable - type: bool - value: false - contractId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + address: 0x1234567890123456789012345678901234567890 + logIndex: "0" + blockNumber: "12345678" + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 properties: - contractId: - description: The id of the contract template that will be used to create - the token - example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d + address: + description: Contract address that emitted the log + example: 0x1234567890123456789012345678901234567890 type: string - deployFunctionParams: - description: The deploy function parameters and values of the contract template - example: - - internalType: string - name: name - type: string - value: name - - internalType: string - name: symbol - type: string - value: symbol - - components: - - internalType: bool - name: _isMintable - type: bool - internalType: struct MyStruct - name: customConfigProps - type: tuple - value: - - internalType: bool - name: _isMintable - type: bool - value: false - items: - $ref: "#/components/schemas/ParameterWithValue" - type: array - required: - - contractId - type: object - StellarRippleCreateParamsDto: - properties: - symbol: - description: The symbol of the token - example: MyUSDT + blockHash: + description: Hash of the block containing this log + example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef type: string - name: - description: The name of the token - example: My USD Tether + blockNumber: + description: Block number containing this log + example: "12345678" type: string - issuerAddress: - description: The address of the issuer of this token. Will be part of the - identifier of this token on chain. - example: rnDV4JiwgRNhudPY2sm65AzECpRXaasL4r + transactionHash: + description: Hash of the transaction that generated this log + example: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + type: string + logIndex: + description: Index of the log in the transaction + example: "0" type: string required: - - issuerAddress - - name - - symbol + - address + - blockHash + - blockNumber + - logIndex + - transactionHash type: object - SolanaSimpleCreateParams: + OnchainTransaction: + example: + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + contractAddress: 0x1234567890123456789012345678901234567890 + transactionIndex: "0" + type: "2" + toAddress: 0x1234567890123456789012345678901234567890 + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + baseAssetId: ETH_TEST3 + gasUsed: "21000" + decodedLogs: + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + address: 0x1234567890123456789012345678901234567890 + logIndex: "0" + blockNumber: "12345678" + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + chainId: 1 + blockNumber: 12345678 + cumulativeGasUsed: "21000" + blockTimestamp: 2025-01-16T15:45:00Z + fromAddress: 0xabcdef1234567890abcdef1234567890abcdef12 + id: 550e8400-e29b-41d4-a716-446655440000 + effectiveGasPrice: "20000000000" + status: "1" properties: - name: - description: The name of the token or asset being created. - example: SolanaToken + id: + description: Unique identifier for the transaction + example: 550e8400-e29b-41d4-a716-446655440000 + format: uuid type: string - symbol: - description: "The symbol for the token, typically an abbreviated representation." - example: SOL + baseAssetId: + description: The blockchain base asset identifier + example: ETH_TEST3 type: string - decimals: - description: "The number of decimal places the token supports (e.g., 9 for\ - \ typical Solana tokens)." - example: 9 + blockHash: + description: Hash of the block containing this transaction + example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + type: string + blockNumber: + description: Block number containing this transaction + example: 12345678 type: integer - required: - - decimals - - name - - symbol - type: object - CreateTokenRequestDto: - example: - txNote: Token creation transaction for new stablecoin - assetId: ETH_TEST5 - displayName: displayName - useGasless: false - fee: "2000" - vaultAccountId: "0" - externalId: 0192e4f5-924e-7bb9-8e5b-c748270feb38 - feeLevel: MEDIUM - blockchainId: B7QG017M - createParams: - deployFunctionParams: - - internalType: string - name: name - type: string - value: name - - internalType: string - name: symbol - type: string - value: symbol - - components: - - internalType: bool - name: _isMintable - type: bool - internalType: struct MyStruct - name: customConfigProps - type: tuple - value: - - internalType: bool - name: _isMintable - type: bool - value: false - contractId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d - properties: - blockchainId: - description: The id of the blockchain the request was initiated on - example: B7QG017M + blockTimestamp: + description: Timestamp when the block was mined + example: 2025-01-16T15:45:00Z + format: date-time type: string - assetId: - description: The base asset identifier of the blockchain you want to deploy - to - example: ETH_TEST5 + chainId: + description: Chain ID of the blockchain + example: 1 + type: integer + contractAddress: + description: Contract address if this is a contract transaction + example: 0x1234567890123456789012345678901234567890 + nullable: true type: string - vaultAccountId: - description: The id of the vault account that initiated the request to issue - the token - example: "0" + cumulativeGasUsed: + description: Cumulative gas used in the block up to this transaction + example: "21000" type: string - createParams: - $ref: "#/components/schemas/CreateTokenRequestDto_createParams" - displayName: + decodedLogs: + $ref: "#/components/schemas/DecodedLog" + effectiveGasPrice: + description: Effective gas price paid for the transaction + example: "20000000000" type: string - useGasless: - description: "Indicates whether the token should be created in a gasless\ - \ manner, utilizing the ERC-2771 standard. When set to true, the transaction\ - \ will be relayed by a designated relayer. The workspace must be configured\ - \ to use Fireblocks gasless relay." - example: false - type: boolean - fee: - description: Max fee amount for the write function transaction. interchangeable - with the 'feeLevel' field - example: "2000" + fromAddress: + description: Address that initiated the transaction + example: 0xabcdef1234567890abcdef1234567890abcdef12 type: string - feeLevel: - description: Fee level for the write function transaction. interchangeable - with the 'fee' field - enum: - - LOW - - MEDIUM - - HIGH - example: MEDIUM + gasUsed: + description: Amount of gas used by this transaction + example: "21000" type: string - txNote: - description: Custom note that describes the transaction at your Fireblocks - workspace. This note will be visible in the Fireblocks UI and in the transaction - details and not on the blockchain. - example: Token creation transaction for new stablecoin + status: + description: Transaction status + example: "1" type: string - externalId: - description: External id that can be used to identify the transaction in - your system. The unique identifier of the transaction outside of Fireblocks - with max length of 255 characters - example: 0192e4f5-924e-7bb9-8e5b-c748270feb38 + toAddress: + description: Address that received the transaction + example: 0x1234567890123456789012345678901234567890 + nullable: true + type: string + transactionHash: + description: Hash of the transaction + example: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + type: string + transactionIndex: + description: Index of the transaction in the block + example: "0" + type: string + type: + description: Transaction type + example: "2" type: string required: - - createParams - - vaultAccountId + - baseAssetId + - blockHash + - blockNumber + - blockTimestamp + - chainId + - cumulativeGasUsed + - effectiveGasPrice + - fromAddress + - gasUsed + - id + - status + - transactionHash + - transactionIndex + - type type: object - AssetAlreadyExistHttpError: + OnchainTransactionsPagedResponse: example: - message: message - error: Conflict - statusCode: 409 + next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== + total: 150 + data: + - id: 550e8400-e29b-41d4-a716-446655440000 + baseAssetId: ETH_TEST3 + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + blockNumber: 12345678 + blockTimestamp: 2025-01-16T15:45:00Z + chainId: 1 + contractAddress: 0x1234567890123456789012345678901234567890 + cumulativeGasUsed: "21000" + effectiveGasPrice: "20000000000" + fromAddress: 0xabcdef1234567890abcdef1234567890abcdef12 + gasUsed: "21000" + status: "1" + toAddress: 0x1234567890123456789012345678901234567890 + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + transactionIndex: "0" + type: "2" + prev: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== properties: - statusCode: - description: HTTP status code - example: 409 - format: int32 - type: integer - message: - description: Error message + data: + description: Array of onchain transactions + example: + - id: 550e8400-e29b-41d4-a716-446655440000 + baseAssetId: ETH_TEST3 + blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef + blockNumber: 12345678 + blockTimestamp: 2025-01-16T15:45:00Z + chainId: 1 + contractAddress: 0x1234567890123456789012345678901234567890 + cumulativeGasUsed: "21000" + effectiveGasPrice: "20000000000" + fromAddress: 0xabcdef1234567890abcdef1234567890abcdef12 + gasUsed: "21000" + status: "1" + toAddress: 0x1234567890123456789012345678901234567890 + transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 + transactionIndex: "0" + type: "2" + items: + $ref: "#/components/schemas/OnchainTransaction" + type: array + next: + description: Cursor for next page + example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== type: string - error: - description: Short description of the HTTP error - example: Conflict + prev: + description: Cursor for previous page + example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg== type: string - type: object - LinkedTokensCount: - example: - count: 42 - properties: - count: - description: The total count of linked tokens - example: 42 + total: + description: Total count of items + example: 150 type: number required: - - count + - data type: object - TokenLinkRequestDto: - example: - baseAssetId: ETH_TEST3 - displayName: My Simple ERC20 Token - contractAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - refId: USDC_ETH_TEST3_1XF5 - type: FUNGIBLE_TOKEN + RoleGrantee: properties: - type: - description: The type of token being linked - enum: - - FUNGIBLE_TOKEN - - NON_FUNGIBLE_TOKEN - - TOKEN_UTILITY - - TOKEN_EXTENSION - type: string - refId: - description: "The Fireblocks' token link reference id. For example, 'BQ5R_BDESC_ABC'\ - \ if it's a fungible \n\t\t\t\t\tasset" - example: USDC_ETH_TEST3_1XF5 - type: string - displayName: - description: The token display name - example: My Simple ERC20 Token - type: string - baseAssetId: - description: The blockchain base assetId - example: ETH_TEST3 - type: string - contractAddress: - description: The contract's onchain address + accountAddress: + description: The address of the account that has been granted the role example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 type: string + dateOfGrant: + description: The date when the role was granted to this account + example: 2024-07-01T00:00:00Z + format: date-time + type: string required: - - type + - accountAddress + - dateOfGrant type: object - TokenLinkExistsHttpError: - example: - message: message - error: Conflict - statusCode: 409 + RoleDetails: properties: - statusCode: - description: HTTP status code - example: 409 - format: int32 - type: integer - message: - description: Error message + roleHash: + description: The role hash identifier + example: 0x0000000000000000000000000000000000000000000000000000000000000000 type: string - error: - description: Short description of the HTTP error - example: Conflict + description: + description: Human-readable description of the role + example: DEFAULT_ADMIN_ROLE type: string + accounts: + description: List of accounts that have been granted this role + example: + - accountAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateOfGrant: 2024-07-01T00:00:00.000Z + items: + $ref: "#/components/schemas/RoleGrantee" + type: array + required: + - accounts + - description + - roleHash type: object - NotFoundException: + ActiveRolesMap: + additionalProperties: + $ref: "#/components/schemas/RoleDetails" + description: "Active RBAC roles on the contract, keyed by role name (e.g. DEFAULT_ADMIN_ROLE,\ + \ MINTER_ROLE). Each entry contains the on-chain role hash, a human-readable\ + \ description, and the list of accounts currently granted that role." example: - message: message - error: Not Found - statusCode: 404 + DEFAULT_ADMIN_ROLE: + roleHash: 0x0000000000000000000000000000000000000000000000000000000000000000 + description: DEFAULT_ADMIN_ROLE + accounts: + - accountAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateOfGrant: 2024-07-01T00:00:00.000Z + type: object + ActiveRolesResponse: + example: + activeRoles: + DEFAULT_ADMIN_ROLE: + roleHash: 0x0000000000000000000000000000000000000000000000000000000000000000 + description: DEFAULT_ADMIN_ROLE + accounts: + - accountAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateOfGrant: 2024-07-01T00:00:00.000Z properties: - statusCode: - description: HTTP status code - example: 404 - format: int32 - type: integer - message: - description: Error message - type: string - error: - description: Short description of the HTTP error - example: Not Found - type: string + activeRoles: + additionalProperties: + $ref: "#/components/schemas/RoleDetails" + description: "Active RBAC roles on the contract, keyed by role name (e.g.\ + \ DEFAULT_ADMIN_ROLE, MINTER_ROLE). Each entry contains the on-chain role\ + \ hash, a human-readable description, and the list of accounts currently\ + \ granted that role." + example: + DEFAULT_ADMIN_ROLE: + roleHash: 0x0000000000000000000000000000000000000000000000000000000000000000 + description: DEFAULT_ADMIN_ROLE + accounts: + - accountAddress: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 + dateOfGrant: 2024-07-01T00:00:00.000Z + type: object + required: + - activeRoles type: object GetDeployableAddressRequest: description: Request body for calculating deterministic address @@ -56755,22 +59742,7 @@ components: required: - contractAddress type: object - RoleGrantee: - properties: - accountAddress: - description: The address of the account that has been granted the role - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - type: string - dateOfGrant: - description: The date when the role was granted to this account - example: 2024-07-01T00:00:00Z - format: date-time - type: string - required: - - accountAddress - - dateOfGrant - type: object - RoleDetails: + RoleDetails-2: properties: roleHash: description: The role hash identifier @@ -56790,30 +59762,12 @@ components: - description - roleHash type: object - ActiveRolesResponse: + ActiveRolesResponse-2: additionalProperties: - $ref: "#/components/schemas/RoleDetails" + $ref: "#/components/schemas/RoleDetails-2" description: A map of role names to their details type: object - AccessRegistryAddressItem: - example: - address: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - dateAdded: 2024-07-01T00:00:00Z - properties: - address: - description: The address that was added to the access registry - example: 0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66 - type: string - dateAdded: - description: The date when the address was added to the access registry - example: 2024-07-01T00:00:00Z - format: date-time - type: string - required: - - address - - dateAdded - type: object - AccessRegistryCurrentStateResponse: + AccessRegistryCurrentStateResponse-2: example: next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== total: 150 @@ -56844,166 +59798,7 @@ components: required: - data type: object - AccessRegistrySummaryResponse: - example: - totalActiveAddresses: 42 - properties: - totalActiveAddresses: - description: The total number of active addresses in the access registry - example: 42 - type: number - required: - - totalActiveAddresses - type: object - DecodedLog: - description: Decoded event log from a blockchain transaction. Note - Additional - dynamic properties may be present beyond the required ones. - example: - blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - address: 0x1234567890123456789012345678901234567890 - logIndex: "0" - blockNumber: "12345678" - transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 - properties: - address: - description: Contract address that emitted the log - example: 0x1234567890123456789012345678901234567890 - type: string - blockHash: - description: Hash of the block containing this log - example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - type: string - blockNumber: - description: Block number containing this log - example: "12345678" - type: string - transactionHash: - description: Hash of the transaction that generated this log - example: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 - type: string - logIndex: - description: Index of the log in the transaction - example: "0" - type: string - required: - - address - - blockHash - - blockNumber - - logIndex - - transactionHash - type: object - OnchainTransaction: - example: - blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - contractAddress: 0x1234567890123456789012345678901234567890 - transactionIndex: "0" - type: "2" - toAddress: 0x1234567890123456789012345678901234567890 - transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 - baseAssetId: ETH_TEST3 - gasUsed: "21000" - decodedLogs: - blockHash: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - address: 0x1234567890123456789012345678901234567890 - logIndex: "0" - blockNumber: "12345678" - transactionHash: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 - chainId: 1 - blockNumber: 12345678 - cumulativeGasUsed: "21000" - blockTimestamp: 2025-01-16T15:45:00Z - fromAddress: 0xabcdef1234567890abcdef1234567890abcdef12 - id: 550e8400-e29b-41d4-a716-446655440000 - effectiveGasPrice: "20000000000" - status: "1" - properties: - id: - description: Unique identifier for the transaction - example: 550e8400-e29b-41d4-a716-446655440000 - format: uuid - type: string - baseAssetId: - description: The blockchain base asset identifier - example: ETH_TEST3 - type: string - blockHash: - description: Hash of the block containing this transaction - example: 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef - type: string - blockNumber: - description: Block number containing this transaction - example: 12345678 - type: integer - blockTimestamp: - description: Timestamp when the block was mined - example: 2025-01-16T15:45:00Z - format: date-time - type: string - chainId: - description: Chain ID of the blockchain - example: 1 - type: integer - contractAddress: - description: Contract address if this is a contract transaction - example: 0x1234567890123456789012345678901234567890 - nullable: true - type: string - cumulativeGasUsed: - description: Cumulative gas used in the block up to this transaction - example: "21000" - type: string - decodedLogs: - $ref: "#/components/schemas/DecodedLog" - effectiveGasPrice: - description: Effective gas price paid for the transaction - example: "20000000000" - type: string - fromAddress: - description: Address that initiated the transaction - example: 0xabcdef1234567890abcdef1234567890abcdef12 - type: string - gasUsed: - description: Amount of gas used by this transaction - example: "21000" - type: string - status: - description: Transaction status - example: "1" - type: string - toAddress: - description: Address that received the transaction - example: 0x1234567890123456789012345678901234567890 - nullable: true - type: string - transactionHash: - description: Hash of the transaction - example: 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 - type: string - transactionIndex: - description: Index of the transaction in the block - example: "0" - type: string - type: - description: Transaction type - example: "2" - type: string - required: - - baseAssetId - - blockHash - - blockNumber - - blockTimestamp - - chainId - - cumulativeGasUsed - - effectiveGasPrice - - fromAddress - - gasUsed - - id - - status - - transactionHash - - transactionIndex - - type - type: object - OnchainTransactionsPagedResponse: + OnchainTransactionsPagedResponse-2: example: next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== total: 150 @@ -57074,25 +59869,7 @@ components: required: - data type: object - TotalSupplyItemDto: - example: - totalSupply: "1000000000000000000000" - timestamp: 2024-01-01T23:59:59.999Z - properties: - timestamp: - description: Timestamp of the data point - example: 2024-01-01T23:59:59.999Z - format: date-time - type: string - totalSupply: - description: Total supply at the given timestamp - example: "1000000000000000000000" - type: string - required: - - timestamp - - totalSupply - type: object - TotalSupplyPagedResponse: + TotalSupplyPagedResponse-2: example: next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== total: 150 @@ -57123,25 +59900,7 @@ components: required: - data type: object - BalanceHistoryItemDto: - example: - balance: "1000000000000000000000" - timestamp: 2024-01-01T23:59:59.999Z - properties: - timestamp: - description: Timestamp of the data point - example: 2024-01-01T23:59:59.999Z - format: date-time - type: string - balance: - description: Balance at the given timestamp - example: "1000000000000000000000" - type: string - required: - - balance - - timestamp - type: object - BalanceHistoryPagedResponse: + BalanceHistoryPagedResponse-2: example: next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== total: 150 @@ -57172,60 +59931,7 @@ components: required: - data type: object - TokenContractSummaryResponse: - example: - baseAssetId: ETH - totalSupply: "1000000000000000000000" - contractAddress: 0x1234567890123456789012345678901234567890 - totalAddresses: 150 - properties: - baseAssetId: - description: The base asset ID - example: ETH - type: string - contractAddress: - description: The contract address - example: 0x1234567890123456789012345678901234567890 - type: string - totalAddresses: - description: Total number of addresses with balances - example: 150 - type: number - totalSupply: - description: The total supply of the token - example: "1000000000000000000000" - type: string - required: - - baseAssetId - - contractAddress - - totalAddresses - - totalSupply - type: object - AddressBalanceItemDto: - example: - lastUpdated: 2023-12-01T12:00:00Z - balance: "1000000000000000000" - accountAddress: 0x1234567890123456789012345678901234567890 - properties: - accountAddress: - description: The account address - example: 0x1234567890123456789012345678901234567890 - type: string - balance: - description: The current balance of the account - example: "1000000000000000000" - type: string - lastUpdated: - description: The timestamp when this balance was last updated - example: 2023-12-01T12:00:00Z - format: date-time - type: string - required: - - accountAddress - - balance - - lastUpdated - type: object - AddressBalancePagedResponse: + AddressBalancePagedResponse-2: example: next: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA== total: 150 @@ -58149,6 +60855,95 @@ components: additionalProperties: $ref: "#/components/schemas/DelegationSummary" type: object + PositionRelatedTransaction: + properties: + txId: + description: The transaction ID. + example: b70601f4-d7b1-4795-a8ee-b09cdb4r850d + type: string + txHash: + description: On-chain transaction hash. Absent while the transaction is + pending. + example: 0xabc123... + type: string + stakingOperation: + description: "Staking operation type. One of APPROVE, STAKE, UNSTAKE, WITHDRAW,\ + \ CLAIM_REWARDS, SPLIT, CONSOLIDATE, MERGE, TRANSFER, AUTHORIZE, ADD_TO_STAKE.\ + \ Absent on legacy persisted rows." + enum: + - APPROVE + - STAKE + - UNSTAKE + - WITHDRAW + - CLAIM_REWARDS + - SPLIT + - CONSOLIDATE + - MERGE + - TRANSFER + - AUTHORIZE + - ADD_TO_STAKE + example: STAKE + type: string + timestamp: + description: ISO timestamp when the transaction was initiated (send time). + example: 2024-01-15T10:30:00Z + format: date-time + type: string + status: + description: Transaction outcome. + enum: + - PENDING + - COMPLETED + - FAILED + example: COMPLETED + type: string + amount: + description: Portion of position amount this transaction moved (native units). + Absent on legacy rows. + example: "32" + type: string + txNote: + description: User-provided note from the transfer request. Omitted when + not set. + example: stake request of 32ETH created on 02.04.23 + type: string + required: + - status + - timestamp + - txId + type: object + StakingPositionRelatedTransactionsPaginatedResponse: + example: + next: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + data: + - txId: b70601f4-d7b1-4795-a8ee-b09cdb4r850d + txHash: 0xabc123... + stakingOperation: STAKE + timestamp: 2024-01-15T10:30:00.000Z + status: COMPLETED + amount: "32" + properties: + data: + description: The related transactions for the current page. + example: + - txId: b70601f4-d7b1-4795-a8ee-b09cdb4r850d + txHash: 0xabc123... + stakingOperation: STAKE + timestamp: 2024-01-15T10:30:00.000Z + status: COMPLETED + amount: "32" + items: + $ref: "#/components/schemas/PositionRelatedTransaction" + type: array + next: + description: Cursor for the next page. Use this value in the pageCursor + parameter to fetch the next page. Null if no more pages. + example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9 + nullable: true + type: string + required: + - data + type: object Validator: properties: chainDescriptor: @@ -60258,6 +63053,20 @@ components: - NON_CITIZEN_ID - NATIONAL_REGISTRATION_CARD type: string + PersonalIdentificationDocument: + properties: + id: + description: The identification document number. + example: "12345678901" + type: string + type: + $ref: "#/components/schemas/PersonalIdentificationType" + expirationDate: + description: The expiration date of the identification document. + example: 2030-03-15 + format: date + type: string + type: object PersonalIdentification: example: externalReferenceId: person_ref_7f3e2d1c4b8a5e9f @@ -60281,6 +63090,11 @@ components: idType: PASSPORT additionalIdNumber: BVN987654321 additionalIdType: BVN + nationality: US + identificationDocuments: + - id: "12345678901" + type: PASSPORT + expirationDate: 2030-03-15 properties: externalReferenceId: type: string @@ -60304,17 +63118,39 @@ components: pattern: "^\\+[1-9]\\d{1,14}$" type: string idNumber: - description: The identification number corresponding to the primary identification - document type specified in idType + deprecated: true + description: Deprecated. Use identificationDocuments instead. type: string idType: - $ref: "#/components/schemas/PersonalIdentificationType" + allOf: + - $ref: "#/components/schemas/PersonalIdentificationType" + deprecated: true + description: Deprecated. Use identificationDocuments instead. + example: PASSPORT additionalIdNumber: - description: The identification number corresponding to the additional identification - document type specified in additionalIdType + deprecated: true + description: Deprecated. Use identificationDocuments instead. type: string additionalIdType: - $ref: "#/components/schemas/PersonalIdentificationType" + allOf: + - $ref: "#/components/schemas/PersonalIdentificationType" + deprecated: true + description: Deprecated. Use identificationDocuments instead. + example: BVN + nationality: + description: The ISO-3166 Alpha-2 country code representing the individual's + nationality. + example: US + type: string + identificationDocuments: + description: List of identification documents for the individual. + example: + - id: "12345678901" + type: PASSPORT + expirationDate: 2030-03-15 + items: + $ref: "#/components/schemas/PersonalIdentificationDocument" + type: array required: - dateOfBirth - entityType @@ -60342,6 +63178,8 @@ components: state: CA postalCode: "94105" country: US + dateOfRegistration: 2020-06-15 + countryOfRegistration: US properties: externalReferenceId: type: string @@ -60363,6 +63201,15 @@ components: example: "+14155551234" pattern: "^\\+[1-9]\\d{1,14}$" type: string + dateOfRegistration: + description: The date the business was registered. + example: 2020-06-15 + format: date + type: string + countryOfRegistration: + description: The ISO-3166 Alpha-2 country code where the business is registered. + example: US + type: string required: - businessName - entityType @@ -60640,7 +63487,7 @@ components: description: The expiration time of the quote in ISO 8601 format. example: 2024-01-15T10:35:00.000Z type: string - orderCreationRequirements: + requiredParticipantsIdentificationOnOrder: description: | 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. type: string @@ -60873,6 +63720,7 @@ components: enum: - CREATED - AWAITING_PAYMENT + - AWAITING_INFORMATION - PENDING_USER_ACTION - PROCESSING - CANCELED @@ -62522,6 +65370,200 @@ components: - status - via type: object + OrderRequirementSubmissionJsonSchema: + description: | + A JSON Schema (Draft-7) in string format describing the shape of the `data` object expected on the corresponding POST /trading/orders/{orderId}/requirement/data request. The schema is the contract: the client builds the `data` payload to match it, and SDKs can validate before sending. The string content is expected to be valid JSON (application/json). + example: | + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "required": ["sourceOfFunds", "purposeOfPayment"], + "properties": { + "sourceOfFunds": { + "type": "string", + "enum": ["SALARY", "SAVINGS", "INVESTMENT_RETURNS", "BUSINESS_INCOME", "OTHER"] + }, + "purposeOfPayment": { + "type": "string", + "enum": ["BUSINESS_EXPENSES", "PERSONAL_EXPENSES", "INVESTMENT", "OTHER"] + } + } + } + type: string + OrderRequirementAllowedFileType: + description: Supported file formats for order requirement file uploads. + enum: + - PDF + - JPEG + - PNG + - HEIC + - HEIF + - DOC + - DOCX + - XLS + - XLSX + - CSV + example: PDF + type: string + OrderRequirementFile: + description: A file the provider requires as part of the order requirement response. + example: + fileKey: identity_document + description: A clear photo or scan of the account holder's government-issued + ID. + allowedFileTypes: + - PDF + - JPEG + - PNG + properties: + fileKey: + description: Stable identifier for this required file. Used to correlate + uploads on submission. + example: identity_document + type: string + description: + description: Human-readable description of what the file should contain. + example: A clear photo or scan of the account holder's government-issued + ID. + type: string + allowedFileTypes: + description: File formats the provider accepts for this entry. + example: + - PDF + - JPEG + - PNG + items: + $ref: "#/components/schemas/OrderRequirementAllowedFileType" + type: array + required: + - allowedFileTypes + - description + - fileKey + type: object + OrderRequirementDetails: + description: "Order requirement details for an order that is awaiting compliance\ + \ requirements. Returned by GET /trading/orders/{orderId}/requirement." + example: + requiredFiles: + - fileKey: identity_document + description: A clear photo or scan of the account holder's government-issued + ID. + allowedFileTypes: + - PDF + - JPEG + - PNG + requirementId: info_7c1f9b2e4a6d + dueBy: 2024-01-15T10:35:00Z + requiredData: | + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "required": ["sourceOfFunds", "purposeOfPayment"], + "properties": { + "sourceOfFunds": { + "type": "string", + "enum": ["SALARY", "SAVINGS", "INVESTMENT_RETURNS", "BUSINESS_INCOME", "OTHER"] + }, + "purposeOfPayment": { + "type": "string", + "enum": ["BUSINESS_EXPENSES", "PERSONAL_EXPENSES", "INVESTMENT", "OTHER"] + } + } + } + properties: + requirementId: + description: Unique identifier of the order requirement request as issued + by the provider. + example: info_7c1f9b2e4a6d + type: string + dueBy: + description: ISO-8601 timestamp indicating when the order requirement submission + is due. + example: 2024-01-15T10:35:00Z + format: date-time + type: string + requiredData: + description: | + A JSON Schema (Draft-7) in string format describing the shape of the `data` object expected on the corresponding POST /trading/orders/{orderId}/requirement/data request. The schema is the contract: the client builds the `data` payload to match it, and SDKs can validate before sending. The string content is expected to be valid JSON (application/json). + example: | + { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "required": ["sourceOfFunds", "purposeOfPayment"], + "properties": { + "sourceOfFunds": { + "type": "string", + "enum": ["SALARY", "SAVINGS", "INVESTMENT_RETURNS", "BUSINESS_INCOME", "OTHER"] + }, + "purposeOfPayment": { + "type": "string", + "enum": ["BUSINESS_EXPENSES", "PERSONAL_EXPENSES", "INVESTMENT", "OTHER"] + } + } + } + type: string + requiredFiles: + description: Descriptors for files the provider requires as part of the + order requirement response. Empty when no files are required. Each entry's + `fileKey` is used to correlate uploads on the corresponding upload request. + example: + - fileKey: identity_document + description: A clear photo or scan of the account holder's government-issued + ID. + allowedFileTypes: + - PDF + - JPEG + - PNG + items: + $ref: "#/components/schemas/OrderRequirementFile" + type: array + required: + - requiredData + - requiredFiles + - requirementId + type: object + SubmitOrderRequirementRequest: + description: "Body of POST /trading/orders/{orderId}/requirement/data. Carries\ + \ the textual response (`data`). Any required files are uploaded separately\ + \ via POST /trading/orders/{orderId}/requirement/file." + example: + data: + fullName: Jane Doe + nationality: US + properties: + data: + additionalProperties: true + description: Free-form object that MUST conform to the `requiredData` JSON + Schema returned by the GET endpoint. Carries text/select fields. + example: + fullName: Jane Doe + nationality: US + type: object + required: + - data + type: object + OrderRequirementFileUpload: + description: "Multipart body of POST /trading/orders/{orderId}/requirement/file.\ + \ Uploads a single file as part of an order requirement response. Fireblocks\ + \ encrypts and uploads each file individually to the underlying provider." + properties: + fileKey: + description: Identifier of the required file this upload satisfies. Must + match a `fileKey` from `requiredFiles` on the GET response. + example: identity_document + type: string + file: + description: The binary file content. The file's type must be one of the + supported OrderRequirementAllowedFileType values; the file name and type + are derived from the uploaded part. + example: !!binary |- + PGJpbmFyeSBmaWxlIGNvbnRlbnQ+ + format: binary + type: string + required: + - file + - fileKey + type: object SetAdminQuorumThresholdRequest: properties: adminQuorumThreshold: @@ -67926,6 +70968,25 @@ components: matchedRule: $ref: "#/components/schemas/ScreeningTravelRuleMatchedRule" type: object + TransferPeerTypeEnum-2: + description: Transfer peer type (source or destination) + enum: + - VAULT_ACCOUNT + - EXCHANGE_ACCOUNT + - INTERNAL_WALLET + - EXTERNAL_WALLET + - CONTRACT + - NETWORK_CONNECTION + - FIAT_ACCOUNT + - COMPOUND + - GAS_STATION + - ONE_TIME_ADDRESS + - UNKNOWN + - END_USER_WALLET + - PROGRAM_CALL + - MULTI_DESTINATION + example: VAULT_ACCOUNT + type: string ScreeningTravelRulePrescreeningRule: description: | Matched prescreening rule details. @@ -67955,15 +71016,15 @@ components: example: MANUAL type: string sourceType: - $ref: "#/components/schemas/TransferPeerTypeEnum" + $ref: "#/components/schemas/TransferPeerTypeEnum-2" sourceSubType: $ref: "#/components/schemas/TransferPeerSubTypeEnum" destType: - $ref: "#/components/schemas/TransferPeerTypeEnum" + $ref: "#/components/schemas/TransferPeerTypeEnum-2" destSubType: $ref: "#/components/schemas/TransferPeerSubTypeEnum" transferPeerType: - $ref: "#/components/schemas/TransferPeerTypeEnum" + $ref: "#/components/schemas/TransferPeerTypeEnum-2" transferPeerSubType: $ref: "#/components/schemas/TransferPeerSubTypeEnum" destAddress: @@ -68330,7 +71391,7 @@ components: direction: $ref: "#/components/schemas/TravelRuleDirectionEnum" sourceType: - $ref: "#/components/schemas/TransferPeerTypeEnum" + $ref: "#/components/schemas/TransferPeerTypeEnum-2" sourceSubType: $ref: "#/components/schemas/TransferPeerSubTypeEnum" sourceAddress: @@ -68338,7 +71399,7 @@ components: example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa type: string destType: - $ref: "#/components/schemas/TransferPeerTypeEnum" + $ref: "#/components/schemas/TransferPeerTypeEnum-2" destSubType: $ref: "#/components/schemas/TransferPeerSubTypeEnum" destAddress: diff --git a/build.gradle b/build.gradle index 961ba1f7..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 = '20.0.0' +version = '0.0.0' buildscript { repositories { @@ -70,6 +70,7 @@ ext { jakarta_annotation_version = "2.1.1" beanvalidation_version = "3.0.2" junit_version = "5.10.2" + httpmime_version = "4.5.13" } dependencies { @@ -80,6 +81,7 @@ dependencies { implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" implementation "org.openapitools:jackson-databind-nullable:0.2.1" implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + implementation "org.apache.httpcomponents:httpmime:$httpmime_version" testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version" } diff --git a/docs/AccessRegistryCurrentStateResponse2.md b/docs/AccessRegistryCurrentStateResponse2.md new file mode 100644 index 00000000..51e5626f --- /dev/null +++ b/docs/AccessRegistryCurrentStateResponse2.md @@ -0,0 +1,16 @@ + + +# AccessRegistryCurrentStateResponse2 + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<AccessRegistryAddressItem>**](AccessRegistryAddressItem.md) | Array of active addresses in the access registry | | +|**next** | **String** | Cursor for next page | [optional] | +|**prev** | **String** | Cursor for previous page | [optional] | +|**total** | **BigDecimal** | Total count of active addresses in the access registry | [optional] | + + + diff --git a/docs/ActiveRolesResponse.md b/docs/ActiveRolesResponse.md new file mode 100644 index 00000000..083f75e0 --- /dev/null +++ b/docs/ActiveRolesResponse.md @@ -0,0 +1,13 @@ + + +# ActiveRolesResponse + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**activeRoles** | [**Map<String, RoleDetails>**](RoleDetails.md) | Active RBAC roles on the contract, keyed by role name (e.g. DEFAULT_ADMIN_ROLE, MINTER_ROLE). Each entry contains the on-chain role hash, a human-readable description, and the list of accounts currently granted that role. | | + + + diff --git a/docs/AddressBalancePagedResponse2.md b/docs/AddressBalancePagedResponse2.md new file mode 100644 index 00000000..d6dc46c5 --- /dev/null +++ b/docs/AddressBalancePagedResponse2.md @@ -0,0 +1,16 @@ + + +# AddressBalancePagedResponse2 + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<AddressBalanceItemDto>**](AddressBalanceItemDto.md) | Array of address balance data | | +|**next** | **String** | Cursor for next page | [optional] | +|**prev** | **String** | Cursor for previous page (reserved for future support) | [optional] | +|**total** | **BigDecimal** | Total count of items | [optional] | + + + diff --git a/docs/AllowlistEntry.md b/docs/AllowlistEntry.md new file mode 100644 index 00000000..1a5252fb --- /dev/null +++ b/docs/AllowlistEntry.md @@ -0,0 +1,22 @@ + + +# AllowlistEntry + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **UUID** | Unique identifier for the allowlist entry | | +|**address** | **String** | The blockchain address | | +|**assets** | **List<String>** | Assets approved for this address. Each value is either a Fireblocks asset ID (when the provider's asset maps to a Fireblocks-supported asset) or the raw provider asset symbol (when no mapping exists). Treat values as opaque strings. Possible combinations: - One or more specific asset values (e.g., `[\"BTC\", \"ETH\"]`) See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs. | | +|**networks** | **List<String>** | Networks approved for this address. Each value is either a Fireblocks network ID (when the provider's network maps to a Fireblocks-supported blockchain) or the raw provider blockchain identifier (when no mapping exists). Treat values as opaque strings. Possible combinations: - One or more specific network values (e.g., `[\"ETHEREUM\", \"POLYGON\"]`) See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers. | | +|**label** | **String** | Human-readable label for the address | [optional] | +|**addressIdentifier** | **String** | Additional identifier (e.g., memo, destination tag) | [optional] | +|**status** | **AllowlistEntryStatus** | | | +|**addedAt** | **OffsetDateTime** | ISO 8601 timestamp when entry was added | | +|**providerReferenceId** | **String** | Provider's internal reference ID | [optional] | +|**providerMetadata** | **Map<String, Object>** | Provider-specific pass-through data for this address. Treat as an opaque blob: the shape, set of keys, and value types vary by provider, by entry, and over time. Keys may be added, renamed, or removed without notice as providers evolve their integrations or as new providers are added. The example below illustrates one possible shape and is not a contract — do not program against specific keys. | [optional] | + + + diff --git a/docs/AllowlistEntryStatus.md b/docs/AllowlistEntryStatus.md new file mode 100644 index 00000000..6d7daece --- /dev/null +++ b/docs/AllowlistEntryStatus.md @@ -0,0 +1,21 @@ + + +# AllowlistEntryStatus + +## Enum + + +* `ACTIVE` (value: `"ACTIVE"`) + +* `PENDING_PROVIDER_COOLDOWN` (value: `"PENDING_PROVIDER_COOLDOWN"`) + +* `PENDING_PROVIDER_REVIEW` (value: `"PENDING_PROVIDER_REVIEW"`) + +* `PENDING_APPROVAL` (value: `"PENDING_APPROVAL"`) + +* `REJECTED` (value: `"REJECTED"`) + +* `REMOVED` (value: `"REMOVED"`) + + + diff --git a/docs/AllowlistMetadata.md b/docs/AllowlistMetadata.md new file mode 100644 index 00000000..b891d425 --- /dev/null +++ b/docs/AllowlistMetadata.md @@ -0,0 +1,26 @@ + + +# AllowlistMetadata + +Allowlist-specific metadata + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**lastSyncedAt** | **OffsetDateTime** | ISO 8601 timestamp of last sync with provider | [optional] | +|**syncStatus** | [**SyncStatusEnum**](#SyncStatusEnum) | Status of last sync operation | [optional] | + + + +## Enum: SyncStatusEnum + +| Name | Value | +|---- | -----| +| SUCCESS | "SUCCESS" | +| FAILED | "FAILED" | +| IN_PROGRESS | "IN_PROGRESS" | +| NEVER_SYNCED | "NEVER_SYNCED" | + + + diff --git a/docs/AllowlistResponse.md b/docs/AllowlistResponse.md new file mode 100644 index 00000000..3a64cc4c --- /dev/null +++ b/docs/AllowlistResponse.md @@ -0,0 +1,16 @@ + + +# AllowlistResponse + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<AllowlistEntry>**](AllowlistEntry.md) | Array of allowlist entries | | +|**metadata** | [**AllowlistMetadata**](AllowlistMetadata.md) | | [optional] | +|**total** | **Integer** | Total number of allowlist entries | | +|**next** | **String** | Cursor for the next page of results, if available | [optional] | + + + diff --git a/docs/BalanceHistoryPagedResponse2.md b/docs/BalanceHistoryPagedResponse2.md new file mode 100644 index 00000000..518fb93d --- /dev/null +++ b/docs/BalanceHistoryPagedResponse2.md @@ -0,0 +1,16 @@ + + +# BalanceHistoryPagedResponse2 + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<BalanceHistoryItemDto>**](BalanceHistoryItemDto.md) | Array of balance history data points | | +|**next** | **String** | Cursor for next page | [optional] | +|**prev** | **String** | Cursor for previous page | [optional] | +|**total** | **BigDecimal** | Total count of items | [optional] | + + + diff --git a/docs/BusinessIdentification.md b/docs/BusinessIdentification.md index a3d0e321..8cd84f38 100644 --- a/docs/BusinessIdentification.md +++ b/docs/BusinessIdentification.md @@ -15,6 +15,8 @@ |**postalAddress** | [**PostalAddress**](PostalAddress.md) | | | |**email** | **String** | | [optional] | |**phone** | **String** | Mobile phone number in E.164 format | [optional] | +|**dateOfRegistration** | **LocalDate** | The date the business was registered. | [optional] | +|**countryOfRegistration** | **String** | The ISO-3166 Alpha-2 country code where the business is registered. | [optional] | diff --git a/docs/ConnectedAccount.md b/docs/ConnectedAccount.md index efa39d39..f1129b8d 100644 --- a/docs/ConnectedAccount.md +++ b/docs/ConnectedAccount.md @@ -14,6 +14,9 @@ |**totalBalance** | [**ConnectedAccountTotalBalance**](ConnectedAccountTotalBalance.md) | | | |**manifest** | [**ConnectedAccountManifest**](ConnectedAccountManifest.md) | | | |**parentId** | **String** | The ID of the parent main account, if this is a sub account. | [optional] | +|**apiKey** | **String** | The API key identifier used to connect this account. | [optional] | +|**providerAccountName** | **String** | The account name provided by the provider. | [optional] | +|**accountType** | **ConnectedAccountType** | | | diff --git a/docs/ConnectedAccountType.md b/docs/ConnectedAccountType.md new file mode 100644 index 00000000..47fc5c2f --- /dev/null +++ b/docs/ConnectedAccountType.md @@ -0,0 +1,15 @@ + + +# ConnectedAccountType + +## Enum + + +* `EXCHANGE` (value: `"EXCHANGE"`) + +* `FIAT` (value: `"FIAT"`) + +* `CONNECTED_ACCOUNT` (value: `"CONNECTED_ACCOUNT"`) + + + diff --git a/docs/ConnectedAccountsBetaApi.md b/docs/ConnectedAccountsBetaApi.md index 4d89a1ed..179159f0 100644 --- a/docs/ConnectedAccountsBetaApi.md +++ b/docs/ConnectedAccountsBetaApi.md @@ -6,11 +6,14 @@ All URIs are relative to https://developers.fireblocks.com/reference/ |------------- | ------------- | -------------| | [**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 | | [**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 | @@ -179,6 +182,192 @@ No authorization required | **0** | Error Response | * X-Request-ID -
| +## getConnectedAccountAllowlist + +> CompletableFuture> getConnectedAccountAllowlist getConnectedAccountAllowlist(accountId, status, assetId, networkId, address, pageCursor, pageSize, sortBy, order) + +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 accounts only. + +### 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.ConnectedAccountsBetaApi; +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 accountId = "accountId_example"; // String | The connected account identifier + AllowlistEntryStatus status = AllowlistEntryStatus.fromValue("ACTIVE"); // AllowlistEntryStatus | Filter by allowlist entry status + String assetId = "assetId_example"; // String | Filter by Fireblocks asset ID. See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs. + String networkId = "networkId_example"; // String | Filter by Fireblocks network ID. See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers. + String address = "address_example"; // String | Filter by specific address + String pageCursor = "pageCursor_example"; // String | Pagination cursor for next page + Integer pageSize = 56; // Integer | Maximum number of entries to return + String sortBy = "addedAt"; // String | Field to sort results by. + String order = "ASC"; // String | Sort order (ASC or DESC). + try { + CompletableFuture> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId, status, assetId, networkId, address, pageCursor, pageSize, sortBy, 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("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountAllowlist"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **accountId** | **String**| The connected account identifier | | +| **status** | [**AllowlistEntryStatus**](.md)| Filter by allowlist entry status | [optional] [enum: ACTIVE, PENDING_PROVIDER_COOLDOWN, PENDING_PROVIDER_REVIEW, PENDING_APPROVAL, REJECTED, REMOVED] | +| **assetId** | **String**| Filter by Fireblocks asset ID. See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs. | [optional] | +| **networkId** | **String**| Filter by Fireblocks network ID. See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers. | [optional] | +| **address** | **String**| Filter by specific address | [optional] | +| **pageCursor** | **String**| Pagination cursor for next page | [optional] | +| **pageSize** | **Integer**| Maximum number of entries to return | [optional] | +| **sortBy** | **String**| Field to sort results by. | [optional] [default to addedAt] [enum: addedAt, lastSyncedAt] | +| **order** | **String**| Sort order (ASC or DESC). | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Allowlist entries response | * X-Request-ID -
| +| **404** | Connected account not found | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## getConnectedAccountAllowlistEntry + +> CompletableFuture> getConnectedAccountAllowlistEntry getConnectedAccountAllowlistEntry(accountId, allowlistId) + +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 accounts only. + +### 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.ConnectedAccountsBetaApi; +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 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); + 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("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling ConnectedAccountsBetaApi#getConnectedAccountAllowlistEntry"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **accountId** | **String**| The connected account identifier | | +| **allowlistId** | **String**| The Fireblocks allowlist entry identifier | | + +### 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** | Allowlist entry response | * X-Request-ID -
| +| **404** | Connected account or allowlist entry not found | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + ## getConnectedAccountBalances > CompletableFuture> getConnectedAccountBalances getConnectedAccountBalances(accountId, pageSize, pageCursor) @@ -618,3 +807,87 @@ No authorization required | **409** | Conflict. Account name is already in use by another account. | - | | **0** | Error Response | * X-Request-ID -
| + +## syncConnectedAccountAllowlist + +> CompletableFuture> syncConnectedAccountAllowlist syncConnectedAccountAllowlist(accountId, idempotencyKey) + +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 accounts only. + +### 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.ConnectedAccountsBetaApi; +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 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); + 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("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling ConnectedAccountsBetaApi#syncConnectedAccountAllowlist"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **accountId** | **String**| The connected account identifier | | +| **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**: Not defined +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **202** | Sync request accepted and processing | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + diff --git a/docs/ConnectedSingleAccountResponse.md b/docs/ConnectedSingleAccountResponse.md index 3a095d75..f2348dbb 100644 --- a/docs/ConnectedSingleAccountResponse.md +++ b/docs/ConnectedSingleAccountResponse.md @@ -14,6 +14,9 @@ |**totalBalance** | [**ConnectedAccountTotalBalance**](ConnectedAccountTotalBalance.md) | | | |**manifest** | [**ConnectedAccountManifest**](ConnectedAccountManifest.md) | | | |**parentId** | **String** | The ID of the parent main account, if this is a sub account. | [optional] | +|**apiKey** | **String** | The API key identifier used to connect this account. | [optional] | +|**providerAccountName** | **String** | The account name provided by the provider. | [optional] | +|**accountType** | **ConnectedAccountType** | | | |**subAccountsIds** | **List<String>** | IDs of sub-accounts associated with this connected account. | [optional] | diff --git a/docs/CreateWebhookRequest.md b/docs/CreateWebhookRequest.md index 41a52a98..339a51d5 100644 --- a/docs/CreateWebhookRequest.md +++ b/docs/CreateWebhookRequest.md @@ -11,6 +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] | diff --git a/docs/OnchainDataApi.md b/docs/OnchainDataApi.md index 4f158c2f..57e356fe 100644 --- a/docs/OnchainDataApi.md +++ b/docs/OnchainDataApi.md @@ -17,7 +17,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/ ## getAccessRegistryCurrentState -> CompletableFuture> getAccessRegistryCurrentState getAccessRegistryCurrentState(baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, order) +> CompletableFuture> getAccessRegistryCurrentState getAccessRegistryCurrentState(baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, order) Get the current state of addresses in an access registry @@ -53,7 +53,7 @@ public class Example { String sortBy = "dateAdded"; // String | Sorting field (enum). String order = "ASC"; // String | ASC / DESC ordering (default DESC) try { - CompletableFuture> response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, order); + CompletableFuture> response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, 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()); @@ -89,7 +89,7 @@ public class Example { ### Return type -CompletableFuture> +CompletableFuture> ### Authorization @@ -195,7 +195,7 @@ No authorization required ## getActiveRolesForContract -> CompletableFuture>> getActiveRolesForContract getActiveRolesForContract(baseAssetId, contractAddress) +> CompletableFuture>> getActiveRolesForContract getActiveRolesForContract(baseAssetId, contractAddress) List of active roles for a given contract address and base asset ID @@ -227,7 +227,7 @@ public class Example { String baseAssetId = "ETH_TEST3"; // String | The blockchain base assetId String contractAddress = "0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66"; // String | The contract address try { - CompletableFuture>> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId, contractAddress); + CompletableFuture>> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId, contractAddress); System.out.println("Status code: " + response.get().getStatusCode()); System.out.println("Response headers: " + response.get().getHeaders()); System.out.println("Response body: " + response.get().getData()); @@ -259,7 +259,7 @@ public class Example { ### Return type -CompletableFuture> +CompletableFuture> ### Authorization @@ -280,7 +280,7 @@ No authorization required ## getContractBalanceHistory -> CompletableFuture> getContractBalanceHistory getContractBalanceHistory(baseAssetId, contractAddress, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order) +> CompletableFuture> getContractBalanceHistory getContractBalanceHistory(baseAssetId, contractAddress, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order) Get historical balance data for a specific account in a contract @@ -320,7 +320,7 @@ public class Example { String sortBy = "blockTimestamp"; // String | Sorting field (enum). Sorting only supported by 'blockTimestamp' String order = "ASC"; // String | ASC / DESC ordering (default DESC) try { - CompletableFuture> response = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order); + CompletableFuture> response = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, 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()); @@ -360,7 +360,7 @@ public class Example { ### Return type -CompletableFuture> +CompletableFuture> ### Authorization @@ -466,7 +466,7 @@ No authorization required ## getContractTotalSupply -> CompletableFuture> getContractTotalSupply getContractTotalSupply(baseAssetId, contractAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order) +> CompletableFuture> getContractTotalSupply getContractTotalSupply(baseAssetId, contractAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order) Get historical total supply data for a contract @@ -505,7 +505,7 @@ public class Example { String sortBy = "blockTimestamp"; // String | Sorting field (enum). Sorting only supported by 'blockTimestamp' String order = "ASC"; // String | ASC / DESC ordering (default DESC) try { - CompletableFuture> response = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order); + CompletableFuture> response = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, 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()); @@ -544,7 +544,7 @@ public class Example { ### Return type -CompletableFuture> +CompletableFuture> ### Authorization @@ -565,7 +565,7 @@ No authorization required ## getLatestBalancesForContract -> CompletableFuture> getLatestBalancesForContract getLatestBalancesForContract(baseAssetId, contractAddress, accountAddress, pageCursor, pageSize, sortBy, order) +> CompletableFuture> getLatestBalancesForContract getLatestBalancesForContract(baseAssetId, contractAddress, accountAddress, pageCursor, pageSize, sortBy, order) Get latest balances for all addresses holding tokens from a contract @@ -602,7 +602,7 @@ public class Example { String sortBy = "accountAddress"; // String | Sorting field for balances String order = "ASC"; // String | ASC / DESC ordering (default DESC) try { - CompletableFuture> response = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId, contractAddress, accountAddress, pageCursor, pageSize, sortBy, order); + CompletableFuture> response = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId, contractAddress, accountAddress, pageCursor, pageSize, sortBy, 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()); @@ -639,7 +639,7 @@ public class Example { ### Return type -CompletableFuture> +CompletableFuture> ### Authorization @@ -660,7 +660,7 @@ No authorization required ## getOnchainTransactions -> CompletableFuture> getOnchainTransactions getOnchainTransactions(baseAssetId, contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order) +> CompletableFuture> getOnchainTransactions getOnchainTransactions(baseAssetId, contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order) Fetch onchain transactions for a contract @@ -698,7 +698,7 @@ public class Example { String sortBy = "blockTimestamp"; // String | Sorting field (enum). String order = "ASC"; // String | ASC / DESC ordering (default DESC) try { - CompletableFuture> response = fireblocks.onchainData().getOnchainTransactions(baseAssetId, contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order); + CompletableFuture> response = fireblocks.onchainData().getOnchainTransactions(baseAssetId, contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, 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()); @@ -736,7 +736,7 @@ public class Example { ### Return type -CompletableFuture> +CompletableFuture> ### Authorization diff --git a/docs/OnchainTransactionsPagedResponse2.md b/docs/OnchainTransactionsPagedResponse2.md new file mode 100644 index 00000000..9abd6eb3 --- /dev/null +++ b/docs/OnchainTransactionsPagedResponse2.md @@ -0,0 +1,16 @@ + + +# OnchainTransactionsPagedResponse2 + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<OnchainTransaction>**](OnchainTransaction.md) | Array of onchain transactions | | +|**next** | **String** | Cursor for next page | [optional] | +|**prev** | **String** | Cursor for previous page | [optional] | +|**total** | **BigDecimal** | Total count of items | [optional] | + + + diff --git a/docs/OnchainTransferEvent.md b/docs/OnchainTransferEvent.md new file mode 100644 index 00000000..b3635d06 --- /dev/null +++ b/docs/OnchainTransferEvent.md @@ -0,0 +1,25 @@ + + +# OnchainTransferEvent + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **UUID** | Unique identifier for the transfer event | | +|**transactionHash** | **String** | Hash of the transaction containing this transfer | | +|**logIndex** | **String** | Index of the log within the transaction | | +|**contractAddress** | **String** | Address of the token contract | | +|**fromAddress** | **String** | Address that sent the tokens | | +|**toAddress** | **String** | Address that received the tokens | | +|**value** | **String** | Amount of tokens transferred (in smallest unit) | | +|**chainId** | **Integer** | Chain ID of the blockchain | | +|**baseAssetId** | **String** | The blockchain base asset identifier | | +|**blockNumber** | **Integer** | Block number containing this transfer | | +|**blockHash** | **String** | Hash of the block containing this transfer | | +|**blockTimestamp** | **OffsetDateTime** | Timestamp when the block was mined | | +|**eventName** | **String** | Name of the event (typically \"Transfer\") | | + + + diff --git a/docs/OnchainTransfersPagedResponse.md b/docs/OnchainTransfersPagedResponse.md new file mode 100644 index 00000000..68923180 --- /dev/null +++ b/docs/OnchainTransfersPagedResponse.md @@ -0,0 +1,16 @@ + + +# OnchainTransfersPagedResponse + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<OnchainTransferEvent>**](OnchainTransferEvent.md) | Array of ERC20 transfer events | | +|**next** | **String** | Cursor for next page | [optional] | +|**prev** | **String** | Cursor for previous page | [optional] | +|**total** | **BigDecimal** | Total count of items | [optional] | + + + diff --git a/docs/OrderRequirementAllowedFileType.md b/docs/OrderRequirementAllowedFileType.md new file mode 100644 index 00000000..e8de238b --- /dev/null +++ b/docs/OrderRequirementAllowedFileType.md @@ -0,0 +1,29 @@ + + +# OrderRequirementAllowedFileType + +## Enum + + +* `PDF` (value: `"PDF"`) + +* `JPEG` (value: `"JPEG"`) + +* `PNG` (value: `"PNG"`) + +* `HEIC` (value: `"HEIC"`) + +* `HEIF` (value: `"HEIF"`) + +* `DOC` (value: `"DOC"`) + +* `DOCX` (value: `"DOCX"`) + +* `XLS` (value: `"XLS"`) + +* `XLSX` (value: `"XLSX"`) + +* `CSV` (value: `"CSV"`) + + + diff --git a/docs/OrderRequirementDetails.md b/docs/OrderRequirementDetails.md new file mode 100644 index 00000000..5efb889a --- /dev/null +++ b/docs/OrderRequirementDetails.md @@ -0,0 +1,17 @@ + + +# OrderRequirementDetails + +Order requirement details for an order that is awaiting compliance requirements. Returned by GET /trading/orders/{orderId}/requirement. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**requirementId** | **String** | Unique identifier of the order requirement request as issued by the provider. | | +|**dueBy** | **OffsetDateTime** | ISO-8601 timestamp indicating when the order requirement submission is due. | [optional] | +|**requiredData** | **String** | A JSON Schema (Draft-7) in string format describing the shape of the `data` object expected on the corresponding POST /trading/orders/{orderId}/requirement/data request. The schema is the contract: the client builds the `data` payload to match it, and SDKs can validate before sending. The string content is expected to be valid JSON (application/json). | | +|**requiredFiles** | [**List<OrderRequirementFile>**](OrderRequirementFile.md) | Descriptors for files the provider requires as part of the order requirement response. Empty when no files are required. Each entry's `fileKey` is used to correlate uploads on the corresponding upload request. | | + + + diff --git a/docs/OrderRequirementFile.md b/docs/OrderRequirementFile.md new file mode 100644 index 00000000..1b896514 --- /dev/null +++ b/docs/OrderRequirementFile.md @@ -0,0 +1,16 @@ + + +# OrderRequirementFile + +A file the provider requires as part of the order requirement response. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**fileKey** | **String** | Stable identifier for this required file. Used to correlate uploads on submission. | | +|**description** | **String** | Human-readable description of what the file should contain. | | +|**allowedFileTypes** | **List<OrderRequirementAllowedFileType>** | File formats the provider accepts for this entry. | | + + + diff --git a/docs/OrderStatus.md b/docs/OrderStatus.md index 227dd28b..f62457a6 100644 --- a/docs/OrderStatus.md +++ b/docs/OrderStatus.md @@ -9,6 +9,8 @@ * `AWAITING_PAYMENT` (value: `"AWAITING_PAYMENT"`) +* `AWAITING_INFORMATION` (value: `"AWAITING_INFORMATION"`) + * `PENDING_USER_ACTION` (value: `"PENDING_USER_ACTION"`) * `PROCESSING` (value: `"PROCESSING"`) diff --git a/docs/PersonalIdentification.md b/docs/PersonalIdentification.md index 98c0cb77..738c538b 100644 --- a/docs/PersonalIdentification.md +++ b/docs/PersonalIdentification.md @@ -15,10 +15,12 @@ |**postalAddress** | [**PostalAddress**](PostalAddress.md) | | | |**email** | **String** | | [optional] | |**phone** | **String** | Mobile phone number in E.164 format | [optional] | -|**idNumber** | **String** | The identification number corresponding to the primary identification document type specified in idType | [optional] | -|**idType** | **PersonalIdentificationType** | | [optional] | -|**additionalIdNumber** | **String** | The identification number corresponding to the additional identification document type specified in additionalIdType | [optional] | -|**additionalIdType** | **PersonalIdentificationType** | | [optional] | +|**idNumber** | **String** | Deprecated. Use identificationDocuments instead. | [optional] | +|**idType** | **PersonalIdentificationType** | Deprecated. Use identificationDocuments instead. | [optional] | +|**additionalIdNumber** | **String** | Deprecated. Use identificationDocuments instead. | [optional] | +|**additionalIdType** | **PersonalIdentificationType** | Deprecated. Use identificationDocuments instead. | [optional] | +|**nationality** | **String** | The ISO-3166 Alpha-2 country code representing the individual's nationality. | [optional] | +|**identificationDocuments** | [**List<PersonalIdentificationDocument>**](PersonalIdentificationDocument.md) | List of identification documents for the individual. | [optional] | diff --git a/docs/PersonalIdentificationDocument.md b/docs/PersonalIdentificationDocument.md new file mode 100644 index 00000000..7d396448 --- /dev/null +++ b/docs/PersonalIdentificationDocument.md @@ -0,0 +1,15 @@ + + +# PersonalIdentificationDocument + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **String** | The identification document number. | [optional] | +|**type** | **PersonalIdentificationType** | | [optional] | +|**expirationDate** | **LocalDate** | The expiration date of the identification document. | [optional] | + + + diff --git a/docs/PositionRelatedTransaction.md b/docs/PositionRelatedTransaction.md new file mode 100644 index 00000000..47c7a69d --- /dev/null +++ b/docs/PositionRelatedTransaction.md @@ -0,0 +1,47 @@ + + +# PositionRelatedTransaction + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**txId** | **String** | The transaction ID. | | +|**txHash** | **String** | On-chain transaction hash. Absent while the transaction is pending. | [optional] | +|**stakingOperation** | [**StakingOperationEnum**](#StakingOperationEnum) | Staking operation type. One of APPROVE, STAKE, UNSTAKE, WITHDRAW, CLAIM_REWARDS, SPLIT, CONSOLIDATE, MERGE, TRANSFER, AUTHORIZE, ADD_TO_STAKE. Absent on legacy persisted rows. | [optional] | +|**timestamp** | **OffsetDateTime** | ISO timestamp when the transaction was initiated (send time). | | +|**status** | [**StatusEnum**](#StatusEnum) | Transaction outcome. | | +|**amount** | **String** | Portion of position amount this transaction moved (native units). Absent on legacy rows. | [optional] | +|**txNote** | **String** | User-provided note from the transfer request. Omitted when not set. | [optional] | + + + +## Enum: StakingOperationEnum + +| Name | Value | +|---- | -----| +| APPROVE | "APPROVE" | +| STAKE | "STAKE" | +| UNSTAKE | "UNSTAKE" | +| WITHDRAW | "WITHDRAW" | +| CLAIM_REWARDS | "CLAIM_REWARDS" | +| SPLIT | "SPLIT" | +| CONSOLIDATE | "CONSOLIDATE" | +| MERGE | "MERGE" | +| TRANSFER | "TRANSFER" | +| AUTHORIZE | "AUTHORIZE" | +| ADD_TO_STAKE | "ADD_TO_STAKE" | + + + +## Enum: StatusEnum + +| Name | Value | +|---- | -----| +| PENDING | "PENDING" | +| COMPLETED | "COMPLETED" | +| FAILED | "FAILED" | + + + diff --git a/docs/Quote.md b/docs/Quote.md index e5eb9eb6..8cca0bdf 100644 --- a/docs/Quote.md +++ b/docs/Quote.md @@ -23,7 +23,7 @@ A committed executable quote for a trading pair. |**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. | | -|**orderCreationRequirements** | **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] | +|**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 f9550dd4..e7c0019a 100644 --- a/docs/QuoteOffer.md +++ b/docs/QuoteOffer.md @@ -22,7 +22,7 @@ |**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. | | -|**orderCreationRequirements** | **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] | +|**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/RoleDetails2.md b/docs/RoleDetails2.md new file mode 100644 index 00000000..2ab1dd75 --- /dev/null +++ b/docs/RoleDetails2.md @@ -0,0 +1,15 @@ + + +# RoleDetails2 + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**roleHash** | **String** | The role hash identifier | | +|**description** | **String** | Human-readable description of the role | | +|**accounts** | [**List<RoleGrantee>**](RoleGrantee.md) | List of accounts that have been granted this role | | + + + diff --git a/docs/ScreeningTRLinkMissingTrmDecision.md b/docs/ScreeningTRLinkMissingTrmDecision.md index 659d89a2..2c208264 100644 --- a/docs/ScreeningTRLinkMissingTrmDecision.md +++ b/docs/ScreeningTRLinkMissingTrmDecision.md @@ -10,10 +10,10 @@ Interface for reporting missing TRM screening decisions in ITRLinkResult |------------ | ------------- | ------------- | -------------| |**customerId** | **String** | Reference to TRLinkCustomer.id | [optional] | |**direction** | **TravelRuleDirectionEnum** | | [optional] | -|**sourceType** | **TransferPeerTypeEnum** | | [optional] | +|**sourceType** | **TransferPeerTypeEnum2** | | [optional] | |**sourceSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**sourceAddress** | **String** | Source address | [optional] | -|**destType** | **TransferPeerTypeEnum** | | [optional] | +|**destType** | **TransferPeerTypeEnum2** | | [optional] | |**destSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**destAddress** | **String** | Destination address | [optional] | |**sourceId** | **String** | Source ID | [optional] | diff --git a/docs/ScreeningTRLinkMissingTrmRule.md b/docs/ScreeningTRLinkMissingTrmRule.md index 905f3f01..e348b53e 100644 --- a/docs/ScreeningTRLinkMissingTrmRule.md +++ b/docs/ScreeningTRLinkMissingTrmRule.md @@ -10,10 +10,10 @@ TRLink missing TRM rule definition |------------ | ------------- | ------------- | -------------| |**customerId** | **String** | Reference to TRLinkCustomer.id | [optional] | |**direction** | **TravelRuleDirectionEnum** | | [optional] | -|**sourceType** | **TransferPeerTypeEnum** | | [optional] | +|**sourceType** | **TransferPeerTypeEnum2** | | [optional] | |**sourceSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**sourceAddress** | **String** | Source address | [optional] | -|**destType** | **TransferPeerTypeEnum** | | [optional] | +|**destType** | **TransferPeerTypeEnum2** | | [optional] | |**destSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**destAddress** | **String** | Destination address | [optional] | |**sourceId** | **String** | Source ID | [optional] | diff --git a/docs/ScreeningTRLinkPostScreeningRule.md b/docs/ScreeningTRLinkPostScreeningRule.md index 030c9df9..fee0d806 100644 --- a/docs/ScreeningTRLinkPostScreeningRule.md +++ b/docs/ScreeningTRLinkPostScreeningRule.md @@ -10,10 +10,10 @@ TRLink post-screening rule definition |------------ | ------------- | ------------- | -------------| |**customerId** | **String** | Reference to TRLinkCustomer.id | [optional] | |**direction** | **TravelRuleDirectionEnum** | | [optional] | -|**sourceType** | **TransferPeerTypeEnum** | | [optional] | +|**sourceType** | **TransferPeerTypeEnum2** | | [optional] | |**sourceSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**sourceAddress** | **String** | Source address | [optional] | -|**destType** | **TransferPeerTypeEnum** | | [optional] | +|**destType** | **TransferPeerTypeEnum2** | | [optional] | |**destSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**destAddress** | **String** | Destination address | [optional] | |**sourceId** | **String** | Source ID | [optional] | diff --git a/docs/ScreeningTRLinkPrescreeningRule.md b/docs/ScreeningTRLinkPrescreeningRule.md index 71d9817f..aa0d1ba1 100644 --- a/docs/ScreeningTRLinkPrescreeningRule.md +++ b/docs/ScreeningTRLinkPrescreeningRule.md @@ -10,10 +10,10 @@ TRLink pre-screening rule definition |------------ | ------------- | ------------- | -------------| |**customerId** | **String** | Reference to TRLinkCustomer.id | [optional] | |**direction** | **TravelRuleDirectionEnum** | | [optional] | -|**sourceType** | **TransferPeerTypeEnum** | | [optional] | +|**sourceType** | **TransferPeerTypeEnum2** | | [optional] | |**sourceSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**sourceAddress** | **String** | Source address | [optional] | -|**destType** | **TransferPeerTypeEnum** | | [optional] | +|**destType** | **TransferPeerTypeEnum2** | | [optional] | |**destSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**destAddress** | **String** | Destination address | [optional] | |**sourceId** | **String** | Source ID | [optional] | diff --git a/docs/ScreeningTRLinkRuleBase.md b/docs/ScreeningTRLinkRuleBase.md index 55d339fb..df0428b9 100644 --- a/docs/ScreeningTRLinkRuleBase.md +++ b/docs/ScreeningTRLinkRuleBase.md @@ -10,10 +10,10 @@ Base interface for TRLink policy rules |------------ | ------------- | ------------- | -------------| |**customerId** | **String** | Reference to TRLinkCustomer.id | [optional] | |**direction** | **TravelRuleDirectionEnum** | | [optional] | -|**sourceType** | **TransferPeerTypeEnum** | | [optional] | +|**sourceType** | **TransferPeerTypeEnum2** | | [optional] | |**sourceSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**sourceAddress** | **String** | Source address | [optional] | -|**destType** | **TransferPeerTypeEnum** | | [optional] | +|**destType** | **TransferPeerTypeEnum2** | | [optional] | |**destSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**destAddress** | **String** | Destination address | [optional] | |**sourceId** | **String** | Source ID | [optional] | diff --git a/docs/ScreeningTravelRulePrescreeningRule.md b/docs/ScreeningTravelRulePrescreeningRule.md index 53a04307..867a397f 100644 --- a/docs/ScreeningTravelRulePrescreeningRule.md +++ b/docs/ScreeningTravelRulePrescreeningRule.md @@ -9,11 +9,11 @@ Matched prescreening rule details. Prescreening rules are evaluated before the m | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| |**bypassReason** | **String** | Reason for bypass if prescreening rule triggered a bypass | [optional] | -|**sourceType** | **TransferPeerTypeEnum** | | [optional] | +|**sourceType** | **TransferPeerTypeEnum2** | | [optional] | |**sourceSubType** | **TransferPeerSubTypeEnum** | | [optional] | -|**destType** | **TransferPeerTypeEnum** | | [optional] | +|**destType** | **TransferPeerTypeEnum2** | | [optional] | |**destSubType** | **TransferPeerSubTypeEnum** | | [optional] | -|**transferPeerType** | **TransferPeerTypeEnum** | | [optional] | +|**transferPeerType** | **TransferPeerTypeEnum2** | | [optional] | |**transferPeerSubType** | **TransferPeerSubTypeEnum** | | [optional] | |**destAddress** | **String** | Destination address | [optional] | |**sourceId** | **String** | Source ID | [optional] | diff --git a/docs/StakingApi.md b/docs/StakingApi.md index 877b9628..49235471 100644 --- a/docs/StakingApi.md +++ b/docs/StakingApi.md @@ -11,6 +11,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/ | [**getChainInfo**](StakingApi.md#getChainInfo) | **GET** /staking/chains/{chainDescriptor}/chainInfo | Get chain-level staking parameters | | [**getChains**](StakingApi.md#getChains) | **GET** /staking/chains | List supported staking chains | | [**getDelegationById**](StakingApi.md#getDelegationById) | **GET** /staking/positions/{id} | Get position details | +| [**getPositionRelatedTransactions**](StakingApi.md#getPositionRelatedTransactions) | **GET** /staking/positions/{id}/related_transactions | List related transactions for a position | | [**getPositions**](StakingApi.md#getPositions) | **GET** /staking/positions_paginated | List staking positions (Paginated) | | [**getProviders**](StakingApi.md#getProviders) | **GET** /staking/providers | List staking providers | | [**getSummary**](StakingApi.md#getSummary) | **GET** /staking/positions/summary | Get positions summary | @@ -644,6 +645,100 @@ No authorization required | **0** | Error Response | * X-Request-ID -
| +## getPositionRelatedTransactions + +> CompletableFuture> getPositionRelatedTransactions getPositionRelatedTransactions(id, pageSize, pageCursor, order) + +List related transactions for a position + +Returns enriched transaction history for a staking position with cursor-based pagination. Includes in-flight transactions with status pending. The in-flight transaction is always returned first; completed and failed history is ordered by the order parameter. + +### 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.StakingApi; +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 | Unique identifier of the staking position. + Integer pageSize = 10; // Integer | Number of results per page (minimum: 1, maximum: 100). + String pageCursor = "eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9"; // String | Cursor for the next page of results. Use the value from the 'next' field in the previous response. + String order = "ASC"; // String | ASC / DESC ordering for completed/failed history (default DESC). The in-flight transaction is always returned first. + try { + CompletableFuture> response = fireblocks.staking().getPositionRelatedTransactions(id, pageSize, pageCursor, 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 StakingApi#getPositionRelatedTransactions"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling StakingApi#getPositionRelatedTransactions"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| Unique identifier of the staking position. | | +| **pageSize** | **Integer**| Number of results per page (minimum: 1, maximum: 100). | | +| **pageCursor** | **String**| Cursor for the next page of results. Use the value from the 'next' field in the previous response. | [optional] | +| **order** | **String**| ASC / DESC ordering for completed/failed history (default DESC). The in-flight transaction is always returned first. | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Paginated list of related transactions for the position returned successfully. | * X-Request-ID -
| +| **400** | Bad request: missing/invalid fields, unsupported amount, or malformed payload. | * X-Request-ID -
| +| **403** | Forbidden: insufficient permissions, disabled feature, or restricted provider/validator. | * X-Request-ID -
| +| **404** | Not found: requested resource does not exist (e.g., position, validator, provider, or wallet). | * X-Request-ID -
| +| **429** | Rate limit exceeded: slow down and retry later. | * X-Request-ID -
| +| **500** | Internal error while processing the request. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + ## getPositions > CompletableFuture> getPositions getPositions(pageSize, chainDescriptor, vaultAccountId, pageCursor, order) diff --git a/docs/StakingPositionRelatedTransactionsPaginatedResponse.md b/docs/StakingPositionRelatedTransactionsPaginatedResponse.md new file mode 100644 index 00000000..1a68a717 --- /dev/null +++ b/docs/StakingPositionRelatedTransactionsPaginatedResponse.md @@ -0,0 +1,14 @@ + + +# StakingPositionRelatedTransactionsPaginatedResponse + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<PositionRelatedTransaction>**](PositionRelatedTransaction.md) | The related transactions for the current page. | | +|**next** | **String** | Cursor for the next page. Use this value in the pageCursor parameter to fetch the next page. Null if no more pages. | [optional] | + + + diff --git a/docs/SubmitOrderRequirementRequest.md b/docs/SubmitOrderRequirementRequest.md new file mode 100644 index 00000000..c2c6cb58 --- /dev/null +++ b/docs/SubmitOrderRequirementRequest.md @@ -0,0 +1,14 @@ + + +# SubmitOrderRequirementRequest + +Body of POST /trading/orders/{orderId}/requirement/data. Carries the textual response (`data`). Any required files are uploaded separately via POST /trading/orders/{orderId}/requirement/file. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | **Map<String, Object>** | Free-form object that MUST conform to the `requiredData` JSON Schema returned by the GET endpoint. Carries text/select fields. | | + + + diff --git a/docs/TokenizationApi.md b/docs/TokenizationApi.md index e5c8fc50..35034af9 100644 --- a/docs/TokenizationApi.md +++ b/docs/TokenizationApi.md @@ -17,6 +17,16 @@ All URIs are relative to https://developers.fireblocks.com/reference/ | [**getLinkedToken**](TokenizationApi.md#getLinkedToken) | **GET** /tokenization/tokens/{id} | Return a linked token | | [**getLinkedTokens**](TokenizationApi.md#getLinkedTokens) | **GET** /tokenization/tokens | List all linked tokens | | [**getLinkedTokensCount**](TokenizationApi.md#getLinkedTokensCount) | **GET** /tokenization/tokens/count | Get the total count of linked tokens | +| [**getTokenAccessRegistryAddresses**](TokenizationApi.md#getTokenAccessRegistryAddresses) | **GET** /tokenization/access_registries/{id}/addresses | Get current state of addresses in an access registry | +| [**getTokenAccessRegistrySummary**](TokenizationApi.md#getTokenAccessRegistrySummary) | **GET** /tokenization/access_registries/{id}/summary | Get summary of an access registry | +| [**getTokenBalanceForAccount**](TokenizationApi.md#getTokenBalanceForAccount) | **GET** /tokenization/tokens/{id}/balances/{accountAddress} | Get the latest balance for a specific account | +| [**getTokenBalanceHistory**](TokenizationApi.md#getTokenBalanceHistory) | **GET** /tokenization/tokens/{id}/balances/{accountAddress}/history | Get balance history for a specific account | +| [**getTokenBalances**](TokenizationApi.md#getTokenBalances) | **GET** /tokenization/tokens/{id}/balances | Get latest balances for all holders of a token | +| [**getTokenContractSummary**](TokenizationApi.md#getTokenContractSummary) | **GET** /tokenization/tokens/{id}/summary | Get onchain summary for a token | +| [**getTokenRbac**](TokenizationApi.md#getTokenRbac) | **GET** /tokenization/tokens/{id}/rbac | Get active RBAC roles for a token | +| [**getTokenTotalSupply**](TokenizationApi.md#getTokenTotalSupply) | **GET** /tokenization/tokens/{id}/total_supply | Get historical total supply for a token | +| [**getTokenTransactions**](TokenizationApi.md#getTokenTransactions) | **GET** /tokenization/tokens/{id}/transactions | Get onchain transactions for a token | +| [**getTokenTransfers**](TokenizationApi.md#getTokenTransfers) | **GET** /tokenization/tokens/{id}/transfers | Get onchain transfers for a token | | [**issueNewToken**](TokenizationApi.md#issueNewToken) | **POST** /tokenization/tokens | Issue a new token | | [**issueTokenMultiChain**](TokenizationApi.md#issueTokenMultiChain) | **POST** /tokenization/multichain/tokens | Issue a token on one or more blockchains | | [**link**](TokenizationApi.md#link) | **POST** /tokenization/tokens/link | Link a contract | @@ -1143,6 +1153,920 @@ No authorization required | **0** | Error Response | * X-Request-ID -
| +## getTokenAccessRegistryAddresses + +> CompletableFuture> getTokenAccessRegistryAddresses getTokenAccessRegistryAddresses(id, pageCursor, pageSize, sortBy, order) + +Get current state of addresses in an access registry + +Returns the currently active addresses in the access registry (added but not removed). + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Page cursor to get the next page + Integer pageSize = 10; // Integer | Number of items per page (max 100), requesting more than 100 will return 100 items + String sortBy = "dateAdded"; // String | Sorting field (enum). + String order = "ASC"; // String | ASC / DESC ordering (default DESC) + try { + CompletableFuture> response = fireblocks.tokenization().getTokenAccessRegistryAddresses(id, pageCursor, pageSize, sortBy, 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 TokenizationApi#getTokenAccessRegistryAddresses"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenAccessRegistryAddresses"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **pageCursor** | **String**| Page cursor to get the next page | [optional] | +| **pageSize** | **Integer**| Number of items per page (max 100), requesting more than 100 will return 100 items | [optional] | +| **sortBy** | **String**| Sorting field (enum). | [optional] [default to dateAdded] [enum: dateAdded, address] | +| **order** | **String**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Access registry addresses retrieved successfully | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenAccessRegistrySummary + +> CompletableFuture> getTokenAccessRegistrySummary getTokenAccessRegistrySummary(id) + +Get summary of an access registry + +Returns a summary of the current state of the access registry. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + try { + CompletableFuture> response = fireblocks.tokenization().getTokenAccessRegistrySummary(id); + 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 TokenizationApi#getTokenAccessRegistrySummary"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenAccessRegistrySummary"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | + +### 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** | Access registry summary retrieved successfully | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenBalanceForAccount + +> CompletableFuture> getTokenBalanceForAccount getTokenBalanceForAccount(id, accountAddress) + +Get the latest balance for a specific account + +Returns the latest token balance for the specified account address. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + String accountAddress = "0x1234567890abcdef1234567890abcdef12345678"; // String | The account address to get balance history for + try { + CompletableFuture> response = fireblocks.tokenization().getTokenBalanceForAccount(id, accountAddress); + 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 TokenizationApi#getTokenBalanceForAccount"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenBalanceForAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **accountAddress** | **String**| The account address to get balance history for | | + +### 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** | Successfully retrieved the balance for the account | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenBalanceHistory + +> CompletableFuture> getTokenBalanceHistory getTokenBalanceHistory(id, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order) + +Get balance history for a specific account + +Returns paginated balance history for the specified account address with optional time-range filtering. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + String accountAddress = "0x1234567890abcdef1234567890abcdef12345678"; // String | The account address to get balance history for + OffsetDateTime startDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | Start date of the time range in ISO 8601 format + OffsetDateTime endDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | End date of the time range in ISO 8601 format + String interval = "HOUR"; // String | Time interval for grouping data + String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Page cursor to get the next page + Integer pageSize = 10; // Integer | Number of items per page (max 100), requesting more than 100 will return 100 items + String sortBy = "blockTimestamp"; // String | Sorting field (enum). Sorting only supported by 'blockTimestamp' + String order = "ASC"; // String | ASC / DESC ordering (default DESC) + try { + CompletableFuture> response = fireblocks.tokenization().getTokenBalanceHistory(id, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, 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 TokenizationApi#getTokenBalanceHistory"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenBalanceHistory"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **accountAddress** | **String**| The account address to get balance history for | | +| **startDate** | **OffsetDateTime**| Start date of the time range in ISO 8601 format | [optional] | +| **endDate** | **OffsetDateTime**| End date of the time range in ISO 8601 format | [optional] | +| **interval** | **String**| Time interval for grouping data | [optional] [default to DAY] [enum: HOUR, DAY, WEEK, MONTH] | +| **pageCursor** | **String**| Page cursor to get the next page | [optional] | +| **pageSize** | **Integer**| Number of items per page (max 100), requesting more than 100 will return 100 items | [optional] | +| **sortBy** | **String**| Sorting field (enum). Sorting only supported by 'blockTimestamp' | [optional] [default to blockTimestamp] [enum: blockTimestamp] | +| **order** | **String**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Successfully retrieved the balance history | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenBalances + +> CompletableFuture> getTokenBalances getTokenBalances(id, pageCursor, pageSize, sortBy, order) + +Get latest balances for all holders of a token + +Returns the latest balance for each unique address holding this token. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Page cursor to get the next page + Integer pageSize = 10; // Integer | Number of items per page (max 100), requesting more than 100 will return 100 items + String sortBy = "accountAddress"; // String | Sorting field for balances + String order = "ASC"; // String | ASC / DESC ordering (default DESC) + try { + CompletableFuture> response = fireblocks.tokenization().getTokenBalances(id, pageCursor, pageSize, sortBy, 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 TokenizationApi#getTokenBalances"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenBalances"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **pageCursor** | **String**| Page cursor to get the next page | [optional] | +| **pageSize** | **Integer**| Number of items per page (max 100), requesting more than 100 will return 100 items | [optional] | +| **sortBy** | **String**| Sorting field for balances | [optional] [default to blockTimestamp] [enum: accountAddress, blockTimestamp] | +| **order** | **String**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Successfully retrieved the latest balances for the token | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenContractSummary + +> CompletableFuture> getTokenContractSummary getTokenContractSummary(id) + +Get onchain summary for a token + +Returns the total number of unique holders and the total supply for the token contract. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + try { + CompletableFuture> response = fireblocks.tokenization().getTokenContractSummary(id); + 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 TokenizationApi#getTokenContractSummary"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenContractSummary"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | + +### 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** | Successfully retrieved the summary for the token contract | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenRbac + +> CompletableFuture> getTokenRbac getTokenRbac(id) + +Get active RBAC roles for a token + +Returns a list of currently active roles for the token contract. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + try { + CompletableFuture> response = fireblocks.tokenization().getTokenRbac(id); + 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 TokenizationApi#getTokenRbac"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenRbac"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | + +### 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** | Successfully retrieved the list of active roles | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenTotalSupply + +> CompletableFuture> getTokenTotalSupply getTokenTotalSupply(id, startDate, endDate, interval, pageCursor, pageSize, sortBy, order) + +Get historical total supply for a token + +Returns paginated total supply history for the token contract with optional time-range filtering and binning. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + OffsetDateTime startDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | Start date of the time range in ISO 8601 format + OffsetDateTime endDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | End date of the time range in ISO 8601 format + String interval = "HOUR"; // String | Time interval for grouping data + String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Page cursor to get the next page + Integer pageSize = 10; // Integer | Number of items per page (max 100), requesting more than 100 will return 100 items + String sortBy = "blockTimestamp"; // String | Sorting field (enum). Sorting only supported by 'blockTimestamp' + String order = "ASC"; // String | ASC / DESC ordering (default DESC) + try { + CompletableFuture> response = fireblocks.tokenization().getTokenTotalSupply(id, startDate, endDate, interval, pageCursor, pageSize, sortBy, 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 TokenizationApi#getTokenTotalSupply"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenTotalSupply"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **startDate** | **OffsetDateTime**| Start date of the time range in ISO 8601 format | [optional] | +| **endDate** | **OffsetDateTime**| End date of the time range in ISO 8601 format | [optional] | +| **interval** | **String**| Time interval for grouping data | [optional] [default to DAY] [enum: HOUR, DAY, WEEK, MONTH] | +| **pageCursor** | **String**| Page cursor to get the next page | [optional] | +| **pageSize** | **Integer**| Number of items per page (max 100), requesting more than 100 will return 100 items | [optional] | +| **sortBy** | **String**| Sorting field (enum). Sorting only supported by 'blockTimestamp' | [optional] [default to blockTimestamp] [enum: blockTimestamp] | +| **order** | **String**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Successfully retrieved the token total supply history | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenTransactions + +> CompletableFuture> getTokenTransactions getTokenTransactions(id, startDate, endDate, pageCursor, pageSize, sortBy, order) + +Get onchain transactions for a token + +Returns a paginated list of onchain transactions for the token contract, optionally filtered by date range. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + OffsetDateTime startDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | Start date of the time range in ISO 8601 format + OffsetDateTime endDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | End date of the time range in ISO 8601 format + String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Page cursor to get the next page + Integer pageSize = 10; // Integer | Number of items per page (max 100), requesting more than 100 will return 100 items + String sortBy = "blockTimestamp"; // String | Sorting field (enum). + String order = "ASC"; // String | ASC / DESC ordering (default DESC) + try { + CompletableFuture> response = fireblocks.tokenization().getTokenTransactions(id, startDate, endDate, pageCursor, pageSize, sortBy, 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 TokenizationApi#getTokenTransactions"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenTransactions"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **startDate** | **OffsetDateTime**| Start date of the time range in ISO 8601 format | [optional] | +| **endDate** | **OffsetDateTime**| End date of the time range in ISO 8601 format | [optional] | +| **pageCursor** | **String**| Page cursor to get the next page | [optional] | +| **pageSize** | **Integer**| Number of items per page (max 100), requesting more than 100 will return 100 items | [optional] | +| **sortBy** | **String**| Sorting field (enum). | [optional] [default to blockTimestamp] [enum: blockTimestamp, blockNumber, transactionHash] | +| **order** | **String**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] [enum: ASC, DESC] | + +### 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** | Onchain transactions fetched successfully | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + +## getTokenTransfers + +> CompletableFuture> getTokenTransfers getTokenTransfers(id, startDate, endDate, pageCursor, pageSize, sortBy, order, sender, receiver) + +Get onchain transfers for a token + +Returns a paginated list of ERC20 transfer events for the token contract, optionally filtered by date range. + +### 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.TokenizationApi; +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 = "fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb"; // String | The token link id + OffsetDateTime startDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | Start date of the time range in ISO 8601 format + OffsetDateTime endDate = OffsetDateTime.parse("2025-01-16T15:45:00Z"); // OffsetDateTime | End date of the time range in ISO 8601 format + String pageCursor = "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="; // String | Page cursor to get the next page + Integer pageSize = 10; // Integer | Number of items per page (max 100), requesting more than 100 will return 100 items + String sortBy = "blockTimeStamp"; // String | Sorting field for transfers + String order = "ASC"; // String | ASC / DESC ordering (default DESC) + String sender = "0xabcdef1234567890abcdef1234567890abcdef12"; // String | Filter transfers by sender address + String receiver = "0x1234567890abcdef1234567890abcdef12345678"; // String | Filter transfers by receiver address + try { + CompletableFuture> response = fireblocks.tokenization().getTokenTransfers(id, startDate, endDate, pageCursor, pageSize, sortBy, order, sender, receiver); + 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 TokenizationApi#getTokenTransfers"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TokenizationApi#getTokenTransfers"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **id** | **String**| The token link id | | +| **startDate** | **OffsetDateTime**| Start date of the time range in ISO 8601 format | [optional] | +| **endDate** | **OffsetDateTime**| End date of the time range in ISO 8601 format | [optional] | +| **pageCursor** | **String**| Page cursor to get the next page | [optional] | +| **pageSize** | **Integer**| Number of items per page (max 100), requesting more than 100 will return 100 items | [optional] | +| **sortBy** | **String**| Sorting field for transfers | [optional] [default to blockTimeStamp] [enum: blockTimeStamp] | +| **order** | **String**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] [enum: ASC, DESC] | +| **sender** | **String**| Filter transfers by sender address | [optional] | +| **receiver** | **String**| Filter transfers by receiver address | [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** | Onchain transfers fetched successfully | - | +| **404** | Token not found | - | +| **0** | Error Response | * X-Request-ID -
| + + ## issueNewToken > CompletableFuture> issueNewToken issueNewToken(createTokenRequestDto, idempotencyKey) diff --git a/docs/TotalSupplyPagedResponse2.md b/docs/TotalSupplyPagedResponse2.md new file mode 100644 index 00000000..eea815c9 --- /dev/null +++ b/docs/TotalSupplyPagedResponse2.md @@ -0,0 +1,16 @@ + + +# TotalSupplyPagedResponse2 + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**List<TotalSupplyItemDto>**](TotalSupplyItemDto.md) | Array of total supply data points | | +|**next** | **String** | Cursor for next page | [optional] | +|**prev** | **String** | Cursor for previous page | [optional] | +|**total** | **BigDecimal** | Total count of items | [optional] | + + + diff --git a/docs/TradingBetaApi.md b/docs/TradingBetaApi.md index 5d7fa34a..1316ef35 100644 --- a/docs/TradingBetaApi.md +++ b/docs/TradingBetaApi.md @@ -9,9 +9,12 @@ All URIs are relative to https://developers.fireblocks.com/reference/ | [**fetchAllOffers**](TradingBetaApi.md#fetchAllOffers) | **POST** /trading/offers | Get all offers | | [**fetchRates**](TradingBetaApi.md#fetchRates) | **POST** /trading/rates | Get rates | | [**getOrder**](TradingBetaApi.md#getOrder) | **GET** /trading/orders/{orderId} | Get order details | +| [**getOrderRequirements**](TradingBetaApi.md#getOrderRequirements) | **GET** /trading/orders/{orderId}/requirement | Get order requirement details for an order | | [**getOrders**](TradingBetaApi.md#getOrders) | **GET** /trading/orders | Get orders | | [**getTradingProviderById**](TradingBetaApi.md#getTradingProviderById) | **GET** /trading/providers/{providerId} | Get trading provider by ID | | [**getTradingProviders**](TradingBetaApi.md#getTradingProviders) | **GET** /trading/providers | Get providers | +| [**submitOrderRequirements**](TradingBetaApi.md#submitOrderRequirements) | **POST** /trading/orders/{orderId}/requirement/data | Submit a response to an order requirement | +| [**uploadOrderRequirementFile**](TradingBetaApi.md#uploadOrderRequirementFile) | **POST** /trading/orders/{orderId}/requirement/file | Upload a file for an order requirement | @@ -463,6 +466,95 @@ No authorization required | **0** | Error Response | * X-Request-ID -
| +## getOrderRequirements + +> CompletableFuture> getOrderRequirements getOrderRequirements(orderId) + +Get order requirement details for an order + +Fetch order requirement details for an order that is in `AWAITING_INFORMATION` status. The response includes `requirementId` and `dueBy` metadata, a `requiredData` JSON Schema (Draft-7) describing the shape of the `data` object expected on `POST /trading/orders/{orderId}/requirement/data`, and `requiredFiles` descriptors for any files the provider requires (uploaded via `POST /trading/orders/{orderId}/requirement/file`). Note: These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + +### 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.TradingBetaApi; +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 orderId = "orderId_example"; // String | The ID of the order for which the order requirement is issued. + try { + CompletableFuture> response = fireblocks.tradingBeta().getOrderRequirements(orderId); + 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 TradingBetaApi#getOrderRequirements"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TradingBetaApi#getOrderRequirements"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **orderId** | **String**| The ID of the order for which the order requirement is issued. | | + +### 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** | Order requirement details | * X-Request-ID -
| +| **401** | Unauthorized. Missing / invalid JWT token in Authorization header. | * X-Request-ID -
| +| **403** | Forbidden: insufficient permissions, disabled feature, or restricted access. | * X-Request-ID -
| +| **404** | Not found: the order does not exist. | * X-Request-ID -
| +| **409** | Conflict: the order exists but does not have an active order requirement (e.g., the order is not in `AWAITING_INFORMATION`). | * X-Request-ID -
| +| **429** | Rate limit exceeded: slow down and retry later. | * X-Request-ID -
| +| **5XX** | Internal error while processing the request. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + ## getOrders > CompletableFuture> getOrders getOrders(pageSize, pageCursor, order, accountId, providerId, statuses, startTime, endTime, assetConversionType) @@ -742,3 +834,191 @@ No authorization required | **5XX** | Internal error while processing the request. | * X-Request-ID -
| | **0** | Error Response | * X-Request-ID -
| + +## submitOrderRequirements + +> CompletableFuture> submitOrderRequirements submitOrderRequirements(submitOrderRequirementRequest, orderId, idempotencyKey) + +Submit a response to an order requirement + +Submit the user's textual response to an order requirement on an order that is in `AWAITING_INFORMATION` status. The request body carries `data` — a free-form object conforming to the `requiredData` JSON Schema returned by the GET endpoint. Any required files are uploaded separately via `POST /trading/orders/{orderId}/requirement/file`. Note: These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + +### 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.TradingBetaApi; +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); + + SubmitOrderRequirementRequest submitOrderRequirementRequest = new SubmitOrderRequirementRequest(); // SubmitOrderRequirementRequest | + String orderId = "orderId_example"; // String | The ID of the order to submit the order requirement response for. + 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.tradingBeta().submitOrderRequirements(submitOrderRequirementRequest, orderId, 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 TradingBetaApi#submitOrderRequirements"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TradingBetaApi#submitOrderRequirements"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **submitOrderRequirementRequest** | [**SubmitOrderRequirementRequest**](SubmitOrderRequirementRequest.md)| | | +| **orderId** | **String**| The ID of the order to submit the order requirement response for. | | +| **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 | +|-------------|-------------|------------------| +| **202** | Order requirement submission accepted for processing. | * X-Request-ID -
| +| **400** | Bad request: invalid input parameters, malformed request body, or validation failure. | * X-Request-ID -
| +| **401** | Unauthorized. Missing / invalid JWT token in Authorization header. | * X-Request-ID -
| +| **403** | Forbidden: insufficient permissions, disabled feature, or restricted access. | * X-Request-ID -
| +| **404** | Not found: the order does not exist. | * X-Request-ID -
| +| **409** | Conflict: the order exists but does not have an active order requirement (e.g., the order is not in `AWAITING_INFORMATION`). | * X-Request-ID -
| +| **429** | Rate limit exceeded: slow down and retry later. | * X-Request-ID -
| +| **5XX** | Internal error while processing the request. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + +## uploadOrderRequirementFile + +> CompletableFuture> uploadOrderRequirementFile uploadOrderRequirementFile(fileKey, _file, orderId, idempotencyKey) + +Upload a file for an order requirement + +Upload a single file (multipart/form-data) in response to an order requirement on an order that is in `AWAITING_INFORMATION` status. Call this endpoint once per required file. Send `fileKey` (matching a `fileKey` from `requiredFiles` on the GET response) and the binary `file`. Its type must be one of the supported file formats. Fireblocks encrypts each file and uploads it individually to the underlying provider. The textual response is submitted separately via `POST /trading/orders/{orderId}/requirement/data`. Note: These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + +### 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.TradingBetaApi; +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 fileKey = "fileKey_example"; // String | Identifier of the required file this upload satisfies. Must match a `fileKey` from `requiredFiles` on the GET response. + File _file = new File("/path/to/file"); // File | The binary file content. The file's type must be one of the supported OrderRequirementAllowedFileType values; the file name and type are derived from the uploaded part. + String orderId = "orderId_example"; // String | The ID of the order to upload the order requirement file for. + 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.tradingBeta().uploadOrderRequirementFile(fileKey, _file, orderId, 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 TradingBetaApi#uploadOrderRequirementFile"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling TradingBetaApi#uploadOrderRequirementFile"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.getResponseBody()); + e.printStackTrace(); + } + } +} +``` + +### Parameters + + +| Name | Type | Description | Notes | +|------------- | ------------- | ------------- | -------------| +| **fileKey** | **String**| Identifier of the required file this upload satisfies. Must match a `fileKey` from `requiredFiles` on the GET response. | | +| **_file** | **File**| The binary file content. The file's type must be one of the supported OrderRequirementAllowedFileType values; the file name and type are derived from the uploaded part. | | +| **orderId** | **String**| The ID of the order to upload the order requirement file for. | | +| **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**: multipart/form-data +- **Accept**: application/json + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **202** | File accepted for processing. | * X-Request-ID -
| +| **400** | Bad request: unsupported file type, missing fileKey, malformed request, or validation failure. | * X-Request-ID -
| +| **401** | Unauthorized. Missing / invalid JWT token in Authorization header. | * X-Request-ID -
| +| **403** | Forbidden: insufficient permissions, disabled feature, or restricted access. | * X-Request-ID -
| +| **404** | Not found: the order does not exist. | * X-Request-ID -
| +| **409** | Conflict: the order exists but does not have an active order requirement (e.g., the order is not in `AWAITING_INFORMATION`). | * X-Request-ID -
| +| **429** | Rate limit exceeded: slow down and retry later. | * X-Request-ID -
| +| **5XX** | Internal error while processing the request. | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + diff --git a/docs/TransactionConfigurations.md b/docs/TransactionConfigurations.md new file mode 100644 index 00000000..4be88a1c --- /dev/null +++ b/docs/TransactionConfigurations.md @@ -0,0 +1,13 @@ + + +# TransactionConfigurations + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**expiresAfterSeconds** | **BigDecimal** | The number of seconds the transaction is valid for before it expires. After the specified duration, the transaction will expire if it has not been broadcasted. | [optional] | + + + diff --git a/docs/TransactionRequest.md b/docs/TransactionRequest.md index 5c605823..5c4c50f1 100644 --- a/docs/TransactionRequest.md +++ b/docs/TransactionRequest.md @@ -36,7 +36,7 @@ |**networkStaking** | [**TransactionRequestNetworkStaking**](TransactionRequestNetworkStaking.md) | | [optional] | |**cpuStaking** | [**TransactionRequestNetworkStaking**](TransactionRequestNetworkStaking.md) | | [optional] | |**useGasless** | **Boolean** | - Override the default gasless configuration by sending true\\false | [optional] | -|**expiresAfterSeconds** | **BigDecimal** | The number of seconds the transaction is valid for before it expires. After the specified duration, the transaction will expire if it has not been broadcasted. | [optional] | +|**configurations** | [**TransactionConfigurations**](TransactionConfigurations.md) | | [optional] | diff --git a/docs/TransactionsApi.md b/docs/TransactionsApi.md index cfa07bef..fe3d21dc 100644 --- a/docs/TransactionsApi.md +++ b/docs/TransactionsApi.md @@ -787,7 +787,7 @@ public class Example { | **orderBy** | **String**| The field to order the results by. **Note:** Ordering by a field that is not `createdAt` may result in transactions that receive updates as you request the next or previous pages of results, resulting in missing those transactions. | [optional] [enum: createdAt, lastUpdated] | | **sort** | **String**| The direction to order the results by | [optional] [enum: ASC, DESC] | | **limit** | **Integer**| Limits the number of results. If not provided, a limit of 200 will be used. The maximum allowed limit is 500 | [optional] [default to 200] | -| **sourceType** | **String**| The source type of the transaction | [optional] [enum: VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, CONTRACT, FIAT_ACCOUNT, NETWORK_CONNECTION, COMPOUND, UNKNOWN, GAS_STATION, END_USER_WALLET] | +| **sourceType** | **String**| The source type of the transaction | [optional] [enum: VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, CONTRACT, FIAT_ACCOUNT, NETWORK_CONNECTION, COMPOUND, UNKNOWN, GAS_STATION, END_USER_WALLET, WALLET_POOL] | | **sourceId** | **String**| The source ID of the transaction | [optional] | | **destType** | **String**| The destination type of the transaction | [optional] [enum: VAULT_ACCOUNT, EXCHANGE_ACCOUNT, INTERNAL_WALLET, EXTERNAL_WALLET, CONTRACT, FIAT_ACCOUNT, NETWORK_CONNECTION, COMPOUND, ONE_TIME_ADDRESS, END_USER_WALLET] | | **destId** | **String**| The destination ID of the transaction | [optional] | diff --git a/docs/TransferPeerPathType.md b/docs/TransferPeerPathType.md index 118c71d2..c0a5a4c5 100644 --- a/docs/TransferPeerPathType.md +++ b/docs/TransferPeerPathType.md @@ -37,5 +37,7 @@ * `OEC_PARTNER` (value: `"OEC_PARTNER"`) +* `WALLET_POOL` (value: `"WALLET_POOL"`) + diff --git a/docs/TransferPeerTypeEnum.md b/docs/TransferPeerTypeEnum.md index 5943f8b3..39df43c7 100644 --- a/docs/TransferPeerTypeEnum.md +++ b/docs/TransferPeerTypeEnum.md @@ -33,5 +33,7 @@ * `MULTI_DESTINATION` (value: `"MULTI_DESTINATION"`) +* `WALLET_POOL` (value: `"WALLET_POOL"`) + diff --git a/docs/TransferPeerTypeEnum2.md b/docs/TransferPeerTypeEnum2.md new file mode 100644 index 00000000..9b3d223e --- /dev/null +++ b/docs/TransferPeerTypeEnum2.md @@ -0,0 +1,37 @@ + + +# TransferPeerTypeEnum2 + +## Enum + + +* `VAULT_ACCOUNT` (value: `"VAULT_ACCOUNT"`) + +* `EXCHANGE_ACCOUNT` (value: `"EXCHANGE_ACCOUNT"`) + +* `INTERNAL_WALLET` (value: `"INTERNAL_WALLET"`) + +* `EXTERNAL_WALLET` (value: `"EXTERNAL_WALLET"`) + +* `CONTRACT` (value: `"CONTRACT"`) + +* `NETWORK_CONNECTION` (value: `"NETWORK_CONNECTION"`) + +* `FIAT_ACCOUNT` (value: `"FIAT_ACCOUNT"`) + +* `COMPOUND` (value: `"COMPOUND"`) + +* `GAS_STATION` (value: `"GAS_STATION"`) + +* `ONE_TIME_ADDRESS` (value: `"ONE_TIME_ADDRESS"`) + +* `UNKNOWN` (value: `"UNKNOWN"`) + +* `END_USER_WALLET` (value: `"END_USER_WALLET"`) + +* `PROGRAM_CALL` (value: `"PROGRAM_CALL"`) + +* `MULTI_DESTINATION` (value: `"MULTI_DESTINATION"`) + + + diff --git a/docs/UpdateWebhookRequest.md b/docs/UpdateWebhookRequest.md index ff7e6cf2..677e5a15 100644 --- a/docs/UpdateWebhookRequest.md +++ b/docs/UpdateWebhookRequest.md @@ -11,6 +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] | diff --git a/docs/Webhook.md b/docs/Webhook.md index f938aca7..fae2e01c 100644 --- a/docs/Webhook.md +++ b/docs/Webhook.md @@ -14,6 +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] | diff --git a/docs/WebhookMtls.md b/docs/WebhookMtls.md new file mode 100644 index 00000000..05d35423 --- /dev/null +++ b/docs/WebhookMtls.md @@ -0,0 +1,14 @@ + + +# 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/WebhookMtlsCsrResponse.md b/docs/WebhookMtlsCsrResponse.md new file mode 100644 index 00000000..473140b7 --- /dev/null +++ b/docs/WebhookMtlsCsrResponse.md @@ -0,0 +1,14 @@ + + +# WebhookMtlsCsrResponse + +mTLS Certificate Signing Request response + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**csr** | **String** | The Fireblocks PEM-encoded Certificate Signing Request (CSR). | | + + + diff --git a/docs/WebhooksV2Api.md b/docs/WebhooksV2Api.md index 52958ab4..a3bf6163 100644 --- a/docs/WebhooksV2Api.md +++ b/docs/WebhooksV2Api.md @@ -7,6 +7,7 @@ All URIs are relative to https://developers.fireblocks.com/reference/ | [**createWebhook**](WebhooksV2Api.md#createWebhook) | **POST** /webhooks | Create a new webhook | | [**deleteWebhook**](WebhooksV2Api.md#deleteWebhook) | **DELETE** /webhooks/{webhookId} | Delete webhook | | [**getMetrics**](WebhooksV2Api.md#getMetrics) | **GET** /webhooks/{webhookId}/metrics/{metricName} | Get webhook metrics | +| [**getMtlsCsr**](WebhooksV2Api.md#getMtlsCsr) | **GET** /webhooks/mtls/csr | Get mTLS CSR | | [**getNotification**](WebhooksV2Api.md#getNotification) | **GET** /webhooks/{webhookId}/notifications/{notificationId} | Get notification by id | | [**getNotificationAttempts**](WebhooksV2Api.md#getNotificationAttempts) | **GET** /webhooks/{webhookId}/notifications/{notificationId}/attempts | Get notification attempts | | [**getNotifications**](WebhooksV2Api.md#getNotifications) | **GET** /webhooks/{webhookId}/notifications | Get all notifications by webhook id | @@ -275,6 +276,85 @@ No authorization required | **0** | Error Response | * X-Request-ID -
| +## getMtlsCsr + +> CompletableFuture> getMtlsCsr getMtlsCsr() + +Get mTLS CSR + +Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate. + +### 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); + + try { + CompletableFuture> response = fireblocks.webhooksV2().getMtlsCsr(); + 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#getMtlsCsr"); + System.err.println("Status code: " + apiException.getCode()); + System.err.println("Response headers: " + apiException.getResponseHeaders()); + System.err.println("Reason: " + apiException.getResponseBody()); + e.printStackTrace(); + } catch (ApiException e) { + System.err.println("Exception when calling WebhooksV2Api#getMtlsCsr"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Response headers: " + e.getResponseHeaders()); + System.err.println("Reason: " + e.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** | The mTLS CSR PEM | * X-Request-ID -
| +| **0** | Error Response | * X-Request-ID -
| + + ## getNotification > CompletableFuture> getNotification getNotification(webhookId, notificationId, includeData) diff --git a/pom.xml b/pom.xml index a3696df3..5c58d835 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ fireblocks-sdk jar fireblocks-sdk - 20.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. @@ -240,6 +240,11 @@ Whether you're working on a cryptocurrency exchange, wallet application, or ${jakarta-annotation-version} provided + + org.apache.httpcomponents + httpmime + ${httpmime-version} + com.auth0 java-jwt @@ -275,6 +280,7 @@ Whether you're working on a cryptocurrency exchange, wallet application, or 0.2.6 2.1.1 3.0.2 + 4.5.14 4.13.2 2.27.2 4.1.0 diff --git a/src/main/java/com/fireblocks/sdk/Configuration.java b/src/main/java/com/fireblocks/sdk/Configuration.java index e7048afe..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 = "20.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/api/ConnectedAccountsBetaApi.java b/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java index 36ffe5f6..c50010ab 100644 --- a/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java +++ b/src/main/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApi.java @@ -20,6 +20,9 @@ import com.fireblocks.sdk.ApiResponse; import com.fireblocks.sdk.Pair; import com.fireblocks.sdk.ValidationUtils; +import com.fireblocks.sdk.model.AllowlistEntry; +import com.fireblocks.sdk.model.AllowlistEntryStatus; +import com.fireblocks.sdk.model.AllowlistResponse; import com.fireblocks.sdk.model.ConnectedAccountBalancesResponse; import com.fireblocks.sdk.model.ConnectedAccountRateResponse; import com.fireblocks.sdk.model.ConnectedAccountTradingPairsResponse; @@ -210,6 +213,224 @@ private HttpRequest.Builder getConnectedAccountRequestBuilder(String accountId) } return localVarRequestBuilder; } + /** + * 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 accounts only. + * + * @param accountId The connected account identifier (required) + * @param status Filter by allowlist entry status (optional) + * @param assetId Filter by Fireblocks asset ID. See [List + * assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of + * Fireblocks asset IDs. (optional) + * @param networkId Filter by Fireblocks network ID. See [List + * blockchains](https://developers.fireblocks.com/reference/listblockchains) for the + * canonical list of Fireblocks blockchain identifiers. (optional) + * @param address Filter by specific address (optional) + * @param pageCursor Pagination cursor for next page (optional) + * @param pageSize Maximum number of entries to return (optional) + * @param sortBy Field to sort results by. (optional, default to addedAt) + * @param order Sort order (ASC or DESC). (optional, default to DESC) + * @return CompletableFuture<ApiResponse<AllowlistResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getConnectedAccountAllowlist( + String accountId, + AllowlistEntryStatus status, + String assetId, + String networkId, + String address, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getConnectedAccountAllowlistRequestBuilder( + accountId, + status, + assetId, + networkId, + address, + pageCursor, + pageSize, + sortBy, + order); + 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( + "getConnectedAccountAllowlist", + 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< + AllowlistResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getConnectedAccountAllowlistRequestBuilder( + String accountId, + AllowlistEntryStatus status, + String assetId, + String networkId, + String address, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty( + "getConnectedAccountAllowlist", "accountId", accountId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/connected_accounts/{accountId}/allowlist" + .replace("{accountId}", ApiClient.urlEncode(accountId.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "status"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("status", status)); + localVarQueryParameterBaseName = "assetId"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("assetId", assetId)); + localVarQueryParameterBaseName = "networkId"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("networkId", networkId)); + localVarQueryParameterBaseName = "address"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("address", address)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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 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 + * accounts only. + * + * @param accountId The connected account identifier (required) + * @param allowlistId The Fireblocks allowlist entry identifier (required) + * @return CompletableFuture<ApiResponse<AllowlistEntry>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getConnectedAccountAllowlistEntry( + String accountId, String allowlistId) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getConnectedAccountAllowlistEntryRequestBuilder(accountId, allowlistId); + 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( + "getConnectedAccountAllowlistEntry", + 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< + AllowlistEntry>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getConnectedAccountAllowlistEntryRequestBuilder( + String accountId, String allowlistId) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty( + "getConnectedAccountAllowlistEntry", "accountId", accountId); + ValidationUtils.assertParamExistsAndNotEmpty( + "getConnectedAccountAllowlistEntry", "allowlistId", allowlistId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/connected_accounts/{accountId}/allowlist/{allowlistId}" + .replace("{accountId}", ApiClient.urlEncode(accountId.toString())) + .replace("{allowlistId}", ApiClient.urlEncode(allowlistId.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; + } /** * 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 @@ -677,4 +898,73 @@ private HttpRequest.Builder renameConnectedAccountRequestBuilder( } return localVarRequestBuilder; } + /** + * 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 accounts only. + * + * @param accountId The connected account identifier (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<Void>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> syncConnectedAccountAllowlist( + String accountId, String idempotencyKey) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + syncConnectedAccountAllowlistRequestBuilder(accountId, 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( + "syncConnectedAccountAllowlist", + localVarResponse)); + } + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + null)); + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder syncConnectedAccountAllowlistRequestBuilder( + String accountId, String idempotencyKey) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty( + "syncConnectedAccountAllowlist", "accountId", accountId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/connected_accounts/{accountId}/allowlist/sync" + .replace("{accountId}", ApiClient.urlEncode(accountId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Accept", "application/json"); + + localVarRequestBuilder.method("POST", HttpRequest.BodyPublishers.noBody()); + if (memberVarReadTimeout != null) { + localVarRequestBuilder.timeout(memberVarReadTimeout); + } + if (memberVarInterceptor != null) { + memberVarInterceptor.accept(localVarRequestBuilder); + } + return localVarRequestBuilder; + } } diff --git a/src/main/java/com/fireblocks/sdk/api/OnchainDataApi.java b/src/main/java/com/fireblocks/sdk/api/OnchainDataApi.java index 40647e62..4cb7c56b 100644 --- a/src/main/java/com/fireblocks/sdk/api/OnchainDataApi.java +++ b/src/main/java/com/fireblocks/sdk/api/OnchainDataApi.java @@ -20,14 +20,14 @@ import com.fireblocks.sdk.ApiResponse; import com.fireblocks.sdk.Pair; import com.fireblocks.sdk.ValidationUtils; -import com.fireblocks.sdk.model.AccessRegistryCurrentStateResponse; +import com.fireblocks.sdk.model.AccessRegistryCurrentStateResponse2; import com.fireblocks.sdk.model.AccessRegistrySummaryResponse; -import com.fireblocks.sdk.model.AddressBalancePagedResponse; -import com.fireblocks.sdk.model.BalanceHistoryPagedResponse; -import com.fireblocks.sdk.model.OnchainTransactionsPagedResponse; -import com.fireblocks.sdk.model.RoleDetails; +import com.fireblocks.sdk.model.AddressBalancePagedResponse2; +import com.fireblocks.sdk.model.BalanceHistoryPagedResponse2; +import com.fireblocks.sdk.model.OnchainTransactionsPagedResponse2; +import com.fireblocks.sdk.model.RoleDetails2; import com.fireblocks.sdk.model.TokenContractSummaryResponse; -import com.fireblocks.sdk.model.TotalSupplyPagedResponse; +import com.fireblocks.sdk.model.TotalSupplyPagedResponse2; import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -95,10 +95,10 @@ private String formatExceptionMessage(String operationId, int statusCode, String * items (optional) * @param sortBy Sorting field (enum). (optional, default to dateAdded) * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) - * @return CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse>> + * @return CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse2>> * @throws ApiException if fails to make API call */ - public CompletableFuture> + public CompletableFuture> getAccessRegistryCurrentState( String baseAssetId, String accessRegistryAddress, @@ -132,7 +132,7 @@ private String formatExceptionMessage(String operationId, int statusCode, String try { String responseBody = localVarResponse.body(); return CompletableFuture.completedFuture( - new ApiResponse( + new ApiResponse( localVarResponse.statusCode(), localVarResponse.headers().map(), responseBody == null || responseBody.isBlank() @@ -140,7 +140,7 @@ private String formatExceptionMessage(String operationId, int statusCode, String : memberVarObjectMapper.readValue( responseBody, new TypeReference< - AccessRegistryCurrentStateResponse>() {}))); + AccessRegistryCurrentStateResponse2>() {}))); } catch (IOException e) { return CompletableFuture.failedFuture(new ApiException(e)); } @@ -289,10 +289,10 @@ private HttpRequest.Builder getAccessRegistrySummaryRequestBuilder( * * @param baseAssetId The blockchain base assetId (required) * @param contractAddress The contract address (required) - * @return CompletableFuture<ApiResponse<Map<String, RoleDetails>>> + * @return CompletableFuture<ApiResponse<Map<String, RoleDetails2>>> * @throws ApiException if fails to make API call */ - public CompletableFuture>> getActiveRolesForContract( + public CompletableFuture>> getActiveRolesForContract( String baseAssetId, String contractAddress) throws ApiException { try { HttpRequest.Builder localVarRequestBuilder = @@ -312,7 +312,7 @@ public CompletableFuture>> getActiveRolesFo try { String responseBody = localVarResponse.body(); return CompletableFuture.completedFuture( - new ApiResponse>( + new ApiResponse>( localVarResponse.statusCode(), localVarResponse.headers().map(), responseBody == null || responseBody.isBlank() @@ -322,7 +322,7 @@ public CompletableFuture>> getActiveRolesFo new TypeReference< Map< String, - RoleDetails>>() {}))); + RoleDetails2>>() {}))); } catch (IOException e) { return CompletableFuture.failedFuture(new ApiException(e)); } @@ -378,10 +378,10 @@ private HttpRequest.Builder getActiveRolesForContractRequestBuilder( * @param sortBy Sorting field (enum). Sorting only supported by 'blockTimestamp' * (optional, default to blockTimestamp) * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) - * @return CompletableFuture<ApiResponse<BalanceHistoryPagedResponse>> + * @return CompletableFuture<ApiResponse<BalanceHistoryPagedResponse2>> * @throws ApiException if fails to make API call */ - public CompletableFuture> getContractBalanceHistory( + public CompletableFuture> getContractBalanceHistory( String baseAssetId, String contractAddress, String accountAddress, @@ -421,7 +421,7 @@ public CompletableFuture> getContractBa try { String responseBody = localVarResponse.body(); return CompletableFuture.completedFuture( - new ApiResponse( + new ApiResponse( localVarResponse.statusCode(), localVarResponse.headers().map(), responseBody == null || responseBody.isBlank() @@ -429,7 +429,7 @@ public CompletableFuture> getContractBa : memberVarObjectMapper.readValue( responseBody, new TypeReference< - BalanceHistoryPagedResponse>() {}))); + BalanceHistoryPagedResponse2>() {}))); } catch (IOException e) { return CompletableFuture.failedFuture(new ApiException(e)); } @@ -602,10 +602,10 @@ private HttpRequest.Builder getContractBalancesSummaryRequestBuilder( * @param sortBy Sorting field (enum). Sorting only supported by 'blockTimestamp' * (optional, default to blockTimestamp) * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) - * @return CompletableFuture<ApiResponse<TotalSupplyPagedResponse>> + * @return CompletableFuture<ApiResponse<TotalSupplyPagedResponse2>> * @throws ApiException if fails to make API call */ - public CompletableFuture> getContractTotalSupply( + public CompletableFuture> getContractTotalSupply( String baseAssetId, String contractAddress, OffsetDateTime startDate, @@ -643,7 +643,7 @@ public CompletableFuture> getContractTotal try { String responseBody = localVarResponse.body(); return CompletableFuture.completedFuture( - new ApiResponse( + new ApiResponse( localVarResponse.statusCode(), localVarResponse.headers().map(), responseBody == null || responseBody.isBlank() @@ -651,7 +651,7 @@ public CompletableFuture> getContractTotal : memberVarObjectMapper.readValue( responseBody, new TypeReference< - TotalSupplyPagedResponse>() {}))); + TotalSupplyPagedResponse2>() {}))); } catch (IOException e) { return CompletableFuture.failedFuture(new ApiException(e)); } @@ -741,18 +741,19 @@ private HttpRequest.Builder getContractTotalSupplyRequestBuilder( * items (optional) * @param sortBy Sorting field for balances (optional, default to blockTimestamp) * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) - * @return CompletableFuture<ApiResponse<AddressBalancePagedResponse>> + * @return CompletableFuture<ApiResponse<AddressBalancePagedResponse2>> * @throws ApiException if fails to make API call */ - public CompletableFuture> getLatestBalancesForContract( - String baseAssetId, - String contractAddress, - String accountAddress, - String pageCursor, - Integer pageSize, - String sortBy, - String order) - throws ApiException { + public CompletableFuture> + getLatestBalancesForContract( + String baseAssetId, + String contractAddress, + String accountAddress, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { try { HttpRequest.Builder localVarRequestBuilder = getLatestBalancesForContractRequestBuilder( @@ -779,7 +780,7 @@ public CompletableFuture> getLatestBala try { String responseBody = localVarResponse.body(); return CompletableFuture.completedFuture( - new ApiResponse( + new ApiResponse( localVarResponse.statusCode(), localVarResponse.headers().map(), responseBody == null || responseBody.isBlank() @@ -787,7 +788,7 @@ public CompletableFuture> getLatestBala : memberVarObjectMapper.readValue( responseBody, new TypeReference< - AddressBalancePagedResponse>() {}))); + AddressBalancePagedResponse2>() {}))); } catch (IOException e) { return CompletableFuture.failedFuture(new ApiException(e)); } @@ -870,10 +871,10 @@ private HttpRequest.Builder getLatestBalancesForContractRequestBuilder( * items (optional) * @param sortBy Sorting field (enum). (optional, default to blockTimestamp) * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) - * @return CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse>> + * @return CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse2>> * @throws ApiException if fails to make API call */ - public CompletableFuture> getOnchainTransactions( + public CompletableFuture> getOnchainTransactions( String baseAssetId, String contractAddress, OffsetDateTime startDate, @@ -909,7 +910,7 @@ public CompletableFuture> getOncha try { String responseBody = localVarResponse.body(); return CompletableFuture.completedFuture( - new ApiResponse( + new ApiResponse( localVarResponse.statusCode(), localVarResponse.headers().map(), responseBody == null || responseBody.isBlank() @@ -917,7 +918,7 @@ public CompletableFuture> getOncha : memberVarObjectMapper.readValue( responseBody, new TypeReference< - OnchainTransactionsPagedResponse>() {}))); + OnchainTransactionsPagedResponse2>() {}))); } catch (IOException e) { return CompletableFuture.failedFuture(new ApiException(e)); } diff --git a/src/main/java/com/fireblocks/sdk/api/StakingApi.java b/src/main/java/com/fireblocks/sdk/api/StakingApi.java index d41912fc..8c63af95 100644 --- a/src/main/java/com/fireblocks/sdk/api/StakingApi.java +++ b/src/main/java/com/fireblocks/sdk/api/StakingApi.java @@ -32,6 +32,7 @@ import com.fireblocks.sdk.model.SplitResponse; import com.fireblocks.sdk.model.StakeRequest; import com.fireblocks.sdk.model.StakeResponse; +import com.fireblocks.sdk.model.StakingPositionRelatedTransactionsPaginatedResponse; import com.fireblocks.sdk.model.StakingPositionsPaginatedResponse; import com.fireblocks.sdk.model.StakingProvider; import com.fireblocks.sdk.model.UnstakeRequest; @@ -626,6 +627,108 @@ private HttpRequest.Builder getDelegationByIdRequestBuilder(String id) throws Ap } return localVarRequestBuilder; } + /** + * List related transactions for a position Returns enriched transaction history for a staking + * position with cursor-based pagination. Includes in-flight transactions with status pending. + * The in-flight transaction is always returned first; completed and failed history is ordered + * by the order parameter. + * + * @param id Unique identifier of the staking position. (required) + * @param pageSize Number of results per page (minimum: 1, maximum: 100). (required) + * @param pageCursor Cursor for the next page of results. Use the value from the 'next' + * field in the previous response. (optional) + * @param order ASC / DESC ordering for completed/failed history (default DESC). The in-flight + * transaction is always returned first. (optional, default to DESC) + * @return + * CompletableFuture<ApiResponse<StakingPositionRelatedTransactionsPaginatedResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> + getPositionRelatedTransactions( + String id, Integer pageSize, String pageCursor, String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getPositionRelatedTransactionsRequestBuilder(id, pageSize, pageCursor, order); + 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( + "getPositionRelatedTransactions", + localVarResponse)); + } + try { + String responseBody = localVarResponse.body(); + return CompletableFuture.completedFuture( + new ApiResponse< + StakingPositionRelatedTransactionsPaginatedResponse>( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + responseBody == null || responseBody.isBlank() + ? null + : memberVarObjectMapper.readValue( + responseBody, + new TypeReference< + StakingPositionRelatedTransactionsPaginatedResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getPositionRelatedTransactionsRequestBuilder( + String id, Integer pageSize, String pageCursor, String order) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getPositionRelatedTransactions", "id", id); + ValidationUtils.assertParamExists("getPositionRelatedTransactions", "pageSize", pageSize); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/staking/positions/{id}/related_transactions" + .replace("{id}", ApiClient.urlEncode(id.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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; + } /** * List staking positions (Paginated) Returns staking positions with core details: amounts, * rewards, status, chain, and vault. It supports cursor-based pagination for efficient data diff --git a/src/main/java/com/fireblocks/sdk/api/TokenizationApi.java b/src/main/java/com/fireblocks/sdk/api/TokenizationApi.java index 8c4132c4..4a8d143c 100644 --- a/src/main/java/com/fireblocks/sdk/api/TokenizationApi.java +++ b/src/main/java/com/fireblocks/sdk/api/TokenizationApi.java @@ -20,7 +20,13 @@ import com.fireblocks.sdk.ApiResponse; import com.fireblocks.sdk.Pair; import com.fireblocks.sdk.ValidationUtils; +import com.fireblocks.sdk.model.AccessRegistryCurrentStateResponse; +import com.fireblocks.sdk.model.AccessRegistrySummaryResponse; +import com.fireblocks.sdk.model.ActiveRolesResponse; import com.fireblocks.sdk.model.AdapterProcessingResult; +import com.fireblocks.sdk.model.AddressBalanceItemDto; +import com.fireblocks.sdk.model.AddressBalancePagedResponse; +import com.fireblocks.sdk.model.BalanceHistoryPagedResponse; import com.fireblocks.sdk.model.CollectionBurnRequestDto; import com.fireblocks.sdk.model.CollectionBurnResponseDto; import com.fireblocks.sdk.model.CollectionDeployRequestDto; @@ -36,6 +42,8 @@ import com.fireblocks.sdk.model.GetLayerZeroPeersResponse; import com.fireblocks.sdk.model.GetLinkedCollectionsPaginatedResponse; import com.fireblocks.sdk.model.LinkedTokensCount; +import com.fireblocks.sdk.model.OnchainTransactionsPagedResponse; +import com.fireblocks.sdk.model.OnchainTransfersPagedResponse; import com.fireblocks.sdk.model.ReissueMultichainTokenRequest; import com.fireblocks.sdk.model.RemoveLayerZeroAdaptersRequest; import com.fireblocks.sdk.model.RemoveLayerZeroAdaptersResponse; @@ -45,9 +53,11 @@ import com.fireblocks.sdk.model.SetLayerZeroDvnConfigResponse; import com.fireblocks.sdk.model.SetLayerZeroPeersRequest; import com.fireblocks.sdk.model.SetLayerZeroPeersResponse; +import com.fireblocks.sdk.model.TokenContractSummaryResponse; import com.fireblocks.sdk.model.TokenLinkDto; import com.fireblocks.sdk.model.TokenLinkRequestDto; import com.fireblocks.sdk.model.TokensPaginatedResponse; +import com.fireblocks.sdk.model.TotalSupplyPagedResponse; import com.fireblocks.sdk.model.ValidateLayerZeroChannelResponse; import java.io.IOException; import java.io.InputStream; @@ -57,6 +67,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; +import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.List; import java.util.StringJoiner; @@ -1146,6 +1157,994 @@ private HttpRequest.Builder getLinkedTokensCountRequestBuilder() throws ApiExcep } return localVarRequestBuilder; } + /** + * Get current state of addresses in an access registry Returns the currently active addresses + * in the access registry (added but not removed). + * + * @param id The token link id (required) + * @param pageCursor Page cursor to get the next page (optional) + * @param pageSize Number of items per page (max 100), requesting more than 100 will return 100 + * items (optional) + * @param sortBy Sorting field (enum). (optional, default to dateAdded) + * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) + * @return CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> + getTokenAccessRegistryAddresses( + String id, String pageCursor, Integer pageSize, String sortBy, String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenAccessRegistryAddressesRequestBuilder( + id, pageCursor, pageSize, sortBy, order); + 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( + "getTokenAccessRegistryAddresses", + 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< + AccessRegistryCurrentStateResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenAccessRegistryAddressesRequestBuilder( + String id, String pageCursor, Integer pageSize, String sortBy, String order) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenAccessRegistryAddresses", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/access_registries/{id}/addresses" + .replace("{id}", ApiClient.urlEncode(id.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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 summary of an access registry Returns a summary of the current state of the access + * registry. + * + * @param id The token link id (required) + * @return CompletableFuture<ApiResponse<AccessRegistrySummaryResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> + getTokenAccessRegistrySummary(String id) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenAccessRegistrySummaryRequestBuilder(id); + 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( + "getTokenAccessRegistrySummary", + 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< + AccessRegistrySummaryResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenAccessRegistrySummaryRequestBuilder(String id) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenAccessRegistrySummary", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/access_registries/{id}/summary" + .replace("{id}", ApiClient.urlEncode(id.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; + } + /** + * Get the latest balance for a specific account Returns the latest token balance for the + * specified account address. + * + * @param id The token link id (required) + * @param accountAddress The account address to get balance history for (required) + * @return CompletableFuture<ApiResponse<AddressBalanceItemDto>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenBalanceForAccount( + String id, String accountAddress) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenBalanceForAccountRequestBuilder(id, accountAddress); + 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( + "getTokenBalanceForAccount", 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< + AddressBalanceItemDto>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenBalanceForAccountRequestBuilder( + String id, String accountAddress) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenBalanceForAccount", "id", id); + ValidationUtils.assertParamExistsAndNotEmpty( + "getTokenBalanceForAccount", "accountAddress", accountAddress); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/balances/{accountAddress}" + .replace("{id}", ApiClient.urlEncode(id.toString())) + .replace( + "{accountAddress}", ApiClient.urlEncode(accountAddress.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; + } + /** + * Get balance history for a specific account Returns paginated balance history for the + * specified account address with optional time-range filtering. + * + * @param id The token link id (required) + * @param accountAddress The account address to get balance history for (required) + * @param startDate Start date of the time range in ISO 8601 format (optional) + * @param endDate End date of the time range in ISO 8601 format (optional) + * @param interval Time interval for grouping data (optional, default to DAY) + * @param pageCursor Page cursor to get the next page (optional) + * @param pageSize Number of items per page (max 100), requesting more than 100 will return 100 + * items (optional) + * @param sortBy Sorting field (enum). Sorting only supported by 'blockTimestamp' + * (optional, default to blockTimestamp) + * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) + * @return CompletableFuture<ApiResponse<BalanceHistoryPagedResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenBalanceHistory( + String id, + String accountAddress, + OffsetDateTime startDate, + OffsetDateTime endDate, + String interval, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenBalanceHistoryRequestBuilder( + id, + accountAddress, + startDate, + endDate, + interval, + pageCursor, + pageSize, + sortBy, + order); + 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( + "getTokenBalanceHistory", 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< + BalanceHistoryPagedResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenBalanceHistoryRequestBuilder( + String id, + String accountAddress, + OffsetDateTime startDate, + OffsetDateTime endDate, + String interval, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenBalanceHistory", "id", id); + ValidationUtils.assertParamExistsAndNotEmpty( + "getTokenBalanceHistory", "accountAddress", accountAddress); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/balances/{accountAddress}/history" + .replace("{id}", ApiClient.urlEncode(id.toString())) + .replace( + "{accountAddress}", ApiClient.urlEncode(accountAddress.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "startDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("startDate", startDate)); + localVarQueryParameterBaseName = "endDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("endDate", endDate)); + localVarQueryParameterBaseName = "interval"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("interval", interval)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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 latest balances for all holders of a token Returns the latest balance for each unique + * address holding this token. + * + * @param id The token link id (required) + * @param pageCursor Page cursor to get the next page (optional) + * @param pageSize Number of items per page (max 100), requesting more than 100 will return 100 + * items (optional) + * @param sortBy Sorting field for balances (optional, default to blockTimestamp) + * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) + * @return CompletableFuture<ApiResponse<AddressBalancePagedResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenBalances( + String id, String pageCursor, Integer pageSize, String sortBy, String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenBalancesRequestBuilder(id, pageCursor, pageSize, sortBy, order); + 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("getTokenBalances", 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< + AddressBalancePagedResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenBalancesRequestBuilder( + String id, String pageCursor, Integer pageSize, String sortBy, String order) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenBalances", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/balances" + .replace("{id}", ApiClient.urlEncode(id.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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 onchain summary for a token Returns the total number of unique holders and the total + * supply for the token contract. + * + * @param id The token link id (required) + * @return CompletableFuture<ApiResponse<TokenContractSummaryResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenContractSummary( + String id) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = getTokenContractSummaryRequestBuilder(id); + 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( + "getTokenContractSummary", 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< + TokenContractSummaryResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenContractSummaryRequestBuilder(String id) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenContractSummary", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/summary" + .replace("{id}", ApiClient.urlEncode(id.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; + } + /** + * Get active RBAC roles for a token Returns a list of currently active roles for the token + * contract. + * + * @param id The token link id (required) + * @return CompletableFuture<ApiResponse<ActiveRolesResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenRbac(String id) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = getTokenRbacRequestBuilder(id); + 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("getTokenRbac", 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< + ActiveRolesResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenRbacRequestBuilder(String id) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenRbac", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/rbac" + .replace("{id}", ApiClient.urlEncode(id.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; + } + /** + * Get historical total supply for a token Returns paginated total supply history for the token + * contract with optional time-range filtering and binning. + * + * @param id The token link id (required) + * @param startDate Start date of the time range in ISO 8601 format (optional) + * @param endDate End date of the time range in ISO 8601 format (optional) + * @param interval Time interval for grouping data (optional, default to DAY) + * @param pageCursor Page cursor to get the next page (optional) + * @param pageSize Number of items per page (max 100), requesting more than 100 will return 100 + * items (optional) + * @param sortBy Sorting field (enum). Sorting only supported by 'blockTimestamp' + * (optional, default to blockTimestamp) + * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) + * @return CompletableFuture<ApiResponse<TotalSupplyPagedResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenTotalSupply( + String id, + OffsetDateTime startDate, + OffsetDateTime endDate, + String interval, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenTotalSupplyRequestBuilder( + id, startDate, endDate, interval, pageCursor, pageSize, sortBy, order); + 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( + "getTokenTotalSupply", 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< + TotalSupplyPagedResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenTotalSupplyRequestBuilder( + String id, + OffsetDateTime startDate, + OffsetDateTime endDate, + String interval, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenTotalSupply", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/total_supply" + .replace("{id}", ApiClient.urlEncode(id.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "startDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("startDate", startDate)); + localVarQueryParameterBaseName = "endDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("endDate", endDate)); + localVarQueryParameterBaseName = "interval"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("interval", interval)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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 onchain transactions for a token Returns a paginated list of onchain transactions for the + * token contract, optionally filtered by date range. + * + * @param id The token link id (required) + * @param startDate Start date of the time range in ISO 8601 format (optional) + * @param endDate End date of the time range in ISO 8601 format (optional) + * @param pageCursor Page cursor to get the next page (optional) + * @param pageSize Number of items per page (max 100), requesting more than 100 will return 100 + * items (optional) + * @param sortBy Sorting field (enum). (optional, default to blockTimestamp) + * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) + * @return CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenTransactions( + String id, + OffsetDateTime startDate, + OffsetDateTime endDate, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenTransactionsRequestBuilder( + id, startDate, endDate, pageCursor, pageSize, sortBy, order); + 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( + "getTokenTransactions", 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< + OnchainTransactionsPagedResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenTransactionsRequestBuilder( + String id, + OffsetDateTime startDate, + OffsetDateTime endDate, + String pageCursor, + Integer pageSize, + String sortBy, + String order) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenTransactions", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/transactions" + .replace("{id}", ApiClient.urlEncode(id.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "startDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("startDate", startDate)); + localVarQueryParameterBaseName = "endDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("endDate", endDate)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + + 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 onchain transfers for a token Returns a paginated list of ERC20 transfer events for the + * token contract, optionally filtered by date range. + * + * @param id The token link id (required) + * @param startDate Start date of the time range in ISO 8601 format (optional) + * @param endDate End date of the time range in ISO 8601 format (optional) + * @param pageCursor Page cursor to get the next page (optional) + * @param pageSize Number of items per page (max 100), requesting more than 100 will return 100 + * items (optional) + * @param sortBy Sorting field for transfers (optional, default to blockTimeStamp) + * @param order ASC / DESC ordering (default DESC) (optional, default to DESC) + * @param sender Filter transfers by sender address (optional) + * @param receiver Filter transfers by receiver address (optional) + * @return CompletableFuture<ApiResponse<OnchainTransfersPagedResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getTokenTransfers( + String id, + OffsetDateTime startDate, + OffsetDateTime endDate, + String pageCursor, + Integer pageSize, + String sortBy, + String order, + String sender, + String receiver) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getTokenTransfersRequestBuilder( + id, + startDate, + endDate, + pageCursor, + pageSize, + sortBy, + order, + sender, + receiver); + 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("getTokenTransfers", 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< + OnchainTransfersPagedResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getTokenTransfersRequestBuilder( + String id, + OffsetDateTime startDate, + OffsetDateTime endDate, + String pageCursor, + Integer pageSize, + String sortBy, + String order, + String sender, + String receiver) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getTokenTransfers", "id", id); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/tokenization/tokens/{id}/transfers" + .replace("{id}", ApiClient.urlEncode(id.toString())); + + List localVarQueryParams = new ArrayList<>(); + StringJoiner localVarQueryStringJoiner = new StringJoiner("&"); + String localVarQueryParameterBaseName; + localVarQueryParameterBaseName = "startDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("startDate", startDate)); + localVarQueryParameterBaseName = "endDate"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("endDate", endDate)); + localVarQueryParameterBaseName = "pageCursor"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageCursor", pageCursor)); + localVarQueryParameterBaseName = "pageSize"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("pageSize", pageSize)); + localVarQueryParameterBaseName = "sortBy"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sortBy", sortBy)); + localVarQueryParameterBaseName = "order"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("order", order)); + localVarQueryParameterBaseName = "sender"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("sender", sender)); + localVarQueryParameterBaseName = "receiver"; + localVarQueryParams.addAll(ApiClient.parameterToPairs("receiver", receiver)); + + 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; + } /** * Issue a new token Facilitates the creation of a new token, supporting both EVM-based and * Stellar/Ripple platforms. For EVM, it deploys the corresponding contract template to the diff --git a/src/main/java/com/fireblocks/sdk/api/TradingBetaApi.java b/src/main/java/com/fireblocks/sdk/api/TradingBetaApi.java index 3d98d2b2..bd36cb16 100644 --- a/src/main/java/com/fireblocks/sdk/api/TradingBetaApi.java +++ b/src/main/java/com/fireblocks/sdk/api/TradingBetaApi.java @@ -26,24 +26,34 @@ import com.fireblocks.sdk.model.GetOrdersResponse; import com.fireblocks.sdk.model.OffersResponse; import com.fireblocks.sdk.model.OrderDetails; +import com.fireblocks.sdk.model.OrderRequirementDetails; import com.fireblocks.sdk.model.OrderStatus; import com.fireblocks.sdk.model.ProvidersListResponse; import com.fireblocks.sdk.model.QuotesResponse; import com.fireblocks.sdk.model.RatesRequest; import com.fireblocks.sdk.model.RatesResponse; +import com.fireblocks.sdk.model.SubmitOrderRequirementRequest; import com.fireblocks.sdk.model.TradingProvider; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; +import java.nio.channels.Channels; +import java.nio.channels.Pipe; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.StringJoiner; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import org.apache.http.HttpEntity; +import org.apache.http.entity.mime.MultipartEntityBuilder; @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -497,6 +507,86 @@ private HttpRequest.Builder getOrderRequestBuilder(String orderId) throws ApiExc } return localVarRequestBuilder; } + /** + * Get order requirement details for an order Fetch order requirement details for an order that + * is in `AWAITING_INFORMATION` status. The response includes + * `requirementId` and `dueBy` metadata, a `requiredData` JSON + * Schema (Draft-7) describing the shape of the `data` object expected on `POST + * /trading/orders/{orderId}/requirement/data`, and `requiredFiles` descriptors + * for any files the provider requires (uploaded via `POST + * /trading/orders/{orderId}/requirement/file`). Note: These endpoints are currently in + * beta and might be subject to changes. If you want to participate and learn more about the + * Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email + * to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, + * Approver, Editor, Viewer. For detailed information about error codes and troubleshooting, + * please refer to our [API Error Codes + * documentation](https://developers.fireblocks.com/reference/api-error-codes). + * + * @param orderId The ID of the order for which the order requirement is issued. (required) + * @return CompletableFuture<ApiResponse<OrderRequirementDetails>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getOrderRequirements( + String orderId) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + getOrderRequirementsRequestBuilder(orderId); + 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( + "getOrderRequirements", 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< + OrderRequirementDetails>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getOrderRequirementsRequestBuilder(String orderId) + throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty("getOrderRequirements", "orderId", orderId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/trading/orders/{orderId}/requirement" + .replace("{orderId}", ApiClient.urlEncode(orderId.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; + } /** * Get orders Retrieve a paginated list of orders with optional filtering by account, provider, * status, and time range. Note:These endpoints are currently in beta and might be subject to @@ -802,4 +892,224 @@ private HttpRequest.Builder getTradingProvidersRequestBuilder( } return localVarRequestBuilder; } + /** + * Submit a response to an order requirement Submit the user's textual response to an order + * requirement on an order that is in `AWAITING_INFORMATION` status. The request body + * carries `data` — a free-form object conforming to the `requiredData` JSON + * Schema returned by the GET endpoint. Any required files are uploaded separately via + * `POST /trading/orders/{orderId}/requirement/file`. Note: These endpoints are + * currently in beta and might be subject to changes. If you want to participate and learn more + * about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send + * an email to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, + * Editor. For detailed information about error codes and troubleshooting, please refer to our + * [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + * + * @param submitOrderRequirementRequest (required) + * @param orderId The ID of the order to submit the order requirement response for. (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<Void>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> submitOrderRequirements( + SubmitOrderRequirementRequest submitOrderRequirementRequest, + String orderId, + String idempotencyKey) + throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + submitOrderRequirementsRequestBuilder( + submitOrderRequirementRequest, orderId, 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( + "submitOrderRequirements", localVarResponse)); + } + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + null)); + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder submitOrderRequirementsRequestBuilder( + SubmitOrderRequirementRequest submitOrderRequirementRequest, + String orderId, + String idempotencyKey) + throws ApiException { + ValidationUtils.assertParamExists( + "submitOrderRequirements", + "submitOrderRequirementRequest", + submitOrderRequirementRequest); + ValidationUtils.assertParamExistsAndNotEmpty("submitOrderRequirements", "orderId", orderId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/trading/orders/{orderId}/requirement/data" + .replace("{orderId}", ApiClient.urlEncode(orderId.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(submitOrderRequirementRequest); + 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; + } + /** + * Upload a file for an order requirement Upload a single file (multipart/form-data) in response + * to an order requirement on an order that is in `AWAITING_INFORMATION` status. Call + * this endpoint once per required file. Send `fileKey` (matching a + * `fileKey` from `requiredFiles` on the GET response) and the binary + * `file`. Its type must be one of the supported file formats. Fireblocks encrypts + * each file and uploads it individually to the underlying provider. The textual response is + * submitted separately via `POST /trading/orders/{orderId}/requirement/data`. Note: + * These endpoints are currently in beta and might be subject to changes. If you want to + * participate and learn more about the Fireblocks Trading, please contact your Fireblocks + * Customer Success Manager or send an email to CSM@fireblocks.com. Endpoint Permission: Owner, + * Admin, Non-Signing Admin, Signer, Editor. For detailed information about error codes and + * troubleshooting, please refer to our [API Error Codes + * documentation](https://developers.fireblocks.com/reference/api-error-codes). + * + * @param fileKey Identifier of the required file this upload satisfies. Must match a + * `fileKey` from `requiredFiles` on the GET response. (required) + * @param _file The binary file content. The file's type must be one of the supported + * OrderRequirementAllowedFileType values; the file name and type are derived from the + * uploaded part. (required) + * @param orderId The ID of the order to upload the order requirement file for. (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<Void>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> uploadOrderRequirementFile( + String fileKey, File _file, String orderId, String idempotencyKey) throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = + uploadOrderRequirementFileRequestBuilder( + fileKey, _file, orderId, 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( + "uploadOrderRequirementFile", + localVarResponse)); + } + return CompletableFuture.completedFuture( + new ApiResponse( + localVarResponse.statusCode(), + localVarResponse.headers().map(), + null)); + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder uploadOrderRequirementFileRequestBuilder( + String fileKey, File _file, String orderId, String idempotencyKey) throws ApiException { + ValidationUtils.assertParamExistsAndNotEmpty( + "uploadOrderRequirementFile", "fileKey", fileKey); + ValidationUtils.assertParamExists("uploadOrderRequirementFile", "_file", _file); + ValidationUtils.assertParamExistsAndNotEmpty( + "uploadOrderRequirementFile", "orderId", orderId); + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = + "/trading/orders/{orderId}/requirement/file" + .replace("{orderId}", ApiClient.urlEncode(orderId.toString())); + + localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); + + if (idempotencyKey != null) { + localVarRequestBuilder.header("Idempotency-Key", idempotencyKey.toString()); + } + localVarRequestBuilder.header("Accept", "application/json"); + + MultipartEntityBuilder multiPartBuilder = MultipartEntityBuilder.create(); + boolean hasFiles = false; + multiPartBuilder.addTextBody("fileKey", fileKey.toString()); + multiPartBuilder.addBinaryBody("file", _file); + hasFiles = true; + HttpEntity entity = multiPartBuilder.build(); + HttpRequest.BodyPublisher formDataPublisher; + if (hasFiles) { + Pipe pipe; + try { + pipe = Pipe.open(); + } catch (IOException e) { + throw new RuntimeException(e); + } + new Thread( + () -> { + try (OutputStream outputStream = + Channels.newOutputStream(pipe.sink())) { + entity.writeTo(outputStream); + } catch (IOException e) { + e.printStackTrace(); + } + }) + .start(); + formDataPublisher = + HttpRequest.BodyPublishers.ofInputStream( + () -> Channels.newInputStream(pipe.source())); + } else { + ByteArrayOutputStream formOutputStream = new ByteArrayOutputStream(); + try { + entity.writeTo(formOutputStream); + } catch (IOException e) { + throw new RuntimeException(e); + } + formDataPublisher = + HttpRequest.BodyPublishers.ofInputStream( + () -> new ByteArrayInputStream(formOutputStream.toByteArray())); + } + localVarRequestBuilder + .header("Content-Type", entity.getContentType().getValue()) + .method("POST", formDataPublisher); + 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 fb843b1e..395f905c 100644 --- a/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java +++ b/src/main/java/com/fireblocks/sdk/api/WebhooksV2Api.java @@ -35,6 +35,7 @@ import com.fireblocks.sdk.model.Webhook; import com.fireblocks.sdk.model.WebhookEvent; import com.fireblocks.sdk.model.WebhookMetric; +import com.fireblocks.sdk.model.WebhookMtlsCsrResponse; import com.fireblocks.sdk.model.WebhookPaginatedResponse; import java.io.IOException; import java.io.InputStream; @@ -309,6 +310,67 @@ private HttpRequest.Builder getMetricsRequestBuilder(UUID webhookId, String metr } return localVarRequestBuilder; } + /** + * Get mTLS CSR Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use + * to generate their signed client certificate. + * + * @return CompletableFuture<ApiResponse<WebhookMtlsCsrResponse>> + * @throws ApiException if fails to make API call + */ + public CompletableFuture> getMtlsCsr() throws ApiException { + try { + HttpRequest.Builder localVarRequestBuilder = getMtlsCsrRequestBuilder(); + 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("getMtlsCsr", 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< + WebhookMtlsCsrResponse>() {}))); + } catch (IOException e) { + return CompletableFuture.failedFuture(new ApiException(e)); + } + }); + } catch (ApiException e) { + return CompletableFuture.failedFuture(e); + } + } + + private HttpRequest.Builder getMtlsCsrRequestBuilder() throws ApiException { + + HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); + + String localVarPath = "/webhooks/mtls/csr"; + + 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 notification by id Get notification by id * diff --git a/src/main/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2.java b/src/main/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2.java new file mode 100644 index 00000000..fc696bcf --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2.java @@ -0,0 +1,293 @@ +/* + * 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.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** AccessRegistryCurrentStateResponse2 */ +@JsonPropertyOrder({ + AccessRegistryCurrentStateResponse2.JSON_PROPERTY_DATA, + AccessRegistryCurrentStateResponse2.JSON_PROPERTY_NEXT, + AccessRegistryCurrentStateResponse2.JSON_PROPERTY_PREV, + AccessRegistryCurrentStateResponse2.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class AccessRegistryCurrentStateResponse2 { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public static final String JSON_PROPERTY_PREV = "prev"; + @jakarta.annotation.Nullable private String prev; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nullable private BigDecimal total; + + public AccessRegistryCurrentStateResponse2() {} + + @JsonCreator + public AccessRegistryCurrentStateResponse2( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public AccessRegistryCurrentStateResponse2 data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public AccessRegistryCurrentStateResponse2 addDataItem(AccessRegistryAddressItem dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of active addresses in the access registry + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public AccessRegistryCurrentStateResponse2 next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for next page + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + public AccessRegistryCurrentStateResponse2 prev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + return this; + } + + /** + * Cursor for previous page + * + * @return prev + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPrev() { + return prev; + } + + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPrev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + } + + public AccessRegistryCurrentStateResponse2 total( + @jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + return this; + } + + /** + * Total count of active addresses in the access registry + * + * @return total + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTotal(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + } + + /** Return true if this AccessRegistryCurrentStateResponse-2 object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AccessRegistryCurrentStateResponse2 accessRegistryCurrentStateResponse2 = + (AccessRegistryCurrentStateResponse2) o; + return Objects.equals(this.data, accessRegistryCurrentStateResponse2.data) + && Objects.equals(this.next, accessRegistryCurrentStateResponse2.next) + && Objects.equals(this.prev, accessRegistryCurrentStateResponse2.prev) + && Objects.equals(this.total, accessRegistryCurrentStateResponse2.total); + } + + @Override + public int hashCode() { + return Objects.hash(data, next, prev, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AccessRegistryCurrentStateResponse2 {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append(" prev: ").append(toIndentedString(prev)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + // add `prev` to the URL query string + if (getPrev() != null) { + joiner.add( + String.format( + "%sprev%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPrev())))); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ActiveRolesResponse.java b/src/main/java/com/fireblocks/sdk/model/ActiveRolesResponse.java new file mode 100644 index 00000000..82c797dd --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ActiveRolesResponse.java @@ -0,0 +1,172 @@ +/* + * 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 java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.StringJoiner; + +/** ActiveRolesResponse */ +@JsonPropertyOrder({ActiveRolesResponse.JSON_PROPERTY_ACTIVE_ROLES}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class ActiveRolesResponse { + public static final String JSON_PROPERTY_ACTIVE_ROLES = "activeRoles"; + @jakarta.annotation.Nonnull private Map activeRoles; + + public ActiveRolesResponse() {} + + @JsonCreator + public ActiveRolesResponse( + @JsonProperty(value = JSON_PROPERTY_ACTIVE_ROLES, required = true) + Map activeRoles) { + this.activeRoles = activeRoles; + } + + public ActiveRolesResponse activeRoles( + @jakarta.annotation.Nonnull Map activeRoles) { + this.activeRoles = activeRoles; + return this; + } + + public ActiveRolesResponse putActiveRolesItem(String key, RoleDetails activeRolesItem) { + if (this.activeRoles == null) { + this.activeRoles = new HashMap<>(); + } + this.activeRoles.put(key, activeRolesItem); + return this; + } + + /** + * Active RBAC roles on the contract, keyed by role name (e.g. DEFAULT_ADMIN_ROLE, MINTER_ROLE). + * Each entry contains the on-chain role hash, a human-readable description, and the list of + * accounts currently granted that role. + * + * @return activeRoles + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ACTIVE_ROLES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Map getActiveRoles() { + return activeRoles; + } + + @JsonProperty(JSON_PROPERTY_ACTIVE_ROLES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setActiveRoles(@jakarta.annotation.Nonnull Map activeRoles) { + this.activeRoles = activeRoles; + } + + /** Return true if this ActiveRolesResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ActiveRolesResponse activeRolesResponse = (ActiveRolesResponse) o; + return Objects.equals(this.activeRoles, activeRolesResponse.activeRoles); + } + + @Override + public int hashCode() { + return Objects.hash(activeRoles); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ActiveRolesResponse {\n"); + sb.append(" activeRoles: ").append(toIndentedString(activeRoles)).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 `activeRoles` to the URL query string + if (getActiveRoles() != null) { + for (String _key : getActiveRoles().keySet()) { + if (getActiveRoles().get(_key) != null) { + joiner.add( + getActiveRoles() + .get(_key) + .toUrlQueryString( + String.format( + "%sactiveRoles%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + _key, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2.java b/src/main/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2.java new file mode 100644 index 00000000..7c54a4b2 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2.java @@ -0,0 +1,292 @@ +/* + * 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.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** AddressBalancePagedResponse2 */ +@JsonPropertyOrder({ + AddressBalancePagedResponse2.JSON_PROPERTY_DATA, + AddressBalancePagedResponse2.JSON_PROPERTY_NEXT, + AddressBalancePagedResponse2.JSON_PROPERTY_PREV, + AddressBalancePagedResponse2.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class AddressBalancePagedResponse2 { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public static final String JSON_PROPERTY_PREV = "prev"; + @jakarta.annotation.Nullable private String prev; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nullable private BigDecimal total; + + public AddressBalancePagedResponse2() {} + + @JsonCreator + public AddressBalancePagedResponse2( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public AddressBalancePagedResponse2 data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public AddressBalancePagedResponse2 addDataItem(AddressBalanceItemDto dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of address balance data + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public AddressBalancePagedResponse2 next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for next page + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + public AddressBalancePagedResponse2 prev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + return this; + } + + /** + * Cursor for previous page (reserved for future support) + * + * @return prev + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPrev() { + return prev; + } + + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPrev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + } + + public AddressBalancePagedResponse2 total(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + return this; + } + + /** + * Total count of items + * + * @return total + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTotal(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + } + + /** Return true if this AddressBalancePagedResponse-2 object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AddressBalancePagedResponse2 addressBalancePagedResponse2 = + (AddressBalancePagedResponse2) o; + return Objects.equals(this.data, addressBalancePagedResponse2.data) + && Objects.equals(this.next, addressBalancePagedResponse2.next) + && Objects.equals(this.prev, addressBalancePagedResponse2.prev) + && Objects.equals(this.total, addressBalancePagedResponse2.total); + } + + @Override + public int hashCode() { + return Objects.hash(data, next, prev, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AddressBalancePagedResponse2 {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append(" prev: ").append(toIndentedString(prev)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + // add `prev` to the URL query string + if (getPrev() != null) { + joiner.add( + String.format( + "%sprev%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPrev())))); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/AllowlistEntry.java b/src/main/java/com/fireblocks/sdk/model/AllowlistEntry.java new file mode 100644 index 00000000..b7346f3e --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AllowlistEntry.java @@ -0,0 +1,592 @@ +/* + * 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.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.StringJoiner; +import java.util.UUID; + +/** AllowlistEntry */ +@JsonPropertyOrder({ + AllowlistEntry.JSON_PROPERTY_ID, + AllowlistEntry.JSON_PROPERTY_ADDRESS, + AllowlistEntry.JSON_PROPERTY_ASSETS, + AllowlistEntry.JSON_PROPERTY_NETWORKS, + AllowlistEntry.JSON_PROPERTY_LABEL, + AllowlistEntry.JSON_PROPERTY_ADDRESS_IDENTIFIER, + AllowlistEntry.JSON_PROPERTY_STATUS, + AllowlistEntry.JSON_PROPERTY_ADDED_AT, + AllowlistEntry.JSON_PROPERTY_PROVIDER_REFERENCE_ID, + AllowlistEntry.JSON_PROPERTY_PROVIDER_METADATA +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class AllowlistEntry { + public static final String JSON_PROPERTY_ID = "id"; + @jakarta.annotation.Nonnull private UUID id; + + public static final String JSON_PROPERTY_ADDRESS = "address"; + @jakarta.annotation.Nonnull private String address; + + public static final String JSON_PROPERTY_ASSETS = "assets"; + @jakarta.annotation.Nonnull private List assets; + + public static final String JSON_PROPERTY_NETWORKS = "networks"; + @jakarta.annotation.Nonnull private List networks; + + public static final String JSON_PROPERTY_LABEL = "label"; + @jakarta.annotation.Nullable private String label; + + public static final String JSON_PROPERTY_ADDRESS_IDENTIFIER = "addressIdentifier"; + @jakarta.annotation.Nullable private String addressIdentifier; + + public static final String JSON_PROPERTY_STATUS = "status"; + @jakarta.annotation.Nonnull private AllowlistEntryStatus status; + + public static final String JSON_PROPERTY_ADDED_AT = "addedAt"; + @jakarta.annotation.Nonnull private OffsetDateTime addedAt; + + public static final String JSON_PROPERTY_PROVIDER_REFERENCE_ID = "providerReferenceId"; + @jakarta.annotation.Nullable private String providerReferenceId; + + public static final String JSON_PROPERTY_PROVIDER_METADATA = "providerMetadata"; + @jakarta.annotation.Nullable private Map providerMetadata; + + public AllowlistEntry() {} + + @JsonCreator + public AllowlistEntry( + @JsonProperty(value = JSON_PROPERTY_ID, required = true) UUID id, + @JsonProperty(value = JSON_PROPERTY_ADDRESS, required = true) String address, + @JsonProperty(value = JSON_PROPERTY_ASSETS, required = true) List assets, + @JsonProperty(value = JSON_PROPERTY_NETWORKS, required = true) List networks, + @JsonProperty(value = JSON_PROPERTY_STATUS, required = true) + AllowlistEntryStatus status, + @JsonProperty(value = JSON_PROPERTY_ADDED_AT, required = true) OffsetDateTime addedAt) { + this.id = id; + this.address = address; + this.assets = assets; + this.networks = networks; + this.status = status; + this.addedAt = addedAt; + } + + public AllowlistEntry id(@jakarta.annotation.Nonnull UUID id) { + this.id = id; + return this; + } + + /** + * Unique identifier for the allowlist entry + * + * @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 AllowlistEntry address(@jakarta.annotation.Nonnull String address) { + this.address = address; + return this; + } + + /** + * The blockchain 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; + } + + public AllowlistEntry assets(@jakarta.annotation.Nonnull List assets) { + this.assets = assets; + return this; + } + + public AllowlistEntry addAssetsItem(String assetsItem) { + if (this.assets == null) { + this.assets = new ArrayList<>(); + } + this.assets.add(assetsItem); + return this; + } + + /** + * Assets approved for this address. Each value is either a Fireblocks asset ID (when the + * provider's asset maps to a Fireblocks-supported asset) or the raw provider asset symbol + * (when no mapping exists). Treat values as opaque strings. Possible combinations: - One or + * more specific asset values (e.g., `[\"BTC\", \"ETH\"]`) See + * [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list + * of Fireblocks asset IDs. + * + * @return assets + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ASSETS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getAssets() { + return assets; + } + + @JsonProperty(JSON_PROPERTY_ASSETS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAssets(@jakarta.annotation.Nonnull List assets) { + this.assets = assets; + } + + public AllowlistEntry networks(@jakarta.annotation.Nonnull List networks) { + this.networks = networks; + return this; + } + + public AllowlistEntry addNetworksItem(String networksItem) { + if (this.networks == null) { + this.networks = new ArrayList<>(); + } + this.networks.add(networksItem); + return this; + } + + /** + * Networks approved for this address. Each value is either a Fireblocks network ID (when the + * provider's network maps to a Fireblocks-supported blockchain) or the raw provider + * blockchain identifier (when no mapping exists). Treat values as opaque strings. Possible + * combinations: - One or more specific network values (e.g., `[\"ETHEREUM\", + * \"POLYGON\"]`) See [List + * blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical + * list of Fireblocks blockchain identifiers. + * + * @return networks + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_NETWORKS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getNetworks() { + return networks; + } + + @JsonProperty(JSON_PROPERTY_NETWORKS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setNetworks(@jakarta.annotation.Nonnull List networks) { + this.networks = networks; + } + + public AllowlistEntry label(@jakarta.annotation.Nullable String label) { + this.label = label; + return this; + } + + /** + * Human-readable label for the address + * + * @return label + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LABEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getLabel() { + return label; + } + + @JsonProperty(JSON_PROPERTY_LABEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLabel(@jakarta.annotation.Nullable String label) { + this.label = label; + } + + public AllowlistEntry addressIdentifier(@jakarta.annotation.Nullable String addressIdentifier) { + this.addressIdentifier = addressIdentifier; + return this; + } + + /** + * Additional identifier (e.g., memo, destination tag) + * + * @return addressIdentifier + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ADDRESS_IDENTIFIER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAddressIdentifier() { + return addressIdentifier; + } + + @JsonProperty(JSON_PROPERTY_ADDRESS_IDENTIFIER) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAddressIdentifier(@jakarta.annotation.Nullable String addressIdentifier) { + this.addressIdentifier = addressIdentifier; + } + + public AllowlistEntry status(@jakarta.annotation.Nonnull AllowlistEntryStatus status) { + this.status = status; + return this; + } + + /** + * Get status + * + * @return status + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public AllowlistEntryStatus getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStatus(@jakarta.annotation.Nonnull AllowlistEntryStatus status) { + this.status = status; + } + + public AllowlistEntry addedAt(@jakarta.annotation.Nonnull OffsetDateTime addedAt) { + this.addedAt = addedAt; + return this; + } + + /** + * ISO 8601 timestamp when entry was added + * + * @return addedAt + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ADDED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public OffsetDateTime getAddedAt() { + return addedAt; + } + + @JsonProperty(JSON_PROPERTY_ADDED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAddedAt(@jakarta.annotation.Nonnull OffsetDateTime addedAt) { + this.addedAt = addedAt; + } + + public AllowlistEntry providerReferenceId( + @jakarta.annotation.Nullable String providerReferenceId) { + this.providerReferenceId = providerReferenceId; + return this; + } + + /** + * Provider's internal reference ID + * + * @return providerReferenceId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROVIDER_REFERENCE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getProviderReferenceId() { + return providerReferenceId; + } + + @JsonProperty(JSON_PROPERTY_PROVIDER_REFERENCE_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setProviderReferenceId(@jakarta.annotation.Nullable String providerReferenceId) { + this.providerReferenceId = providerReferenceId; + } + + public AllowlistEntry providerMetadata( + @jakarta.annotation.Nullable Map providerMetadata) { + this.providerMetadata = providerMetadata; + return this; + } + + public AllowlistEntry putProviderMetadataItem(String key, Object providerMetadataItem) { + if (this.providerMetadata == null) { + this.providerMetadata = new HashMap<>(); + } + this.providerMetadata.put(key, providerMetadataItem); + return this; + } + + /** + * Provider-specific pass-through data for this address. Treat as an opaque blob: the shape, set + * of keys, and value types vary by provider, by entry, and over time. Keys may be added, + * renamed, or removed without notice as providers evolve their integrations or as new providers + * are added. The example below illustrates one possible shape and is not a contract — do not + * program against specific keys. + * + * @return providerMetadata + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROVIDER_METADATA) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + public Map getProviderMetadata() { + return providerMetadata; + } + + @JsonProperty(JSON_PROPERTY_PROVIDER_METADATA) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + public void setProviderMetadata( + @jakarta.annotation.Nullable Map providerMetadata) { + this.providerMetadata = providerMetadata; + } + + /** Return true if this AllowlistEntry object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AllowlistEntry allowlistEntry = (AllowlistEntry) o; + return Objects.equals(this.id, allowlistEntry.id) + && Objects.equals(this.address, allowlistEntry.address) + && Objects.equals(this.assets, allowlistEntry.assets) + && Objects.equals(this.networks, allowlistEntry.networks) + && Objects.equals(this.label, allowlistEntry.label) + && Objects.equals(this.addressIdentifier, allowlistEntry.addressIdentifier) + && Objects.equals(this.status, allowlistEntry.status) + && Objects.equals(this.addedAt, allowlistEntry.addedAt) + && Objects.equals(this.providerReferenceId, allowlistEntry.providerReferenceId) + && Objects.equals(this.providerMetadata, allowlistEntry.providerMetadata); + } + + @Override + public int hashCode() { + return Objects.hash( + id, + address, + assets, + networks, + label, + addressIdentifier, + status, + addedAt, + providerReferenceId, + providerMetadata); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AllowlistEntry {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" address: ").append(toIndentedString(address)).append("\n"); + sb.append(" assets: ").append(toIndentedString(assets)).append("\n"); + sb.append(" networks: ").append(toIndentedString(networks)).append("\n"); + sb.append(" label: ").append(toIndentedString(label)).append("\n"); + sb.append(" addressIdentifier: ") + .append(toIndentedString(addressIdentifier)) + .append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" addedAt: ").append(toIndentedString(addedAt)).append("\n"); + sb.append(" providerReferenceId: ") + .append(toIndentedString(providerReferenceId)) + .append("\n"); + sb.append(" providerMetadata: ").append(toIndentedString(providerMetadata)).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 `address` to the URL query string + if (getAddress() != null) { + joiner.add( + String.format( + "%saddress%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAddress())))); + } + + // add `assets` to the URL query string + if (getAssets() != null) { + for (int i = 0; i < getAssets().size(); i++) { + joiner.add( + String.format( + "%sassets%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode(ApiClient.valueToString(getAssets().get(i))))); + } + } + + // add `networks` to the URL query string + if (getNetworks() != null) { + for (int i = 0; i < getNetworks().size(); i++) { + joiner.add( + String.format( + "%snetworks%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString(getNetworks().get(i))))); + } + } + + // add `label` to the URL query string + if (getLabel() != null) { + joiner.add( + String.format( + "%slabel%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getLabel())))); + } + + // add `addressIdentifier` to the URL query string + if (getAddressIdentifier() != null) { + joiner.add( + String.format( + "%saddressIdentifier%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAddressIdentifier())))); + } + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add( + String.format( + "%sstatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + + // add `addedAt` to the URL query string + if (getAddedAt() != null) { + joiner.add( + String.format( + "%saddedAt%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAddedAt())))); + } + + // add `providerReferenceId` to the URL query string + if (getProviderReferenceId() != null) { + joiner.add( + String.format( + "%sproviderReferenceId%s=%s", + prefix, + suffix, + ApiClient.urlEncode( + ApiClient.valueToString(getProviderReferenceId())))); + } + + // add `providerMetadata` to the URL query string + if (getProviderMetadata() != null) { + for (String _key : getProviderMetadata().keySet()) { + joiner.add( + String.format( + "%sproviderMetadata%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, _key, containerSuffix), + getProviderMetadata().get(_key), + ApiClient.urlEncode( + ApiClient.valueToString(getProviderMetadata().get(_key))))); + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/AllowlistEntryStatus.java b/src/main/java/com/fireblocks/sdk/model/AllowlistEntryStatus.java new file mode 100644 index 00000000..4abb33e7 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AllowlistEntryStatus.java @@ -0,0 +1,80 @@ +/* + * 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; + +/** + * Current status of the allowlist entry. - `ACTIVE` — Entry is approved and usable. - + * `PENDING_PROVIDER_COOLDOWN` — Entry was recently added or modified and is in the + * provider-enforced cooldown window before becoming active. - `PENDING_PROVIDER_REVIEW` — + * Entry is awaiting provider-side review. - `PENDING_APPROVAL` — Entry is awaiting + * customer/admin approval on the Fireblocks side. - `REJECTED` — Entry was rejected at + * submission time and will not become active. - `REMOVED` — Entry was deactivated after + * previously being active. May still appear in results for audit purposes. + */ +public enum AllowlistEntryStatus { + ACTIVE("ACTIVE"), + + PENDING_PROVIDER_COOLDOWN("PENDING_PROVIDER_COOLDOWN"), + + PENDING_PROVIDER_REVIEW("PENDING_PROVIDER_REVIEW"), + + PENDING_APPROVAL("PENDING_APPROVAL"), + + REJECTED("REJECTED"), + + REMOVED("REMOVED"); + + private String value; + + AllowlistEntryStatus(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static AllowlistEntryStatus fromValue(String value) { + for (AllowlistEntryStatus b : AllowlistEntryStatus.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/AllowlistMetadata.java b/src/main/java/com/fireblocks/sdk/model/AllowlistMetadata.java new file mode 100644 index 00000000..1434dc72 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AllowlistMetadata.java @@ -0,0 +1,221 @@ +/* + * 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.Objects; +import java.util.StringJoiner; + +/** Allowlist-specific metadata */ +@JsonPropertyOrder({ + AllowlistMetadata.JSON_PROPERTY_LAST_SYNCED_AT, + AllowlistMetadata.JSON_PROPERTY_SYNC_STATUS +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class AllowlistMetadata { + public static final String JSON_PROPERTY_LAST_SYNCED_AT = "lastSyncedAt"; + @jakarta.annotation.Nullable private OffsetDateTime lastSyncedAt; + + /** Status of last sync operation */ + public enum SyncStatusEnum { + SUCCESS(String.valueOf("SUCCESS")), + + FAILED(String.valueOf("FAILED")), + + IN_PROGRESS(String.valueOf("IN_PROGRESS")), + + NEVER_SYNCED(String.valueOf("NEVER_SYNCED")); + + private String value; + + SyncStatusEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static SyncStatusEnum fromValue(String value) { + for (SyncStatusEnum b : SyncStatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_SYNC_STATUS = "syncStatus"; + @jakarta.annotation.Nullable private SyncStatusEnum syncStatus; + + public AllowlistMetadata() {} + + public AllowlistMetadata lastSyncedAt( + @jakarta.annotation.Nullable OffsetDateTime lastSyncedAt) { + this.lastSyncedAt = lastSyncedAt; + return this; + } + + /** + * ISO 8601 timestamp of last sync with provider + * + * @return lastSyncedAt + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LAST_SYNCED_AT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public OffsetDateTime getLastSyncedAt() { + return lastSyncedAt; + } + + @JsonProperty(JSON_PROPERTY_LAST_SYNCED_AT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLastSyncedAt(@jakarta.annotation.Nullable OffsetDateTime lastSyncedAt) { + this.lastSyncedAt = lastSyncedAt; + } + + public AllowlistMetadata syncStatus(@jakarta.annotation.Nullable SyncStatusEnum syncStatus) { + this.syncStatus = syncStatus; + return this; + } + + /** + * Status of last sync operation + * + * @return syncStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_SYNC_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SyncStatusEnum getSyncStatus() { + return syncStatus; + } + + @JsonProperty(JSON_PROPERTY_SYNC_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSyncStatus(@jakarta.annotation.Nullable SyncStatusEnum syncStatus) { + this.syncStatus = syncStatus; + } + + /** Return true if this AllowlistMetadata object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AllowlistMetadata allowlistMetadata = (AllowlistMetadata) o; + return Objects.equals(this.lastSyncedAt, allowlistMetadata.lastSyncedAt) + && Objects.equals(this.syncStatus, allowlistMetadata.syncStatus); + } + + @Override + public int hashCode() { + return Objects.hash(lastSyncedAt, syncStatus); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AllowlistMetadata {\n"); + sb.append(" lastSyncedAt: ").append(toIndentedString(lastSyncedAt)).append("\n"); + sb.append(" syncStatus: ").append(toIndentedString(syncStatus)).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 `lastSyncedAt` to the URL query string + if (getLastSyncedAt() != null) { + joiner.add( + String.format( + "%slastSyncedAt%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getLastSyncedAt())))); + } + + // add `syncStatus` to the URL query string + if (getSyncStatus() != null) { + joiner.add( + String.format( + "%ssyncStatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getSyncStatus())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/AllowlistResponse.java b/src/main/java/com/fireblocks/sdk/model/AllowlistResponse.java new file mode 100644 index 00000000..bcb747ad --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/AllowlistResponse.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.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** AllowlistResponse */ +@JsonPropertyOrder({ + AllowlistResponse.JSON_PROPERTY_DATA, + AllowlistResponse.JSON_PROPERTY_METADATA, + AllowlistResponse.JSON_PROPERTY_TOTAL, + AllowlistResponse.JSON_PROPERTY_NEXT +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class AllowlistResponse { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_METADATA = "metadata"; + @jakarta.annotation.Nullable private AllowlistMetadata metadata; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nonnull private Integer total; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public AllowlistResponse() {} + + @JsonCreator + public AllowlistResponse( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) List data, + @JsonProperty(value = JSON_PROPERTY_TOTAL, required = true) Integer total) { + this.data = data; + this.total = total; + } + + public AllowlistResponse data(@jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public AllowlistResponse addDataItem(AllowlistEntry dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of allowlist entries + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public AllowlistResponse metadata(@jakarta.annotation.Nullable AllowlistMetadata metadata) { + this.metadata = metadata; + return this; + } + + /** + * Get metadata + * + * @return metadata + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_METADATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public AllowlistMetadata getMetadata() { + return metadata; + } + + @JsonProperty(JSON_PROPERTY_METADATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMetadata(@jakarta.annotation.Nullable AllowlistMetadata metadata) { + this.metadata = metadata; + } + + public AllowlistResponse total(@jakarta.annotation.Nonnull Integer total) { + this.total = total; + return this; + } + + /** + * Total number of allowlist entries + * + * @return total + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Integer getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTotal(@jakarta.annotation.Nonnull Integer total) { + this.total = total; + } + + public AllowlistResponse next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for the next page of results, if available + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + /** Return true if this AllowlistResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AllowlistResponse allowlistResponse = (AllowlistResponse) o; + return Objects.equals(this.data, allowlistResponse.data) + && Objects.equals(this.metadata, allowlistResponse.metadata) + && Objects.equals(this.total, allowlistResponse.total) + && Objects.equals(this.next, allowlistResponse.next); + } + + @Override + public int hashCode() { + return Objects.hash(data, metadata, total, next); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class AllowlistResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `metadata` to the URL query string + if (getMetadata() != null) { + joiner.add(getMetadata().toUrlQueryString(prefix + "metadata" + suffix)); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2.java b/src/main/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2.java new file mode 100644 index 00000000..6a6eb0b4 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2.java @@ -0,0 +1,292 @@ +/* + * 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.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** BalanceHistoryPagedResponse2 */ +@JsonPropertyOrder({ + BalanceHistoryPagedResponse2.JSON_PROPERTY_DATA, + BalanceHistoryPagedResponse2.JSON_PROPERTY_NEXT, + BalanceHistoryPagedResponse2.JSON_PROPERTY_PREV, + BalanceHistoryPagedResponse2.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class BalanceHistoryPagedResponse2 { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public static final String JSON_PROPERTY_PREV = "prev"; + @jakarta.annotation.Nullable private String prev; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nullable private BigDecimal total; + + public BalanceHistoryPagedResponse2() {} + + @JsonCreator + public BalanceHistoryPagedResponse2( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public BalanceHistoryPagedResponse2 data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public BalanceHistoryPagedResponse2 addDataItem(BalanceHistoryItemDto dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of balance history data points + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public BalanceHistoryPagedResponse2 next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for next page + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + public BalanceHistoryPagedResponse2 prev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + return this; + } + + /** + * Cursor for previous page + * + * @return prev + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPrev() { + return prev; + } + + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPrev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + } + + public BalanceHistoryPagedResponse2 total(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + return this; + } + + /** + * Total count of items + * + * @return total + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTotal(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + } + + /** Return true if this BalanceHistoryPagedResponse-2 object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + BalanceHistoryPagedResponse2 balanceHistoryPagedResponse2 = + (BalanceHistoryPagedResponse2) o; + return Objects.equals(this.data, balanceHistoryPagedResponse2.data) + && Objects.equals(this.next, balanceHistoryPagedResponse2.next) + && Objects.equals(this.prev, balanceHistoryPagedResponse2.prev) + && Objects.equals(this.total, balanceHistoryPagedResponse2.total); + } + + @Override + public int hashCode() { + return Objects.hash(data, next, prev, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class BalanceHistoryPagedResponse2 {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append(" prev: ").append(toIndentedString(prev)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + // add `prev` to the URL query string + if (getPrev() != null) { + joiner.add( + String.format( + "%sprev%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPrev())))); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/BusinessIdentification.java b/src/main/java/com/fireblocks/sdk/model/BusinessIdentification.java index 9b603016..7d9dbd4f 100644 --- a/src/main/java/com/fireblocks/sdk/model/BusinessIdentification.java +++ b/src/main/java/com/fireblocks/sdk/model/BusinessIdentification.java @@ -18,6 +18,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fireblocks.sdk.ApiClient; +import java.time.LocalDate; import java.util.Objects; import java.util.StringJoiner; @@ -30,7 +31,9 @@ BusinessIdentification.JSON_PROPERTY_REGISTRATION_NUMBER, BusinessIdentification.JSON_PROPERTY_POSTAL_ADDRESS, BusinessIdentification.JSON_PROPERTY_EMAIL, - BusinessIdentification.JSON_PROPERTY_PHONE + BusinessIdentification.JSON_PROPERTY_PHONE, + BusinessIdentification.JSON_PROPERTY_DATE_OF_REGISTRATION, + BusinessIdentification.JSON_PROPERTY_COUNTRY_OF_REGISTRATION }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -61,6 +64,12 @@ public class BusinessIdentification { public static final String JSON_PROPERTY_PHONE = "phone"; @jakarta.annotation.Nullable private String phone; + public static final String JSON_PROPERTY_DATE_OF_REGISTRATION = "dateOfRegistration"; + @jakarta.annotation.Nullable private LocalDate dateOfRegistration; + + public static final String JSON_PROPERTY_COUNTRY_OF_REGISTRATION = "countryOfRegistration"; + @jakarta.annotation.Nullable private String countryOfRegistration; + public BusinessIdentification() {} @JsonCreator @@ -274,6 +283,55 @@ public void setPhone(@jakarta.annotation.Nullable String phone) { this.phone = phone; } + public BusinessIdentification dateOfRegistration( + @jakarta.annotation.Nullable LocalDate dateOfRegistration) { + this.dateOfRegistration = dateOfRegistration; + return this; + } + + /** + * The date the business was registered. + * + * @return dateOfRegistration + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DATE_OF_REGISTRATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LocalDate getDateOfRegistration() { + return dateOfRegistration; + } + + @JsonProperty(JSON_PROPERTY_DATE_OF_REGISTRATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDateOfRegistration(@jakarta.annotation.Nullable LocalDate dateOfRegistration) { + this.dateOfRegistration = dateOfRegistration; + } + + public BusinessIdentification countryOfRegistration( + @jakarta.annotation.Nullable String countryOfRegistration) { + this.countryOfRegistration = countryOfRegistration; + return this; + } + + /** + * The ISO-3166 Alpha-2 country code where the business is registered. + * + * @return countryOfRegistration + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_COUNTRY_OF_REGISTRATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getCountryOfRegistration() { + return countryOfRegistration; + } + + @JsonProperty(JSON_PROPERTY_COUNTRY_OF_REGISTRATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCountryOfRegistration( + @jakarta.annotation.Nullable String countryOfRegistration) { + this.countryOfRegistration = countryOfRegistration; + } + /** Return true if this BusinessIdentification object is equal to o. */ @Override public boolean equals(Object o) { @@ -294,7 +352,11 @@ public boolean equals(Object o) { this.registrationNumber, businessIdentification.registrationNumber) && Objects.equals(this.postalAddress, businessIdentification.postalAddress) && Objects.equals(this.email, businessIdentification.email) - && Objects.equals(this.phone, businessIdentification.phone); + && Objects.equals(this.phone, businessIdentification.phone) + && Objects.equals( + this.dateOfRegistration, businessIdentification.dateOfRegistration) + && Objects.equals( + this.countryOfRegistration, businessIdentification.countryOfRegistration); } @Override @@ -307,7 +369,9 @@ public int hashCode() { registrationNumber, postalAddress, email, - phone); + phone, + dateOfRegistration, + countryOfRegistration); } @Override @@ -328,6 +392,12 @@ public String toString() { sb.append(" postalAddress: ").append(toIndentedString(postalAddress)).append("\n"); sb.append(" email: ").append(toIndentedString(email)).append("\n"); sb.append(" phone: ").append(toIndentedString(phone)).append("\n"); + sb.append(" dateOfRegistration: ") + .append(toIndentedString(dateOfRegistration)) + .append("\n"); + sb.append(" countryOfRegistration: ") + .append(toIndentedString(countryOfRegistration)) + .append("\n"); sb.append("}"); return sb.toString(); } @@ -452,6 +522,27 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getPhone())))); } + // add `dateOfRegistration` to the URL query string + if (getDateOfRegistration() != null) { + joiner.add( + String.format( + "%sdateOfRegistration%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getDateOfRegistration())))); + } + + // add `countryOfRegistration` to the URL query string + if (getCountryOfRegistration() != null) { + joiner.add( + String.format( + "%scountryOfRegistration%s=%s", + prefix, + suffix, + ApiClient.urlEncode( + ApiClient.valueToString(getCountryOfRegistration())))); + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/ConnectedAccount.java b/src/main/java/com/fireblocks/sdk/model/ConnectedAccount.java index 39820043..745fcf17 100644 --- a/src/main/java/com/fireblocks/sdk/model/ConnectedAccount.java +++ b/src/main/java/com/fireblocks/sdk/model/ConnectedAccount.java @@ -29,7 +29,10 @@ ConnectedAccount.JSON_PROPERTY_STATUS, ConnectedAccount.JSON_PROPERTY_TOTAL_BALANCE, ConnectedAccount.JSON_PROPERTY_MANIFEST, - ConnectedAccount.JSON_PROPERTY_PARENT_ID + ConnectedAccount.JSON_PROPERTY_PARENT_ID, + ConnectedAccount.JSON_PROPERTY_API_KEY, + ConnectedAccount.JSON_PROPERTY_PROVIDER_ACCOUNT_NAME, + ConnectedAccount.JSON_PROPERTY_ACCOUNT_TYPE }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -56,6 +59,15 @@ public class ConnectedAccount { public static final String JSON_PROPERTY_PARENT_ID = "parentId"; @jakarta.annotation.Nullable private String parentId; + public static final String JSON_PROPERTY_API_KEY = "apiKey"; + @jakarta.annotation.Nullable private String apiKey; + + public static final String JSON_PROPERTY_PROVIDER_ACCOUNT_NAME = "providerAccountName"; + @jakarta.annotation.Nullable private String providerAccountName; + + public static final String JSON_PROPERTY_ACCOUNT_TYPE = "accountType"; + @jakarta.annotation.Nonnull private ConnectedAccountType accountType; + public ConnectedAccount() {} @JsonCreator @@ -68,13 +80,16 @@ public ConnectedAccount( @JsonProperty(value = JSON_PROPERTY_TOTAL_BALANCE, required = true) ConnectedAccountTotalBalance totalBalance, @JsonProperty(value = JSON_PROPERTY_MANIFEST, required = true) - ConnectedAccountManifest manifest) { + ConnectedAccountManifest manifest, + @JsonProperty(value = JSON_PROPERTY_ACCOUNT_TYPE, required = true) + ConnectedAccountType accountType) { this.id = id; this.name = name; this.providerId = providerId; this.status = status; this.totalBalance = totalBalance; this.manifest = manifest; + this.accountType = accountType; } public ConnectedAccount id(@jakarta.annotation.Nonnull String id) { @@ -242,6 +257,77 @@ public void setParentId(@jakarta.annotation.Nullable String parentId) { this.parentId = parentId; } + public ConnectedAccount apiKey(@jakarta.annotation.Nullable String apiKey) { + this.apiKey = apiKey; + return this; + } + + /** + * The API key identifier used to connect this account. + * + * @return apiKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_API_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getApiKey() { + return apiKey; + } + + @JsonProperty(JSON_PROPERTY_API_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setApiKey(@jakarta.annotation.Nullable String apiKey) { + this.apiKey = apiKey; + } + + public ConnectedAccount providerAccountName( + @jakarta.annotation.Nullable String providerAccountName) { + this.providerAccountName = providerAccountName; + return this; + } + + /** + * The account name provided by the provider. + * + * @return providerAccountName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROVIDER_ACCOUNT_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getProviderAccountName() { + return providerAccountName; + } + + @JsonProperty(JSON_PROPERTY_PROVIDER_ACCOUNT_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setProviderAccountName(@jakarta.annotation.Nullable String providerAccountName) { + this.providerAccountName = providerAccountName; + } + + public ConnectedAccount accountType( + @jakarta.annotation.Nonnull ConnectedAccountType accountType) { + this.accountType = accountType; + return this; + } + + /** + * Get accountType + * + * @return accountType + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ACCOUNT_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ConnectedAccountType getAccountType() { + return accountType; + } + + @JsonProperty(JSON_PROPERTY_ACCOUNT_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAccountType(@jakarta.annotation.Nonnull ConnectedAccountType accountType) { + this.accountType = accountType; + } + /** Return true if this ConnectedAccount object is equal to o. */ @Override public boolean equals(Object o) { @@ -258,12 +344,25 @@ public boolean equals(Object o) { && Objects.equals(this.status, connectedAccount.status) && Objects.equals(this.totalBalance, connectedAccount.totalBalance) && Objects.equals(this.manifest, connectedAccount.manifest) - && Objects.equals(this.parentId, connectedAccount.parentId); + && Objects.equals(this.parentId, connectedAccount.parentId) + && Objects.equals(this.apiKey, connectedAccount.apiKey) + && Objects.equals(this.providerAccountName, connectedAccount.providerAccountName) + && Objects.equals(this.accountType, connectedAccount.accountType); } @Override public int hashCode() { - return Objects.hash(id, name, providerId, status, totalBalance, manifest, parentId); + return Objects.hash( + id, + name, + providerId, + status, + totalBalance, + manifest, + parentId, + apiKey, + providerAccountName, + accountType); } @Override @@ -277,6 +376,11 @@ public String toString() { sb.append(" totalBalance: ").append(toIndentedString(totalBalance)).append("\n"); sb.append(" manifest: ").append(toIndentedString(manifest)).append("\n"); sb.append(" parentId: ").append(toIndentedString(parentId)).append("\n"); + sb.append(" apiKey: ").append(toIndentedString(apiKey)).append("\n"); + sb.append(" providerAccountName: ") + .append(toIndentedString(providerAccountName)) + .append("\n"); + sb.append(" accountType: ").append(toIndentedString(accountType)).append("\n"); sb.append("}"); return sb.toString(); } @@ -382,6 +486,37 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getParentId())))); } + // add `apiKey` to the URL query string + if (getApiKey() != null) { + joiner.add( + String.format( + "%sapiKey%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getApiKey())))); + } + + // add `providerAccountName` to the URL query string + if (getProviderAccountName() != null) { + joiner.add( + String.format( + "%sproviderAccountName%s=%s", + prefix, + suffix, + ApiClient.urlEncode( + ApiClient.valueToString(getProviderAccountName())))); + } + + // add `accountType` to the URL query string + if (getAccountType() != null) { + joiner.add( + String.format( + "%saccountType%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAccountType())))); + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/ConnectedAccountType.java b/src/main/java/com/fireblocks/sdk/model/ConnectedAccountType.java new file mode 100644 index 00000000..0e883420 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/ConnectedAccountType.java @@ -0,0 +1,66 @@ +/* + * 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; + +/** Gets or Sets ConnectedAccountType */ +public enum ConnectedAccountType { + EXCHANGE("EXCHANGE"), + + FIAT("FIAT"), + + CONNECTED_ACCOUNT("CONNECTED_ACCOUNT"); + + private String value; + + ConnectedAccountType(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static ConnectedAccountType fromValue(String value) { + for (ConnectedAccountType b : ConnectedAccountType.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/ConnectedSingleAccountResponse.java b/src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponse.java index a6fac90d..ce4efb87 100644 --- a/src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponse.java +++ b/src/main/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponse.java @@ -32,6 +32,9 @@ ConnectedSingleAccountResponse.JSON_PROPERTY_TOTAL_BALANCE, ConnectedSingleAccountResponse.JSON_PROPERTY_MANIFEST, ConnectedSingleAccountResponse.JSON_PROPERTY_PARENT_ID, + ConnectedSingleAccountResponse.JSON_PROPERTY_API_KEY, + ConnectedSingleAccountResponse.JSON_PROPERTY_PROVIDER_ACCOUNT_NAME, + ConnectedSingleAccountResponse.JSON_PROPERTY_ACCOUNT_TYPE, ConnectedSingleAccountResponse.JSON_PROPERTY_SUB_ACCOUNTS_IDS }) @jakarta.annotation.Generated( @@ -59,6 +62,15 @@ public class ConnectedSingleAccountResponse { public static final String JSON_PROPERTY_PARENT_ID = "parentId"; @jakarta.annotation.Nullable private String parentId; + public static final String JSON_PROPERTY_API_KEY = "apiKey"; + @jakarta.annotation.Nullable private String apiKey; + + public static final String JSON_PROPERTY_PROVIDER_ACCOUNT_NAME = "providerAccountName"; + @jakarta.annotation.Nullable private String providerAccountName; + + public static final String JSON_PROPERTY_ACCOUNT_TYPE = "accountType"; + @jakarta.annotation.Nonnull private ConnectedAccountType accountType; + public static final String JSON_PROPERTY_SUB_ACCOUNTS_IDS = "subAccountsIds"; @jakarta.annotation.Nullable private List subAccountsIds; @@ -74,13 +86,16 @@ public ConnectedSingleAccountResponse( @JsonProperty(value = JSON_PROPERTY_TOTAL_BALANCE, required = true) ConnectedAccountTotalBalance totalBalance, @JsonProperty(value = JSON_PROPERTY_MANIFEST, required = true) - ConnectedAccountManifest manifest) { + ConnectedAccountManifest manifest, + @JsonProperty(value = JSON_PROPERTY_ACCOUNT_TYPE, required = true) + ConnectedAccountType accountType) { this.id = id; this.name = name; this.providerId = providerId; this.status = status; this.totalBalance = totalBalance; this.manifest = manifest; + this.accountType = accountType; } public ConnectedSingleAccountResponse id(@jakarta.annotation.Nonnull String id) { @@ -249,6 +264,77 @@ public void setParentId(@jakarta.annotation.Nullable String parentId) { this.parentId = parentId; } + public ConnectedSingleAccountResponse apiKey(@jakarta.annotation.Nullable String apiKey) { + this.apiKey = apiKey; + return this; + } + + /** + * The API key identifier used to connect this account. + * + * @return apiKey + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_API_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getApiKey() { + return apiKey; + } + + @JsonProperty(JSON_PROPERTY_API_KEY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setApiKey(@jakarta.annotation.Nullable String apiKey) { + this.apiKey = apiKey; + } + + public ConnectedSingleAccountResponse providerAccountName( + @jakarta.annotation.Nullable String providerAccountName) { + this.providerAccountName = providerAccountName; + return this; + } + + /** + * The account name provided by the provider. + * + * @return providerAccountName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROVIDER_ACCOUNT_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getProviderAccountName() { + return providerAccountName; + } + + @JsonProperty(JSON_PROPERTY_PROVIDER_ACCOUNT_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setProviderAccountName(@jakarta.annotation.Nullable String providerAccountName) { + this.providerAccountName = providerAccountName; + } + + public ConnectedSingleAccountResponse accountType( + @jakarta.annotation.Nonnull ConnectedAccountType accountType) { + this.accountType = accountType; + return this; + } + + /** + * Get accountType + * + * @return accountType + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ACCOUNT_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public ConnectedAccountType getAccountType() { + return accountType; + } + + @JsonProperty(JSON_PROPERTY_ACCOUNT_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAccountType(@jakarta.annotation.Nonnull ConnectedAccountType accountType) { + this.accountType = accountType; + } + public ConnectedSingleAccountResponse subAccountsIds( @jakarta.annotation.Nullable List subAccountsIds) { this.subAccountsIds = subAccountsIds; @@ -299,6 +385,11 @@ public boolean equals(Object o) { && Objects.equals(this.totalBalance, connectedSingleAccountResponse.totalBalance) && Objects.equals(this.manifest, connectedSingleAccountResponse.manifest) && Objects.equals(this.parentId, connectedSingleAccountResponse.parentId) + && Objects.equals(this.apiKey, connectedSingleAccountResponse.apiKey) + && Objects.equals( + this.providerAccountName, + connectedSingleAccountResponse.providerAccountName) + && Objects.equals(this.accountType, connectedSingleAccountResponse.accountType) && Objects.equals( this.subAccountsIds, connectedSingleAccountResponse.subAccountsIds); } @@ -306,7 +397,17 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( - id, name, providerId, status, totalBalance, manifest, parentId, subAccountsIds); + id, + name, + providerId, + status, + totalBalance, + manifest, + parentId, + apiKey, + providerAccountName, + accountType, + subAccountsIds); } @Override @@ -320,6 +421,11 @@ public String toString() { sb.append(" totalBalance: ").append(toIndentedString(totalBalance)).append("\n"); sb.append(" manifest: ").append(toIndentedString(manifest)).append("\n"); sb.append(" parentId: ").append(toIndentedString(parentId)).append("\n"); + sb.append(" apiKey: ").append(toIndentedString(apiKey)).append("\n"); + sb.append(" providerAccountName: ") + .append(toIndentedString(providerAccountName)) + .append("\n"); + sb.append(" accountType: ").append(toIndentedString(accountType)).append("\n"); sb.append(" subAccountsIds: ").append(toIndentedString(subAccountsIds)).append("\n"); sb.append("}"); return sb.toString(); @@ -426,6 +532,37 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getParentId())))); } + // add `apiKey` to the URL query string + if (getApiKey() != null) { + joiner.add( + String.format( + "%sapiKey%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getApiKey())))); + } + + // add `providerAccountName` to the URL query string + if (getProviderAccountName() != null) { + joiner.add( + String.format( + "%sproviderAccountName%s=%s", + prefix, + suffix, + ApiClient.urlEncode( + ApiClient.valueToString(getProviderAccountName())))); + } + + // add `accountType` to the URL query string + if (getAccountType() != null) { + joiner.add( + String.format( + "%saccountType%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAccountType())))); + } + // add `subAccountsIds` to the URL query string if (getSubAccountsIds() != null) { for (int i = 0; i < getSubAccountsIds().size(); i++) { diff --git a/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java b/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java index b9a04dde..ed9c0253 100644 --- a/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/CreateWebhookRequest.java @@ -28,7 +28,8 @@ CreateWebhookRequest.JSON_PROPERTY_URL, CreateWebhookRequest.JSON_PROPERTY_DESCRIPTION, CreateWebhookRequest.JSON_PROPERTY_EVENTS, - CreateWebhookRequest.JSON_PROPERTY_ENABLED + CreateWebhookRequest.JSON_PROPERTY_ENABLED, + CreateWebhookRequest.JSON_PROPERTY_MTLS }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -46,6 +47,9 @@ 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 CreateWebhookRequest() {} @JsonCreator @@ -157,6 +161,29 @@ public void setEnabled(@jakarta.annotation.Nullable Boolean enabled) { this.enabled = enabled; } + public CreateWebhookRequest mtls(@jakarta.annotation.Nullable WebhookMtls mtls) { + this.mtls = mtls; + return this; + } + + /** + * Get mtls + * + * @return mtls + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MTLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WebhookMtls getMtls() { + return mtls; + } + + @JsonProperty(JSON_PROPERTY_MTLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMtls(@jakarta.annotation.Nullable WebhookMtls mtls) { + this.mtls = mtls; + } + /** Return true if this CreateWebhookRequest object is equal to o. */ @Override public boolean equals(Object o) { @@ -170,12 +197,13 @@ public boolean equals(Object o) { return Objects.equals(this.url, createWebhookRequest.url) && Objects.equals(this.description, createWebhookRequest.description) && Objects.equals(this.events, createWebhookRequest.events) - && Objects.equals(this.enabled, createWebhookRequest.enabled); + && Objects.equals(this.enabled, createWebhookRequest.enabled) + && Objects.equals(this.mtls, createWebhookRequest.mtls); } @Override public int hashCode() { - return Objects.hash(url, description, events, enabled); + return Objects.hash(url, description, events, enabled, mtls); } @Override @@ -186,6 +214,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("}"); return sb.toString(); } @@ -282,6 +311,11 @@ 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)); + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2.java b/src/main/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2.java new file mode 100644 index 00000000..604bb4f0 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2.java @@ -0,0 +1,292 @@ +/* + * 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.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** OnchainTransactionsPagedResponse2 */ +@JsonPropertyOrder({ + OnchainTransactionsPagedResponse2.JSON_PROPERTY_DATA, + OnchainTransactionsPagedResponse2.JSON_PROPERTY_NEXT, + OnchainTransactionsPagedResponse2.JSON_PROPERTY_PREV, + OnchainTransactionsPagedResponse2.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class OnchainTransactionsPagedResponse2 { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public static final String JSON_PROPERTY_PREV = "prev"; + @jakarta.annotation.Nullable private String prev; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nullable private BigDecimal total; + + public OnchainTransactionsPagedResponse2() {} + + @JsonCreator + public OnchainTransactionsPagedResponse2( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public OnchainTransactionsPagedResponse2 data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public OnchainTransactionsPagedResponse2 addDataItem(OnchainTransaction dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of onchain transactions + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public OnchainTransactionsPagedResponse2 next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for next page + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + public OnchainTransactionsPagedResponse2 prev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + return this; + } + + /** + * Cursor for previous page + * + * @return prev + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPrev() { + return prev; + } + + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPrev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + } + + public OnchainTransactionsPagedResponse2 total(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + return this; + } + + /** + * Total count of items + * + * @return total + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTotal(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + } + + /** Return true if this OnchainTransactionsPagedResponse-2 object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OnchainTransactionsPagedResponse2 onchainTransactionsPagedResponse2 = + (OnchainTransactionsPagedResponse2) o; + return Objects.equals(this.data, onchainTransactionsPagedResponse2.data) + && Objects.equals(this.next, onchainTransactionsPagedResponse2.next) + && Objects.equals(this.prev, onchainTransactionsPagedResponse2.prev) + && Objects.equals(this.total, onchainTransactionsPagedResponse2.total); + } + + @Override + public int hashCode() { + return Objects.hash(data, next, prev, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class OnchainTransactionsPagedResponse2 {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append(" prev: ").append(toIndentedString(prev)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + // add `prev` to the URL query string + if (getPrev() != null) { + joiner.add( + String.format( + "%sprev%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPrev())))); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/OnchainTransferEvent.java b/src/main/java/com/fireblocks/sdk/model/OnchainTransferEvent.java new file mode 100644 index 00000000..1c5ddd0c --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/OnchainTransferEvent.java @@ -0,0 +1,659 @@ +/* + * 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.time.OffsetDateTime; +import java.util.Objects; +import java.util.StringJoiner; +import java.util.UUID; + +/** OnchainTransferEvent */ +@JsonPropertyOrder({ + OnchainTransferEvent.JSON_PROPERTY_ID, + OnchainTransferEvent.JSON_PROPERTY_TRANSACTION_HASH, + OnchainTransferEvent.JSON_PROPERTY_LOG_INDEX, + OnchainTransferEvent.JSON_PROPERTY_CONTRACT_ADDRESS, + OnchainTransferEvent.JSON_PROPERTY_FROM_ADDRESS, + OnchainTransferEvent.JSON_PROPERTY_TO_ADDRESS, + OnchainTransferEvent.JSON_PROPERTY_VALUE, + OnchainTransferEvent.JSON_PROPERTY_CHAIN_ID, + OnchainTransferEvent.JSON_PROPERTY_BASE_ASSET_ID, + OnchainTransferEvent.JSON_PROPERTY_BLOCK_NUMBER, + OnchainTransferEvent.JSON_PROPERTY_BLOCK_HASH, + OnchainTransferEvent.JSON_PROPERTY_BLOCK_TIMESTAMP, + OnchainTransferEvent.JSON_PROPERTY_EVENT_NAME +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class OnchainTransferEvent { + public static final String JSON_PROPERTY_ID = "id"; + @jakarta.annotation.Nonnull private UUID id; + + public static final String JSON_PROPERTY_TRANSACTION_HASH = "transactionHash"; + @jakarta.annotation.Nonnull private String transactionHash; + + public static final String JSON_PROPERTY_LOG_INDEX = "logIndex"; + @jakarta.annotation.Nonnull private String logIndex; + + public static final String JSON_PROPERTY_CONTRACT_ADDRESS = "contractAddress"; + @jakarta.annotation.Nonnull private String contractAddress; + + public static final String JSON_PROPERTY_FROM_ADDRESS = "fromAddress"; + @jakarta.annotation.Nonnull private String fromAddress; + + public static final String JSON_PROPERTY_TO_ADDRESS = "toAddress"; + @jakarta.annotation.Nonnull private String toAddress; + + public static final String JSON_PROPERTY_VALUE = "value"; + @jakarta.annotation.Nonnull private String value; + + public static final String JSON_PROPERTY_CHAIN_ID = "chainId"; + @jakarta.annotation.Nonnull private Integer chainId; + + public static final String JSON_PROPERTY_BASE_ASSET_ID = "baseAssetId"; + @jakarta.annotation.Nonnull private String baseAssetId; + + public static final String JSON_PROPERTY_BLOCK_NUMBER = "blockNumber"; + @jakarta.annotation.Nonnull private Integer blockNumber; + + public static final String JSON_PROPERTY_BLOCK_HASH = "blockHash"; + @jakarta.annotation.Nonnull private String blockHash; + + public static final String JSON_PROPERTY_BLOCK_TIMESTAMP = "blockTimestamp"; + @jakarta.annotation.Nonnull private OffsetDateTime blockTimestamp; + + public static final String JSON_PROPERTY_EVENT_NAME = "eventName"; + @jakarta.annotation.Nonnull private String eventName; + + public OnchainTransferEvent() {} + + @JsonCreator + public OnchainTransferEvent( + @JsonProperty(value = JSON_PROPERTY_ID, required = true) UUID id, + @JsonProperty(value = JSON_PROPERTY_TRANSACTION_HASH, required = true) + String transactionHash, + @JsonProperty(value = JSON_PROPERTY_LOG_INDEX, required = true) String logIndex, + @JsonProperty(value = JSON_PROPERTY_CONTRACT_ADDRESS, required = true) + String contractAddress, + @JsonProperty(value = JSON_PROPERTY_FROM_ADDRESS, required = true) String fromAddress, + @JsonProperty(value = JSON_PROPERTY_TO_ADDRESS, required = true) String toAddress, + @JsonProperty(value = JSON_PROPERTY_VALUE, required = true) String value, + @JsonProperty(value = JSON_PROPERTY_CHAIN_ID, required = true) Integer chainId, + @JsonProperty(value = JSON_PROPERTY_BASE_ASSET_ID, required = true) String baseAssetId, + @JsonProperty(value = JSON_PROPERTY_BLOCK_NUMBER, required = true) Integer blockNumber, + @JsonProperty(value = JSON_PROPERTY_BLOCK_HASH, required = true) String blockHash, + @JsonProperty(value = JSON_PROPERTY_BLOCK_TIMESTAMP, required = true) + OffsetDateTime blockTimestamp, + @JsonProperty(value = JSON_PROPERTY_EVENT_NAME, required = true) String eventName) { + this.id = id; + this.transactionHash = transactionHash; + this.logIndex = logIndex; + this.contractAddress = contractAddress; + this.fromAddress = fromAddress; + this.toAddress = toAddress; + this.value = value; + this.chainId = chainId; + this.baseAssetId = baseAssetId; + this.blockNumber = blockNumber; + this.blockHash = blockHash; + this.blockTimestamp = blockTimestamp; + this.eventName = eventName; + } + + public OnchainTransferEvent id(@jakarta.annotation.Nonnull UUID id) { + this.id = id; + return this; + } + + /** + * Unique identifier for the transfer event + * + * @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 OnchainTransferEvent transactionHash( + @jakarta.annotation.Nonnull String transactionHash) { + this.transactionHash = transactionHash; + return this; + } + + /** + * Hash of the transaction containing this transfer + * + * @return transactionHash + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TRANSACTION_HASH) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTransactionHash() { + return transactionHash; + } + + @JsonProperty(JSON_PROPERTY_TRANSACTION_HASH) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTransactionHash(@jakarta.annotation.Nonnull String transactionHash) { + this.transactionHash = transactionHash; + } + + public OnchainTransferEvent logIndex(@jakarta.annotation.Nonnull String logIndex) { + this.logIndex = logIndex; + return this; + } + + /** + * Index of the log within the transaction + * + * @return logIndex + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_LOG_INDEX) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getLogIndex() { + return logIndex; + } + + @JsonProperty(JSON_PROPERTY_LOG_INDEX) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setLogIndex(@jakarta.annotation.Nonnull String logIndex) { + this.logIndex = logIndex; + } + + public OnchainTransferEvent contractAddress( + @jakarta.annotation.Nonnull String contractAddress) { + this.contractAddress = contractAddress; + return this; + } + + /** + * Address of the token contract + * + * @return contractAddress + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CONTRACT_ADDRESS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getContractAddress() { + return contractAddress; + } + + @JsonProperty(JSON_PROPERTY_CONTRACT_ADDRESS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setContractAddress(@jakarta.annotation.Nonnull String contractAddress) { + this.contractAddress = contractAddress; + } + + public OnchainTransferEvent fromAddress(@jakarta.annotation.Nonnull String fromAddress) { + this.fromAddress = fromAddress; + return this; + } + + /** + * Address that sent the tokens + * + * @return fromAddress + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_FROM_ADDRESS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getFromAddress() { + return fromAddress; + } + + @JsonProperty(JSON_PROPERTY_FROM_ADDRESS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setFromAddress(@jakarta.annotation.Nonnull String fromAddress) { + this.fromAddress = fromAddress; + } + + public OnchainTransferEvent toAddress(@jakarta.annotation.Nonnull String toAddress) { + this.toAddress = toAddress; + return this; + } + + /** + * Address that received the tokens + * + * @return toAddress + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TO_ADDRESS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getToAddress() { + return toAddress; + } + + @JsonProperty(JSON_PROPERTY_TO_ADDRESS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setToAddress(@jakarta.annotation.Nonnull String toAddress) { + this.toAddress = toAddress; + } + + public OnchainTransferEvent value(@jakarta.annotation.Nonnull String value) { + this.value = value; + return this; + } + + /** + * Amount of tokens transferred (in smallest unit) + * + * @return value + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getValue() { + return value; + } + + @JsonProperty(JSON_PROPERTY_VALUE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setValue(@jakarta.annotation.Nonnull String value) { + this.value = value; + } + + public OnchainTransferEvent chainId(@jakarta.annotation.Nonnull Integer chainId) { + this.chainId = chainId; + return this; + } + + /** + * Chain ID of the blockchain + * + * @return chainId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CHAIN_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Integer getChainId() { + return chainId; + } + + @JsonProperty(JSON_PROPERTY_CHAIN_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setChainId(@jakarta.annotation.Nonnull Integer chainId) { + this.chainId = chainId; + } + + public OnchainTransferEvent baseAssetId(@jakarta.annotation.Nonnull String baseAssetId) { + this.baseAssetId = baseAssetId; + return this; + } + + /** + * The blockchain base asset identifier + * + * @return baseAssetId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_BASE_ASSET_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getBaseAssetId() { + return baseAssetId; + } + + @JsonProperty(JSON_PROPERTY_BASE_ASSET_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setBaseAssetId(@jakarta.annotation.Nonnull String baseAssetId) { + this.baseAssetId = baseAssetId; + } + + public OnchainTransferEvent blockNumber(@jakarta.annotation.Nonnull Integer blockNumber) { + this.blockNumber = blockNumber; + return this; + } + + /** + * Block number containing this transfer + * + * @return blockNumber + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_BLOCK_NUMBER) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Integer getBlockNumber() { + return blockNumber; + } + + @JsonProperty(JSON_PROPERTY_BLOCK_NUMBER) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setBlockNumber(@jakarta.annotation.Nonnull Integer blockNumber) { + this.blockNumber = blockNumber; + } + + public OnchainTransferEvent blockHash(@jakarta.annotation.Nonnull String blockHash) { + this.blockHash = blockHash; + return this; + } + + /** + * Hash of the block containing this transfer + * + * @return blockHash + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_BLOCK_HASH) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getBlockHash() { + return blockHash; + } + + @JsonProperty(JSON_PROPERTY_BLOCK_HASH) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setBlockHash(@jakarta.annotation.Nonnull String blockHash) { + this.blockHash = blockHash; + } + + public OnchainTransferEvent blockTimestamp( + @jakarta.annotation.Nonnull OffsetDateTime blockTimestamp) { + this.blockTimestamp = blockTimestamp; + return this; + } + + /** + * Timestamp when the block was mined + * + * @return blockTimestamp + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_BLOCK_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public OffsetDateTime getBlockTimestamp() { + return blockTimestamp; + } + + @JsonProperty(JSON_PROPERTY_BLOCK_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setBlockTimestamp(@jakarta.annotation.Nonnull OffsetDateTime blockTimestamp) { + this.blockTimestamp = blockTimestamp; + } + + public OnchainTransferEvent eventName(@jakarta.annotation.Nonnull String eventName) { + this.eventName = eventName; + return this; + } + + /** + * Name of the event (typically \"Transfer\") + * + * @return eventName + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_EVENT_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getEventName() { + return eventName; + } + + @JsonProperty(JSON_PROPERTY_EVENT_NAME) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setEventName(@jakarta.annotation.Nonnull String eventName) { + this.eventName = eventName; + } + + /** Return true if this OnchainTransferEvent object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OnchainTransferEvent onchainTransferEvent = (OnchainTransferEvent) o; + return Objects.equals(this.id, onchainTransferEvent.id) + && Objects.equals(this.transactionHash, onchainTransferEvent.transactionHash) + && Objects.equals(this.logIndex, onchainTransferEvent.logIndex) + && Objects.equals(this.contractAddress, onchainTransferEvent.contractAddress) + && Objects.equals(this.fromAddress, onchainTransferEvent.fromAddress) + && Objects.equals(this.toAddress, onchainTransferEvent.toAddress) + && Objects.equals(this.value, onchainTransferEvent.value) + && Objects.equals(this.chainId, onchainTransferEvent.chainId) + && Objects.equals(this.baseAssetId, onchainTransferEvent.baseAssetId) + && Objects.equals(this.blockNumber, onchainTransferEvent.blockNumber) + && Objects.equals(this.blockHash, onchainTransferEvent.blockHash) + && Objects.equals(this.blockTimestamp, onchainTransferEvent.blockTimestamp) + && Objects.equals(this.eventName, onchainTransferEvent.eventName); + } + + @Override + public int hashCode() { + return Objects.hash( + id, + transactionHash, + logIndex, + contractAddress, + fromAddress, + toAddress, + value, + chainId, + baseAssetId, + blockNumber, + blockHash, + blockTimestamp, + eventName); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class OnchainTransferEvent {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" transactionHash: ").append(toIndentedString(transactionHash)).append("\n"); + sb.append(" logIndex: ").append(toIndentedString(logIndex)).append("\n"); + sb.append(" contractAddress: ").append(toIndentedString(contractAddress)).append("\n"); + sb.append(" fromAddress: ").append(toIndentedString(fromAddress)).append("\n"); + sb.append(" toAddress: ").append(toIndentedString(toAddress)).append("\n"); + sb.append(" value: ").append(toIndentedString(value)).append("\n"); + sb.append(" chainId: ").append(toIndentedString(chainId)).append("\n"); + sb.append(" baseAssetId: ").append(toIndentedString(baseAssetId)).append("\n"); + sb.append(" blockNumber: ").append(toIndentedString(blockNumber)).append("\n"); + sb.append(" blockHash: ").append(toIndentedString(blockHash)).append("\n"); + sb.append(" blockTimestamp: ").append(toIndentedString(blockTimestamp)).append("\n"); + sb.append(" eventName: ").append(toIndentedString(eventName)).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 `transactionHash` to the URL query string + if (getTransactionHash() != null) { + joiner.add( + String.format( + "%stransactionHash%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTransactionHash())))); + } + + // add `logIndex` to the URL query string + if (getLogIndex() != null) { + joiner.add( + String.format( + "%slogIndex%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getLogIndex())))); + } + + // add `contractAddress` to the URL query string + if (getContractAddress() != null) { + joiner.add( + String.format( + "%scontractAddress%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getContractAddress())))); + } + + // add `fromAddress` to the URL query string + if (getFromAddress() != null) { + joiner.add( + String.format( + "%sfromAddress%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getFromAddress())))); + } + + // add `toAddress` to the URL query string + if (getToAddress() != null) { + joiner.add( + String.format( + "%stoAddress%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getToAddress())))); + } + + // add `value` to the URL query string + if (getValue() != null) { + joiner.add( + String.format( + "%svalue%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getValue())))); + } + + // add `chainId` to the URL query string + if (getChainId() != null) { + joiner.add( + String.format( + "%schainId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getChainId())))); + } + + // add `baseAssetId` to the URL query string + if (getBaseAssetId() != null) { + joiner.add( + String.format( + "%sbaseAssetId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getBaseAssetId())))); + } + + // add `blockNumber` to the URL query string + if (getBlockNumber() != null) { + joiner.add( + String.format( + "%sblockNumber%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getBlockNumber())))); + } + + // add `blockHash` to the URL query string + if (getBlockHash() != null) { + joiner.add( + String.format( + "%sblockHash%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getBlockHash())))); + } + + // add `blockTimestamp` to the URL query string + if (getBlockTimestamp() != null) { + joiner.add( + String.format( + "%sblockTimestamp%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getBlockTimestamp())))); + } + + // add `eventName` to the URL query string + if (getEventName() != null) { + joiner.add( + String.format( + "%seventName%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getEventName())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponse.java b/src/main/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponse.java new file mode 100644 index 00000000..2bb5f85a --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponse.java @@ -0,0 +1,292 @@ +/* + * 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.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** OnchainTransfersPagedResponse */ +@JsonPropertyOrder({ + OnchainTransfersPagedResponse.JSON_PROPERTY_DATA, + OnchainTransfersPagedResponse.JSON_PROPERTY_NEXT, + OnchainTransfersPagedResponse.JSON_PROPERTY_PREV, + OnchainTransfersPagedResponse.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class OnchainTransfersPagedResponse { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public static final String JSON_PROPERTY_PREV = "prev"; + @jakarta.annotation.Nullable private String prev; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nullable private BigDecimal total; + + public OnchainTransfersPagedResponse() {} + + @JsonCreator + public OnchainTransfersPagedResponse( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public OnchainTransfersPagedResponse data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public OnchainTransfersPagedResponse addDataItem(OnchainTransferEvent dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of ERC20 transfer events + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public OnchainTransfersPagedResponse next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for next page + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + public OnchainTransfersPagedResponse prev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + return this; + } + + /** + * Cursor for previous page + * + * @return prev + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPrev() { + return prev; + } + + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPrev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + } + + public OnchainTransfersPagedResponse total(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + return this; + } + + /** + * Total count of items + * + * @return total + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTotal(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + } + + /** Return true if this OnchainTransfersPagedResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OnchainTransfersPagedResponse onchainTransfersPagedResponse = + (OnchainTransfersPagedResponse) o; + return Objects.equals(this.data, onchainTransfersPagedResponse.data) + && Objects.equals(this.next, onchainTransfersPagedResponse.next) + && Objects.equals(this.prev, onchainTransfersPagedResponse.prev) + && Objects.equals(this.total, onchainTransfersPagedResponse.total); + } + + @Override + public int hashCode() { + return Objects.hash(data, next, prev, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class OnchainTransfersPagedResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append(" prev: ").append(toIndentedString(prev)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + // add `prev` to the URL query string + if (getPrev() != null) { + joiner.add( + String.format( + "%sprev%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPrev())))); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileType.java b/src/main/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileType.java new file mode 100644 index 00000000..e4eaf486 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileType.java @@ -0,0 +1,80 @@ +/* + * 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; + +/** Supported file formats for order requirement file uploads. */ +public enum OrderRequirementAllowedFileType { + PDF("PDF"), + + JPEG("JPEG"), + + PNG("PNG"), + + HEIC("HEIC"), + + HEIF("HEIF"), + + DOC("DOC"), + + DOCX("DOCX"), + + XLS("XLS"), + + XLSX("XLSX"), + + CSV("CSV"); + + private String value; + + OrderRequirementAllowedFileType(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static OrderRequirementAllowedFileType fromValue(String value) { + for (OrderRequirementAllowedFileType b : OrderRequirementAllowedFileType.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/OrderRequirementDetails.java b/src/main/java/com/fireblocks/sdk/model/OrderRequirementDetails.java new file mode 100644 index 00000000..28968e8d --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/OrderRequirementDetails.java @@ -0,0 +1,306 @@ +/* + * 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.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * Order requirement details for an order that is awaiting compliance requirements. Returned by GET + * /trading/orders/{orderId}/requirement. + */ +@JsonPropertyOrder({ + OrderRequirementDetails.JSON_PROPERTY_REQUIREMENT_ID, + OrderRequirementDetails.JSON_PROPERTY_DUE_BY, + OrderRequirementDetails.JSON_PROPERTY_REQUIRED_DATA, + OrderRequirementDetails.JSON_PROPERTY_REQUIRED_FILES +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class OrderRequirementDetails { + public static final String JSON_PROPERTY_REQUIREMENT_ID = "requirementId"; + @jakarta.annotation.Nonnull private String requirementId; + + public static final String JSON_PROPERTY_DUE_BY = "dueBy"; + @jakarta.annotation.Nullable private OffsetDateTime dueBy; + + public static final String JSON_PROPERTY_REQUIRED_DATA = "requiredData"; + @jakarta.annotation.Nonnull private String requiredData; + + public static final String JSON_PROPERTY_REQUIRED_FILES = "requiredFiles"; + @jakarta.annotation.Nonnull private List requiredFiles; + + public OrderRequirementDetails() {} + + @JsonCreator + public OrderRequirementDetails( + @JsonProperty(value = JSON_PROPERTY_REQUIREMENT_ID, required = true) + String requirementId, + @JsonProperty(value = JSON_PROPERTY_REQUIRED_DATA, required = true) String requiredData, + @JsonProperty(value = JSON_PROPERTY_REQUIRED_FILES, required = true) + List requiredFiles) { + this.requirementId = requirementId; + this.requiredData = requiredData; + this.requiredFiles = requiredFiles; + } + + public OrderRequirementDetails requirementId(@jakarta.annotation.Nonnull String requirementId) { + this.requirementId = requirementId; + return this; + } + + /** + * Unique identifier of the order requirement request as issued by the provider. + * + * @return requirementId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_REQUIREMENT_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getRequirementId() { + return requirementId; + } + + @JsonProperty(JSON_PROPERTY_REQUIREMENT_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setRequirementId(@jakarta.annotation.Nonnull String requirementId) { + this.requirementId = requirementId; + } + + public OrderRequirementDetails dueBy(@jakarta.annotation.Nullable OffsetDateTime dueBy) { + this.dueBy = dueBy; + return this; + } + + /** + * ISO-8601 timestamp indicating when the order requirement submission is due. + * + * @return dueBy + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DUE_BY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public OffsetDateTime getDueBy() { + return dueBy; + } + + @JsonProperty(JSON_PROPERTY_DUE_BY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDueBy(@jakarta.annotation.Nullable OffsetDateTime dueBy) { + this.dueBy = dueBy; + } + + public OrderRequirementDetails requiredData(@jakarta.annotation.Nonnull String requiredData) { + this.requiredData = requiredData; + return this; + } + + /** + * A JSON Schema (Draft-7) in string format describing the shape of the `data` object + * expected on the corresponding POST /trading/orders/{orderId}/requirement/data request. The + * schema is the contract: the client builds the `data` payload to match it, and SDKs + * can validate before sending. The string content is expected to be valid JSON + * (application/json). + * + * @return requiredData + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_REQUIRED_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getRequiredData() { + return requiredData; + } + + @JsonProperty(JSON_PROPERTY_REQUIRED_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setRequiredData(@jakarta.annotation.Nonnull String requiredData) { + this.requiredData = requiredData; + } + + public OrderRequirementDetails requiredFiles( + @jakarta.annotation.Nonnull List requiredFiles) { + this.requiredFiles = requiredFiles; + return this; + } + + public OrderRequirementDetails addRequiredFilesItem(OrderRequirementFile requiredFilesItem) { + if (this.requiredFiles == null) { + this.requiredFiles = new ArrayList<>(); + } + this.requiredFiles.add(requiredFilesItem); + return this; + } + + /** + * Descriptors for files the provider requires as part of the order requirement response. Empty + * when no files are required. Each entry's `fileKey` is used to correlate uploads + * on the corresponding upload request. + * + * @return requiredFiles + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_REQUIRED_FILES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getRequiredFiles() { + return requiredFiles; + } + + @JsonProperty(JSON_PROPERTY_REQUIRED_FILES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setRequiredFiles( + @jakarta.annotation.Nonnull List requiredFiles) { + this.requiredFiles = requiredFiles; + } + + /** Return true if this OrderRequirementDetails object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OrderRequirementDetails orderRequirementDetails = (OrderRequirementDetails) o; + return Objects.equals(this.requirementId, orderRequirementDetails.requirementId) + && Objects.equals(this.dueBy, orderRequirementDetails.dueBy) + && Objects.equals(this.requiredData, orderRequirementDetails.requiredData) + && Objects.equals(this.requiredFiles, orderRequirementDetails.requiredFiles); + } + + @Override + public int hashCode() { + return Objects.hash(requirementId, dueBy, requiredData, requiredFiles); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class OrderRequirementDetails {\n"); + sb.append(" requirementId: ").append(toIndentedString(requirementId)).append("\n"); + sb.append(" dueBy: ").append(toIndentedString(dueBy)).append("\n"); + sb.append(" requiredData: ").append(toIndentedString(requiredData)).append("\n"); + sb.append(" requiredFiles: ").append(toIndentedString(requiredFiles)).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 `requirementId` to the URL query string + if (getRequirementId() != null) { + joiner.add( + String.format( + "%srequirementId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getRequirementId())))); + } + + // add `dueBy` to the URL query string + if (getDueBy() != null) { + joiner.add( + String.format( + "%sdueBy%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getDueBy())))); + } + + // add `requiredData` to the URL query string + if (getRequiredData() != null) { + joiner.add( + String.format( + "%srequiredData%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getRequiredData())))); + } + + // add `requiredFiles` to the URL query string + if (getRequiredFiles() != null) { + for (int i = 0; i < getRequiredFiles().size(); i++) { + if (getRequiredFiles().get(i) != null) { + joiner.add( + getRequiredFiles() + .get(i) + .toUrlQueryString( + String.format( + "%srequiredFiles%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/OrderRequirementFile.java b/src/main/java/com/fireblocks/sdk/model/OrderRequirementFile.java new file mode 100644 index 00000000..e87acecd --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/OrderRequirementFile.java @@ -0,0 +1,254 @@ +/* + * 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; + +/** A file the provider requires as part of the order requirement response. */ +@JsonPropertyOrder({ + OrderRequirementFile.JSON_PROPERTY_FILE_KEY, + OrderRequirementFile.JSON_PROPERTY_DESCRIPTION, + OrderRequirementFile.JSON_PROPERTY_ALLOWED_FILE_TYPES +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class OrderRequirementFile { + public static final String JSON_PROPERTY_FILE_KEY = "fileKey"; + @jakarta.annotation.Nonnull private String fileKey; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + @jakarta.annotation.Nonnull private String description; + + public static final String JSON_PROPERTY_ALLOWED_FILE_TYPES = "allowedFileTypes"; + @jakarta.annotation.Nonnull private List allowedFileTypes; + + public OrderRequirementFile() {} + + @JsonCreator + public OrderRequirementFile( + @JsonProperty(value = JSON_PROPERTY_FILE_KEY, required = true) String fileKey, + @JsonProperty(value = JSON_PROPERTY_DESCRIPTION, required = true) String description, + @JsonProperty(value = JSON_PROPERTY_ALLOWED_FILE_TYPES, required = true) + List allowedFileTypes) { + this.fileKey = fileKey; + this.description = description; + this.allowedFileTypes = allowedFileTypes; + } + + public OrderRequirementFile fileKey(@jakarta.annotation.Nonnull String fileKey) { + this.fileKey = fileKey; + return this; + } + + /** + * Stable identifier for this required file. Used to correlate uploads on submission. + * + * @return fileKey + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_FILE_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getFileKey() { + return fileKey; + } + + @JsonProperty(JSON_PROPERTY_FILE_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setFileKey(@jakarta.annotation.Nonnull String fileKey) { + this.fileKey = fileKey; + } + + public OrderRequirementFile description(@jakarta.annotation.Nonnull String description) { + this.description = description; + return this; + } + + /** + * Human-readable description of what the file should contain. + * + * @return description + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getDescription() { + return description; + } + + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setDescription(@jakarta.annotation.Nonnull String description) { + this.description = description; + } + + public OrderRequirementFile allowedFileTypes( + @jakarta.annotation.Nonnull List allowedFileTypes) { + this.allowedFileTypes = allowedFileTypes; + return this; + } + + public OrderRequirementFile addAllowedFileTypesItem( + OrderRequirementAllowedFileType allowedFileTypesItem) { + if (this.allowedFileTypes == null) { + this.allowedFileTypes = new ArrayList<>(); + } + this.allowedFileTypes.add(allowedFileTypesItem); + return this; + } + + /** + * File formats the provider accepts for this entry. + * + * @return allowedFileTypes + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ALLOWED_FILE_TYPES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getAllowedFileTypes() { + return allowedFileTypes; + } + + @JsonProperty(JSON_PROPERTY_ALLOWED_FILE_TYPES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAllowedFileTypes( + @jakarta.annotation.Nonnull List allowedFileTypes) { + this.allowedFileTypes = allowedFileTypes; + } + + /** Return true if this OrderRequirementFile object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OrderRequirementFile orderRequirementFile = (OrderRequirementFile) o; + return Objects.equals(this.fileKey, orderRequirementFile.fileKey) + && Objects.equals(this.description, orderRequirementFile.description) + && Objects.equals(this.allowedFileTypes, orderRequirementFile.allowedFileTypes); + } + + @Override + public int hashCode() { + return Objects.hash(fileKey, description, allowedFileTypes); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class OrderRequirementFile {\n"); + sb.append(" fileKey: ").append(toIndentedString(fileKey)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" allowedFileTypes: ").append(toIndentedString(allowedFileTypes)).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 `fileKey` to the URL query string + if (getFileKey() != null) { + joiner.add( + String.format( + "%sfileKey%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getFileKey())))); + } + + // add `description` to the URL query string + if (getDescription() != null) { + joiner.add( + String.format( + "%sdescription%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getDescription())))); + } + + // add `allowedFileTypes` to the URL query string + if (getAllowedFileTypes() != null) { + for (int i = 0; i < getAllowedFileTypes().size(); i++) { + if (getAllowedFileTypes().get(i) != null) { + joiner.add( + String.format( + "%sallowedFileTypes%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, i, containerSuffix), + ApiClient.urlEncode( + ApiClient.valueToString( + getAllowedFileTypes().get(i))))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/OrderStatus.java b/src/main/java/com/fireblocks/sdk/model/OrderStatus.java index 1f315813..0903fbd3 100644 --- a/src/main/java/com/fireblocks/sdk/model/OrderStatus.java +++ b/src/main/java/com/fireblocks/sdk/model/OrderStatus.java @@ -22,6 +22,8 @@ public enum OrderStatus { AWAITING_PAYMENT("AWAITING_PAYMENT"), + AWAITING_INFORMATION("AWAITING_INFORMATION"), + PENDING_USER_ACTION("PENDING_USER_ACTION"), PROCESSING("PROCESSING"), diff --git a/src/main/java/com/fireblocks/sdk/model/PersonalIdentification.java b/src/main/java/com/fireblocks/sdk/model/PersonalIdentification.java index 9ca4a324..4ca59393 100644 --- a/src/main/java/com/fireblocks/sdk/model/PersonalIdentification.java +++ b/src/main/java/com/fireblocks/sdk/model/PersonalIdentification.java @@ -19,6 +19,8 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fireblocks.sdk.ApiClient; import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import java.util.StringJoiner; @@ -35,7 +37,9 @@ PersonalIdentification.JSON_PROPERTY_ID_NUMBER, PersonalIdentification.JSON_PROPERTY_ID_TYPE, PersonalIdentification.JSON_PROPERTY_ADDITIONAL_ID_NUMBER, - PersonalIdentification.JSON_PROPERTY_ADDITIONAL_ID_TYPE + PersonalIdentification.JSON_PROPERTY_ADDITIONAL_ID_TYPE, + PersonalIdentification.JSON_PROPERTY_NATIONALITY, + PersonalIdentification.JSON_PROPERTY_IDENTIFICATION_DOCUMENTS }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -78,6 +82,14 @@ public class PersonalIdentification { public static final String JSON_PROPERTY_ADDITIONAL_ID_TYPE = "additionalIdType"; @jakarta.annotation.Nullable private PersonalIdentificationType additionalIdType; + public static final String JSON_PROPERTY_NATIONALITY = "nationality"; + @jakarta.annotation.Nullable private String nationality; + + public static final String JSON_PROPERTY_IDENTIFICATION_DOCUMENTS = "identificationDocuments"; + + @jakarta.annotation.Nullable + private List identificationDocuments; + public PersonalIdentification() {} @JsonCreator @@ -298,11 +310,12 @@ public PersonalIdentification idNumber(@jakarta.annotation.Nullable String idNum } /** - * The identification number corresponding to the primary identification document type specified - * in idType + * Deprecated. Use identificationDocuments instead. * * @return idNumber + * @deprecated */ + @Deprecated @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_ID_NUMBER) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) @@ -323,10 +336,12 @@ public PersonalIdentification idType( } /** - * Get idType + * Deprecated. Use identificationDocuments instead. * * @return idType + * @deprecated */ + @Deprecated @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_ID_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) @@ -347,11 +362,12 @@ public PersonalIdentification additionalIdNumber( } /** - * The identification number corresponding to the additional identification document type - * specified in additionalIdType + * Deprecated. Use identificationDocuments instead. * * @return additionalIdNumber + * @deprecated */ + @Deprecated @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_ADDITIONAL_ID_NUMBER) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) @@ -372,10 +388,12 @@ public PersonalIdentification additionalIdType( } /** - * Get additionalIdType + * Deprecated. Use identificationDocuments instead. * * @return additionalIdType + * @deprecated */ + @Deprecated @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_ADDITIONAL_ID_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) @@ -390,6 +408,65 @@ public void setAdditionalIdType( this.additionalIdType = additionalIdType; } + public PersonalIdentification nationality(@jakarta.annotation.Nullable String nationality) { + this.nationality = nationality; + return this; + } + + /** + * The ISO-3166 Alpha-2 country code representing the individual's nationality. + * + * @return nationality + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NATIONALITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNationality() { + return nationality; + } + + @JsonProperty(JSON_PROPERTY_NATIONALITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNationality(@jakarta.annotation.Nullable String nationality) { + this.nationality = nationality; + } + + public PersonalIdentification identificationDocuments( + @jakarta.annotation.Nullable + List identificationDocuments) { + this.identificationDocuments = identificationDocuments; + return this; + } + + public PersonalIdentification addIdentificationDocumentsItem( + PersonalIdentificationDocument identificationDocumentsItem) { + if (this.identificationDocuments == null) { + this.identificationDocuments = new ArrayList<>(); + } + this.identificationDocuments.add(identificationDocumentsItem); + return this; + } + + /** + * List of identification documents for the individual. + * + * @return identificationDocuments + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_IDENTIFICATION_DOCUMENTS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getIdentificationDocuments() { + return identificationDocuments; + } + + @JsonProperty(JSON_PROPERTY_IDENTIFICATION_DOCUMENTS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setIdentificationDocuments( + @jakarta.annotation.Nullable + List identificationDocuments) { + this.identificationDocuments = identificationDocuments; + } + /** Return true if this PersonalIdentification object is equal to o. */ @Override public boolean equals(Object o) { @@ -414,7 +491,11 @@ public boolean equals(Object o) { && Objects.equals(this.idType, personalIdentification.idType) && Objects.equals( this.additionalIdNumber, personalIdentification.additionalIdNumber) - && Objects.equals(this.additionalIdType, personalIdentification.additionalIdType); + && Objects.equals(this.additionalIdType, personalIdentification.additionalIdType) + && Objects.equals(this.nationality, personalIdentification.nationality) + && Objects.equals( + this.identificationDocuments, + personalIdentification.identificationDocuments); } @Override @@ -431,7 +512,9 @@ public int hashCode() { idNumber, idType, additionalIdNumber, - additionalIdType); + additionalIdType, + nationality, + identificationDocuments); } @Override @@ -456,6 +539,10 @@ public String toString() { .append(toIndentedString(additionalIdNumber)) .append("\n"); sb.append(" additionalIdType: ").append(toIndentedString(additionalIdType)).append("\n"); + sb.append(" nationality: ").append(toIndentedString(nationality)).append("\n"); + sb.append(" identificationDocuments: ") + .append(toIndentedString(identificationDocuments)) + .append("\n"); sb.append("}"); return sb.toString(); } @@ -615,6 +702,39 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getAdditionalIdType())))); } + // add `nationality` to the URL query string + if (getNationality() != null) { + joiner.add( + String.format( + "%snationality%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNationality())))); + } + + // add `identificationDocuments` to the URL query string + if (getIdentificationDocuments() != null) { + for (int i = 0; i < getIdentificationDocuments().size(); i++) { + if (getIdentificationDocuments().get(i) != null) { + joiner.add( + getIdentificationDocuments() + .get(i) + .toUrlQueryString( + String.format( + "%sidentificationDocuments%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/PersonalIdentificationDocument.java b/src/main/java/com/fireblocks/sdk/model/PersonalIdentificationDocument.java new file mode 100644 index 00000000..17f849a4 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/PersonalIdentificationDocument.java @@ -0,0 +1,222 @@ +/* + * 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.time.LocalDate; +import java.util.Objects; +import java.util.StringJoiner; + +/** PersonalIdentificationDocument */ +@JsonPropertyOrder({ + PersonalIdentificationDocument.JSON_PROPERTY_ID, + PersonalIdentificationDocument.JSON_PROPERTY_TYPE, + PersonalIdentificationDocument.JSON_PROPERTY_EXPIRATION_DATE +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class PersonalIdentificationDocument { + public static final String JSON_PROPERTY_ID = "id"; + @jakarta.annotation.Nullable private String id; + + public static final String JSON_PROPERTY_TYPE = "type"; + @jakarta.annotation.Nullable private PersonalIdentificationType type; + + public static final String JSON_PROPERTY_EXPIRATION_DATE = "expirationDate"; + @jakarta.annotation.Nullable private LocalDate expirationDate; + + public PersonalIdentificationDocument() {} + + public PersonalIdentificationDocument id(@jakarta.annotation.Nullable String id) { + this.id = id; + return this; + } + + /** + * The identification document number. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setId(@jakarta.annotation.Nullable String id) { + this.id = id; + } + + public PersonalIdentificationDocument type( + @jakarta.annotation.Nullable PersonalIdentificationType type) { + this.type = type; + return this; + } + + /** + * Get type + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public PersonalIdentificationType getType() { + return type; + } + + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setType(@jakarta.annotation.Nullable PersonalIdentificationType type) { + this.type = type; + } + + public PersonalIdentificationDocument expirationDate( + @jakarta.annotation.Nullable LocalDate expirationDate) { + this.expirationDate = expirationDate; + return this; + } + + /** + * The expiration date of the identification document. + * + * @return expirationDate + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EXPIRATION_DATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public LocalDate getExpirationDate() { + return expirationDate; + } + + @JsonProperty(JSON_PROPERTY_EXPIRATION_DATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setExpirationDate(@jakarta.annotation.Nullable LocalDate expirationDate) { + this.expirationDate = expirationDate; + } + + /** Return true if this PersonalIdentificationDocument object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PersonalIdentificationDocument personalIdentificationDocument = + (PersonalIdentificationDocument) o; + return Objects.equals(this.id, personalIdentificationDocument.id) + && Objects.equals(this.type, personalIdentificationDocument.type) + && Objects.equals( + this.expirationDate, personalIdentificationDocument.expirationDate); + } + + @Override + public int hashCode() { + return Objects.hash(id, type, expirationDate); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PersonalIdentificationDocument {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" expirationDate: ").append(toIndentedString(expirationDate)).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 `type` to the URL query string + if (getType() != null) { + joiner.add( + String.format( + "%stype%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getType())))); + } + + // add `expirationDate` to the URL query string + if (getExpirationDate() != null) { + joiner.add( + String.format( + "%sexpirationDate%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getExpirationDate())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/PositionRelatedTransaction.java b/src/main/java/com/fireblocks/sdk/model/PositionRelatedTransaction.java new file mode 100644 index 00000000..edcb9dd1 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/PositionRelatedTransaction.java @@ -0,0 +1,483 @@ +/* + * 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.Objects; +import java.util.StringJoiner; + +/** PositionRelatedTransaction */ +@JsonPropertyOrder({ + PositionRelatedTransaction.JSON_PROPERTY_TX_ID, + PositionRelatedTransaction.JSON_PROPERTY_TX_HASH, + PositionRelatedTransaction.JSON_PROPERTY_STAKING_OPERATION, + PositionRelatedTransaction.JSON_PROPERTY_TIMESTAMP, + PositionRelatedTransaction.JSON_PROPERTY_STATUS, + PositionRelatedTransaction.JSON_PROPERTY_AMOUNT, + PositionRelatedTransaction.JSON_PROPERTY_TX_NOTE +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class PositionRelatedTransaction { + public static final String JSON_PROPERTY_TX_ID = "txId"; + @jakarta.annotation.Nonnull private String txId; + + public static final String JSON_PROPERTY_TX_HASH = "txHash"; + @jakarta.annotation.Nullable private String txHash; + + /** + * Staking operation type. One of APPROVE, STAKE, UNSTAKE, WITHDRAW, CLAIM_REWARDS, SPLIT, + * CONSOLIDATE, MERGE, TRANSFER, AUTHORIZE, ADD_TO_STAKE. Absent on legacy persisted rows. + */ + public enum StakingOperationEnum { + APPROVE(String.valueOf("APPROVE")), + + STAKE(String.valueOf("STAKE")), + + UNSTAKE(String.valueOf("UNSTAKE")), + + WITHDRAW(String.valueOf("WITHDRAW")), + + CLAIM_REWARDS(String.valueOf("CLAIM_REWARDS")), + + SPLIT(String.valueOf("SPLIT")), + + CONSOLIDATE(String.valueOf("CONSOLIDATE")), + + MERGE(String.valueOf("MERGE")), + + TRANSFER(String.valueOf("TRANSFER")), + + AUTHORIZE(String.valueOf("AUTHORIZE")), + + ADD_TO_STAKE(String.valueOf("ADD_TO_STAKE")); + + private String value; + + StakingOperationEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static StakingOperationEnum fromValue(String value) { + for (StakingOperationEnum b : StakingOperationEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_STAKING_OPERATION = "stakingOperation"; + @jakarta.annotation.Nullable private StakingOperationEnum stakingOperation; + + public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; + @jakarta.annotation.Nonnull private OffsetDateTime timestamp; + + /** Transaction outcome. */ + public enum StatusEnum { + PENDING(String.valueOf("PENDING")), + + COMPLETED(String.valueOf("COMPLETED")), + + FAILED(String.valueOf("FAILED")); + + private String value; + + StatusEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static StatusEnum fromValue(String value) { + for (StatusEnum b : StatusEnum.values()) { + if (b.value.equals(value)) { + return b; + } + } + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + } + + public static final String JSON_PROPERTY_STATUS = "status"; + @jakarta.annotation.Nonnull private StatusEnum status; + + public static final String JSON_PROPERTY_AMOUNT = "amount"; + @jakarta.annotation.Nullable private String amount; + + public static final String JSON_PROPERTY_TX_NOTE = "txNote"; + @jakarta.annotation.Nullable private String txNote; + + public PositionRelatedTransaction() {} + + @JsonCreator + public PositionRelatedTransaction( + @JsonProperty(value = JSON_PROPERTY_TX_ID, required = true) String txId, + @JsonProperty(value = JSON_PROPERTY_TIMESTAMP, required = true) + OffsetDateTime timestamp, + @JsonProperty(value = JSON_PROPERTY_STATUS, required = true) StatusEnum status) { + this.txId = txId; + this.timestamp = timestamp; + this.status = status; + } + + public PositionRelatedTransaction txId(@jakarta.annotation.Nonnull String txId) { + this.txId = txId; + return this; + } + + /** + * The transaction ID. + * + * @return txId + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TX_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getTxId() { + return txId; + } + + @JsonProperty(JSON_PROPERTY_TX_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTxId(@jakarta.annotation.Nonnull String txId) { + this.txId = txId; + } + + public PositionRelatedTransaction txHash(@jakarta.annotation.Nullable String txHash) { + this.txHash = txHash; + return this; + } + + /** + * On-chain transaction hash. Absent while the transaction is pending. + * + * @return txHash + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TX_HASH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTxHash() { + return txHash; + } + + @JsonProperty(JSON_PROPERTY_TX_HASH) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTxHash(@jakarta.annotation.Nullable String txHash) { + this.txHash = txHash; + } + + public PositionRelatedTransaction stakingOperation( + @jakarta.annotation.Nullable StakingOperationEnum stakingOperation) { + this.stakingOperation = stakingOperation; + return this; + } + + /** + * Staking operation type. One of APPROVE, STAKE, UNSTAKE, WITHDRAW, CLAIM_REWARDS, SPLIT, + * CONSOLIDATE, MERGE, TRANSFER, AUTHORIZE, ADD_TO_STAKE. Absent on legacy persisted rows. + * + * @return stakingOperation + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STAKING_OPERATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public StakingOperationEnum getStakingOperation() { + return stakingOperation; + } + + @JsonProperty(JSON_PROPERTY_STAKING_OPERATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setStakingOperation( + @jakarta.annotation.Nullable StakingOperationEnum stakingOperation) { + this.stakingOperation = stakingOperation; + } + + public PositionRelatedTransaction timestamp( + @jakarta.annotation.Nonnull OffsetDateTime timestamp) { + this.timestamp = timestamp; + return this; + } + + /** + * ISO timestamp when the transaction was initiated (send time). + * + * @return timestamp + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public OffsetDateTime getTimestamp() { + return timestamp; + } + + @JsonProperty(JSON_PROPERTY_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setTimestamp(@jakarta.annotation.Nonnull OffsetDateTime timestamp) { + this.timestamp = timestamp; + } + + public PositionRelatedTransaction status(@jakarta.annotation.Nonnull StatusEnum status) { + this.status = status; + return this; + } + + /** + * Transaction outcome. + * + * @return status + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public StatusEnum getStatus() { + return status; + } + + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setStatus(@jakarta.annotation.Nonnull StatusEnum status) { + this.status = status; + } + + public PositionRelatedTransaction amount(@jakarta.annotation.Nullable String amount) { + this.amount = amount; + return this; + } + + /** + * Portion of position amount this transaction moved (native units). Absent on legacy rows. + * + * @return amount + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_AMOUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAmount() { + return amount; + } + + @JsonProperty(JSON_PROPERTY_AMOUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAmount(@jakarta.annotation.Nullable String amount) { + this.amount = amount; + } + + public PositionRelatedTransaction txNote(@jakarta.annotation.Nullable String txNote) { + this.txNote = txNote; + return this; + } + + /** + * User-provided note from the transfer request. Omitted when not set. + * + * @return txNote + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TX_NOTE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTxNote() { + return txNote; + } + + @JsonProperty(JSON_PROPERTY_TX_NOTE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTxNote(@jakarta.annotation.Nullable String txNote) { + this.txNote = txNote; + } + + /** Return true if this PositionRelatedTransaction object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + PositionRelatedTransaction positionRelatedTransaction = (PositionRelatedTransaction) o; + return Objects.equals(this.txId, positionRelatedTransaction.txId) + && Objects.equals(this.txHash, positionRelatedTransaction.txHash) + && Objects.equals( + this.stakingOperation, positionRelatedTransaction.stakingOperation) + && Objects.equals(this.timestamp, positionRelatedTransaction.timestamp) + && Objects.equals(this.status, positionRelatedTransaction.status) + && Objects.equals(this.amount, positionRelatedTransaction.amount) + && Objects.equals(this.txNote, positionRelatedTransaction.txNote); + } + + @Override + public int hashCode() { + return Objects.hash(txId, txHash, stakingOperation, timestamp, status, amount, txNote); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class PositionRelatedTransaction {\n"); + sb.append(" txId: ").append(toIndentedString(txId)).append("\n"); + sb.append(" txHash: ").append(toIndentedString(txHash)).append("\n"); + sb.append(" stakingOperation: ").append(toIndentedString(stakingOperation)).append("\n"); + sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" amount: ").append(toIndentedString(amount)).append("\n"); + sb.append(" txNote: ").append(toIndentedString(txNote)).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 `txId` to the URL query string + if (getTxId() != null) { + joiner.add( + String.format( + "%stxId%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTxId())))); + } + + // add `txHash` to the URL query string + if (getTxHash() != null) { + joiner.add( + String.format( + "%stxHash%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTxHash())))); + } + + // add `stakingOperation` to the URL query string + if (getStakingOperation() != null) { + joiner.add( + String.format( + "%sstakingOperation%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStakingOperation())))); + } + + // add `timestamp` to the URL query string + if (getTimestamp() != null) { + joiner.add( + String.format( + "%stimestamp%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTimestamp())))); + } + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add( + String.format( + "%sstatus%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + + // add `amount` to the URL query string + if (getAmount() != null) { + joiner.add( + String.format( + "%samount%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getAmount())))); + } + + // add `txNote` to the URL query string + if (getTxNote() != null) { + joiner.add( + String.format( + "%stxNote%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTxNote())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/Quote.java b/src/main/java/com/fireblocks/sdk/model/Quote.java index 6a850447..4758e5da 100644 --- a/src/main/java/com/fireblocks/sdk/model/Quote.java +++ b/src/main/java/com/fireblocks/sdk/model/Quote.java @@ -42,7 +42,7 @@ Quote.JSON_PROPERTY_GENERAL_FEES, Quote.JSON_PROPERTY_SIDE, Quote.JSON_PROPERTY_EXPIRES_AT, - Quote.JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS, + Quote.JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER, Quote.JSON_PROPERTY_TYPE }) @jakarta.annotation.Generated( @@ -94,9 +94,9 @@ public class Quote { public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt"; @jakarta.annotation.Nonnull private String expiresAt; - public static final String JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS = - "orderCreationRequirements"; - @jakarta.annotation.Nullable private String orderCreationRequirements; + public static final String JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER = + "requiredParticipantsIdentificationOnOrder"; + @jakarta.annotation.Nullable private String requiredParticipantsIdentificationOnOrder; /** The type of the quote. */ public enum TypeEnum { @@ -522,9 +522,9 @@ public void setExpiresAt(@jakarta.annotation.Nonnull String expiresAt) { this.expiresAt = expiresAt; } - public Quote orderCreationRequirements( - @jakarta.annotation.Nullable String orderCreationRequirements) { - this.orderCreationRequirements = orderCreationRequirements; + public Quote requiredParticipantsIdentificationOnOrder( + @jakarta.annotation.Nullable String requiredParticipantsIdentificationOnOrder) { + this.requiredParticipantsIdentificationOnOrder = requiredParticipantsIdentificationOnOrder; return this; } @@ -532,20 +532,20 @@ public Quote orderCreationRequirements( * 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. * - * @return orderCreationRequirements + * @return requiredParticipantsIdentificationOnOrder */ @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS) + @JsonProperty(JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getOrderCreationRequirements() { - return orderCreationRequirements; + public String getRequiredParticipantsIdentificationOnOrder() { + return requiredParticipantsIdentificationOnOrder; } - @JsonProperty(JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS) + @JsonProperty(JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setOrderCreationRequirements( - @jakarta.annotation.Nullable String orderCreationRequirements) { - this.orderCreationRequirements = orderCreationRequirements; + public void setRequiredParticipantsIdentificationOnOrder( + @jakarta.annotation.Nullable String requiredParticipantsIdentificationOnOrder) { + this.requiredParticipantsIdentificationOnOrder = requiredParticipantsIdentificationOnOrder; } public Quote type(@jakarta.annotation.Nonnull TypeEnum type) { @@ -596,7 +596,9 @@ public boolean equals(Object o) { && Objects.equals(this.generalFees, quote.generalFees) && Objects.equals(this.side, quote.side) && Objects.equals(this.expiresAt, quote.expiresAt) - && Objects.equals(this.orderCreationRequirements, quote.orderCreationRequirements) + && Objects.equals( + this.requiredParticipantsIdentificationOnOrder, + quote.requiredParticipantsIdentificationOnOrder) && Objects.equals(this.type, quote.type); } @@ -618,7 +620,7 @@ public int hashCode() { generalFees, side, expiresAt, - orderCreationRequirements, + requiredParticipantsIdentificationOnOrder, type); } @@ -643,8 +645,8 @@ public String toString() { sb.append(" generalFees: ").append(toIndentedString(generalFees)).append("\n"); sb.append(" side: ").append(toIndentedString(side)).append("\n"); sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n"); - sb.append(" orderCreationRequirements: ") - .append(toIndentedString(orderCreationRequirements)) + sb.append(" requiredParticipantsIdentificationOnOrder: ") + .append(toIndentedString(requiredParticipantsIdentificationOnOrder)) .append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); sb.append("}"); @@ -863,15 +865,16 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt())))); } - // add `orderCreationRequirements` to the URL query string - if (getOrderCreationRequirements() != null) { + // add `requiredParticipantsIdentificationOnOrder` to the URL query string + if (getRequiredParticipantsIdentificationOnOrder() != null) { joiner.add( String.format( - "%sorderCreationRequirements%s=%s", + "%srequiredParticipantsIdentificationOnOrder%s=%s", prefix, suffix, ApiClient.urlEncode( - ApiClient.valueToString(getOrderCreationRequirements())))); + ApiClient.valueToString( + getRequiredParticipantsIdentificationOnOrder())))); } // add `type` to the URL query string diff --git a/src/main/java/com/fireblocks/sdk/model/QuoteOffer.java b/src/main/java/com/fireblocks/sdk/model/QuoteOffer.java index 0836ec81..381c5a41 100644 --- a/src/main/java/com/fireblocks/sdk/model/QuoteOffer.java +++ b/src/main/java/com/fireblocks/sdk/model/QuoteOffer.java @@ -42,7 +42,7 @@ QuoteOffer.JSON_PROPERTY_GENERAL_FEES, QuoteOffer.JSON_PROPERTY_SIDE, QuoteOffer.JSON_PROPERTY_EXPIRES_AT, - QuoteOffer.JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS, + QuoteOffer.JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER, QuoteOffer.JSON_PROPERTY_TYPE, QuoteOffer.JSON_PROPERTY_OFFER_TYPE }) @@ -95,9 +95,9 @@ public class QuoteOffer { public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt"; @jakarta.annotation.Nonnull private String expiresAt; - public static final String JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS = - "orderCreationRequirements"; - @jakarta.annotation.Nullable private String orderCreationRequirements; + public static final String JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER = + "requiredParticipantsIdentificationOnOrder"; + @jakarta.annotation.Nullable private String requiredParticipantsIdentificationOnOrder; /** The type of the quote. */ public enum TypeEnum { @@ -560,9 +560,9 @@ public void setExpiresAt(@jakarta.annotation.Nonnull String expiresAt) { this.expiresAt = expiresAt; } - public QuoteOffer orderCreationRequirements( - @jakarta.annotation.Nullable String orderCreationRequirements) { - this.orderCreationRequirements = orderCreationRequirements; + public QuoteOffer requiredParticipantsIdentificationOnOrder( + @jakarta.annotation.Nullable String requiredParticipantsIdentificationOnOrder) { + this.requiredParticipantsIdentificationOnOrder = requiredParticipantsIdentificationOnOrder; return this; } @@ -570,20 +570,20 @@ public QuoteOffer orderCreationRequirements( * 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. * - * @return orderCreationRequirements + * @return requiredParticipantsIdentificationOnOrder */ @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS) + @JsonProperty(JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public String getOrderCreationRequirements() { - return orderCreationRequirements; + public String getRequiredParticipantsIdentificationOnOrder() { + return requiredParticipantsIdentificationOnOrder; } - @JsonProperty(JSON_PROPERTY_ORDER_CREATION_REQUIREMENTS) + @JsonProperty(JSON_PROPERTY_REQUIRED_PARTICIPANTS_IDENTIFICATION_ON_ORDER) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setOrderCreationRequirements( - @jakarta.annotation.Nullable String orderCreationRequirements) { - this.orderCreationRequirements = orderCreationRequirements; + public void setRequiredParticipantsIdentificationOnOrder( + @jakarta.annotation.Nullable String requiredParticipantsIdentificationOnOrder) { + this.requiredParticipantsIdentificationOnOrder = requiredParticipantsIdentificationOnOrder; } public QuoteOffer type(@jakarta.annotation.Nonnull TypeEnum type) { @@ -658,7 +658,8 @@ public boolean equals(Object o) { && Objects.equals(this.side, quoteOffer.side) && Objects.equals(this.expiresAt, quoteOffer.expiresAt) && Objects.equals( - this.orderCreationRequirements, quoteOffer.orderCreationRequirements) + this.requiredParticipantsIdentificationOnOrder, + quoteOffer.requiredParticipantsIdentificationOnOrder) && Objects.equals(this.type, quoteOffer.type) && Objects.equals(this.offerType, quoteOffer.offerType); } @@ -681,7 +682,7 @@ public int hashCode() { generalFees, side, expiresAt, - orderCreationRequirements, + requiredParticipantsIdentificationOnOrder, type, offerType); } @@ -707,8 +708,8 @@ public String toString() { sb.append(" generalFees: ").append(toIndentedString(generalFees)).append("\n"); sb.append(" side: ").append(toIndentedString(side)).append("\n"); sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n"); - sb.append(" orderCreationRequirements: ") - .append(toIndentedString(orderCreationRequirements)) + sb.append(" requiredParticipantsIdentificationOnOrder: ") + .append(toIndentedString(requiredParticipantsIdentificationOnOrder)) .append("\n"); sb.append(" type: ").append(toIndentedString(type)).append("\n"); sb.append(" offerType: ").append(toIndentedString(offerType)).append("\n"); @@ -928,15 +929,16 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getExpiresAt())))); } - // add `orderCreationRequirements` to the URL query string - if (getOrderCreationRequirements() != null) { + // add `requiredParticipantsIdentificationOnOrder` to the URL query string + if (getRequiredParticipantsIdentificationOnOrder() != null) { joiner.add( String.format( - "%sorderCreationRequirements%s=%s", + "%srequiredParticipantsIdentificationOnOrder%s=%s", prefix, suffix, ApiClient.urlEncode( - ApiClient.valueToString(getOrderCreationRequirements())))); + ApiClient.valueToString( + getRequiredParticipantsIdentificationOnOrder())))); } // add `type` to the URL query string diff --git a/src/main/java/com/fireblocks/sdk/model/RoleDetails2.java b/src/main/java/com/fireblocks/sdk/model/RoleDetails2.java new file mode 100644 index 00000000..02bddd89 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/RoleDetails2.java @@ -0,0 +1,254 @@ +/* + * 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; + +/** RoleDetails2 */ +@JsonPropertyOrder({ + RoleDetails2.JSON_PROPERTY_ROLE_HASH, + RoleDetails2.JSON_PROPERTY_DESCRIPTION, + RoleDetails2.JSON_PROPERTY_ACCOUNTS +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class RoleDetails2 { + public static final String JSON_PROPERTY_ROLE_HASH = "roleHash"; + @jakarta.annotation.Nonnull private String roleHash; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + @jakarta.annotation.Nonnull private String description; + + public static final String JSON_PROPERTY_ACCOUNTS = "accounts"; + @jakarta.annotation.Nonnull private List accounts; + + public RoleDetails2() {} + + @JsonCreator + public RoleDetails2( + @JsonProperty(value = JSON_PROPERTY_ROLE_HASH, required = true) String roleHash, + @JsonProperty(value = JSON_PROPERTY_DESCRIPTION, required = true) String description, + @JsonProperty(value = JSON_PROPERTY_ACCOUNTS, required = true) + List accounts) { + this.roleHash = roleHash; + this.description = description; + this.accounts = accounts; + } + + public RoleDetails2 roleHash(@jakarta.annotation.Nonnull String roleHash) { + this.roleHash = roleHash; + return this; + } + + /** + * The role hash identifier + * + * @return roleHash + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ROLE_HASH) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getRoleHash() { + return roleHash; + } + + @JsonProperty(JSON_PROPERTY_ROLE_HASH) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setRoleHash(@jakarta.annotation.Nonnull String roleHash) { + this.roleHash = roleHash; + } + + public RoleDetails2 description(@jakarta.annotation.Nonnull String description) { + this.description = description; + return this; + } + + /** + * Human-readable description of the role + * + * @return description + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getDescription() { + return description; + } + + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setDescription(@jakarta.annotation.Nonnull String description) { + this.description = description; + } + + public RoleDetails2 accounts(@jakarta.annotation.Nonnull List accounts) { + this.accounts = accounts; + return this; + } + + public RoleDetails2 addAccountsItem(RoleGrantee accountsItem) { + if (this.accounts == null) { + this.accounts = new ArrayList<>(); + } + this.accounts.add(accountsItem); + return this; + } + + /** + * List of accounts that have been granted this role + * + * @return accounts + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_ACCOUNTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getAccounts() { + return accounts; + } + + @JsonProperty(JSON_PROPERTY_ACCOUNTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setAccounts(@jakarta.annotation.Nonnull List accounts) { + this.accounts = accounts; + } + + /** Return true if this RoleDetails-2 object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RoleDetails2 roleDetails2 = (RoleDetails2) o; + return Objects.equals(this.roleHash, roleDetails2.roleHash) + && Objects.equals(this.description, roleDetails2.description) + && Objects.equals(this.accounts, roleDetails2.accounts); + } + + @Override + public int hashCode() { + return Objects.hash(roleHash, description, accounts); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RoleDetails2 {\n"); + sb.append(" roleHash: ").append(toIndentedString(roleHash)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" accounts: ").append(toIndentedString(accounts)).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 `roleHash` to the URL query string + if (getRoleHash() != null) { + joiner.add( + String.format( + "%sroleHash%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getRoleHash())))); + } + + // add `description` to the URL query string + if (getDescription() != null) { + joiner.add( + String.format( + "%sdescription%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getDescription())))); + } + + // add `accounts` to the URL query string + if (getAccounts() != null) { + for (int i = 0; i < getAccounts().size(); i++) { + if (getAccounts().get(i) != null) { + joiner.add( + getAccounts() + .get(i) + .toUrlQueryString( + String.format( + "%saccounts%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmDecision.java b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmDecision.java index eb54761f..3692c23c 100644 --- a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmDecision.java +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmDecision.java @@ -60,7 +60,7 @@ public class ScreeningTRLinkMissingTrmDecision { @jakarta.annotation.Nullable private TravelRuleDirectionEnum direction; public static final String JSON_PROPERTY_SOURCE_TYPE = "sourceType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum sourceType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 sourceType; public static final String JSON_PROPERTY_SOURCE_SUB_TYPE = "sourceSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum sourceSubType; @@ -69,7 +69,7 @@ public class ScreeningTRLinkMissingTrmDecision { @jakarta.annotation.Nullable private String sourceAddress; public static final String JSON_PROPERTY_DEST_TYPE = "destType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum destType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 destType; public static final String JSON_PROPERTY_DEST_SUB_TYPE = "destSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum destSubType; @@ -182,7 +182,7 @@ public void setDirection(@jakarta.annotation.Nullable TravelRuleDirectionEnum di } public ScreeningTRLinkMissingTrmDecision sourceType( - @jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; return this; } @@ -195,13 +195,13 @@ public ScreeningTRLinkMissingTrmDecision sourceType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getSourceType() { + public TransferPeerTypeEnum2 getSourceType() { return sourceType; } @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; } @@ -255,7 +255,7 @@ public void setSourceAddress(@jakarta.annotation.Nullable String sourceAddress) } public ScreeningTRLinkMissingTrmDecision destType( - @jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; return this; } @@ -268,13 +268,13 @@ public ScreeningTRLinkMissingTrmDecision destType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getDestType() { + public TransferPeerTypeEnum2 getDestType() { return destType; } @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; } diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmRule.java b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmRule.java index 792c4bcc..e34fe05d 100644 --- a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmRule.java +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkMissingTrmRule.java @@ -56,7 +56,7 @@ public class ScreeningTRLinkMissingTrmRule { @jakarta.annotation.Nullable private TravelRuleDirectionEnum direction; public static final String JSON_PROPERTY_SOURCE_TYPE = "sourceType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum sourceType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 sourceType; public static final String JSON_PROPERTY_SOURCE_SUB_TYPE = "sourceSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum sourceSubType; @@ -65,7 +65,7 @@ public class ScreeningTRLinkMissingTrmRule { @jakarta.annotation.Nullable private String sourceAddress; public static final String JSON_PROPERTY_DEST_TYPE = "destType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum destType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 destType; public static final String JSON_PROPERTY_DEST_SUB_TYPE = "destSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum destSubType; @@ -167,7 +167,7 @@ public void setDirection(@jakarta.annotation.Nullable TravelRuleDirectionEnum di } public ScreeningTRLinkMissingTrmRule sourceType( - @jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; return this; } @@ -180,13 +180,13 @@ public ScreeningTRLinkMissingTrmRule sourceType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getSourceType() { + public TransferPeerTypeEnum2 getSourceType() { return sourceType; } @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; } @@ -240,7 +240,7 @@ public void setSourceAddress(@jakarta.annotation.Nullable String sourceAddress) } public ScreeningTRLinkMissingTrmRule destType( - @jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; return this; } @@ -253,13 +253,13 @@ public ScreeningTRLinkMissingTrmRule destType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getDestType() { + public TransferPeerTypeEnum2 getDestType() { return destType; } @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; } diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPostScreeningRule.java b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPostScreeningRule.java index 4d5ee6c2..387d13a4 100644 --- a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPostScreeningRule.java +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPostScreeningRule.java @@ -58,7 +58,7 @@ public class ScreeningTRLinkPostScreeningRule { @jakarta.annotation.Nullable private TravelRuleDirectionEnum direction; public static final String JSON_PROPERTY_SOURCE_TYPE = "sourceType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum sourceType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 sourceType; public static final String JSON_PROPERTY_SOURCE_SUB_TYPE = "sourceSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum sourceSubType; @@ -67,7 +67,7 @@ public class ScreeningTRLinkPostScreeningRule { @jakarta.annotation.Nullable private String sourceAddress; public static final String JSON_PROPERTY_DEST_TYPE = "destType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum destType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 destType; public static final String JSON_PROPERTY_DEST_SUB_TYPE = "destSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum destSubType; @@ -174,7 +174,7 @@ public void setDirection(@jakarta.annotation.Nullable TravelRuleDirectionEnum di } public ScreeningTRLinkPostScreeningRule sourceType( - @jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; return this; } @@ -187,13 +187,13 @@ public ScreeningTRLinkPostScreeningRule sourceType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getSourceType() { + public TransferPeerTypeEnum2 getSourceType() { return sourceType; } @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; } @@ -247,7 +247,7 @@ public void setSourceAddress(@jakarta.annotation.Nullable String sourceAddress) } public ScreeningTRLinkPostScreeningRule destType( - @jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; return this; } @@ -260,13 +260,13 @@ public ScreeningTRLinkPostScreeningRule destType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getDestType() { + public TransferPeerTypeEnum2 getDestType() { return destType; } @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; } diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPrescreeningRule.java b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPrescreeningRule.java index d4a8cfef..b71dcaa4 100644 --- a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPrescreeningRule.java +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkPrescreeningRule.java @@ -53,7 +53,7 @@ public class ScreeningTRLinkPrescreeningRule { @jakarta.annotation.Nullable private TravelRuleDirectionEnum direction; public static final String JSON_PROPERTY_SOURCE_TYPE = "sourceType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum sourceType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 sourceType; public static final String JSON_PROPERTY_SOURCE_SUB_TYPE = "sourceSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum sourceSubType; @@ -62,7 +62,7 @@ public class ScreeningTRLinkPrescreeningRule { @jakarta.annotation.Nullable private String sourceAddress; public static final String JSON_PROPERTY_DEST_TYPE = "destType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum destType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 destType; public static final String JSON_PROPERTY_DEST_SUB_TYPE = "destSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum destSubType; @@ -158,7 +158,7 @@ public void setDirection(@jakarta.annotation.Nullable TravelRuleDirectionEnum di } public ScreeningTRLinkPrescreeningRule sourceType( - @jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; return this; } @@ -171,13 +171,13 @@ public ScreeningTRLinkPrescreeningRule sourceType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getSourceType() { + public TransferPeerTypeEnum2 getSourceType() { return sourceType; } @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; } @@ -231,7 +231,7 @@ public void setSourceAddress(@jakarta.annotation.Nullable String sourceAddress) } public ScreeningTRLinkPrescreeningRule destType( - @jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; return this; } @@ -244,13 +244,13 @@ public ScreeningTRLinkPrescreeningRule destType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getDestType() { + public TransferPeerTypeEnum2 getDestType() { return destType; } @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; } diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkRuleBase.java b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkRuleBase.java index eb36ef92..4243b339 100644 --- a/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkRuleBase.java +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningTRLinkRuleBase.java @@ -51,7 +51,7 @@ public class ScreeningTRLinkRuleBase { @jakarta.annotation.Nullable private TravelRuleDirectionEnum direction; public static final String JSON_PROPERTY_SOURCE_TYPE = "sourceType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum sourceType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 sourceType; public static final String JSON_PROPERTY_SOURCE_SUB_TYPE = "sourceSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum sourceSubType; @@ -60,7 +60,7 @@ public class ScreeningTRLinkRuleBase { @jakarta.annotation.Nullable private String sourceAddress; public static final String JSON_PROPERTY_DEST_TYPE = "destType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum destType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 destType; public static final String JSON_PROPERTY_DEST_SUB_TYPE = "destSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum destSubType; @@ -145,7 +145,7 @@ public void setDirection(@jakarta.annotation.Nullable TravelRuleDirectionEnum di } public ScreeningTRLinkRuleBase sourceType( - @jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; return this; } @@ -158,13 +158,13 @@ public ScreeningTRLinkRuleBase sourceType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getSourceType() { + public TransferPeerTypeEnum2 getSourceType() { return sourceType; } @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; } @@ -218,7 +218,7 @@ public void setSourceAddress(@jakarta.annotation.Nullable String sourceAddress) } public ScreeningTRLinkRuleBase destType( - @jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; return this; } @@ -231,13 +231,13 @@ public ScreeningTRLinkRuleBase destType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getDestType() { + public TransferPeerTypeEnum2 getDestType() { return destType; } @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; } diff --git a/src/main/java/com/fireblocks/sdk/model/ScreeningTravelRulePrescreeningRule.java b/src/main/java/com/fireblocks/sdk/model/ScreeningTravelRulePrescreeningRule.java index 9b812116..4ee5c3c0 100644 --- a/src/main/java/com/fireblocks/sdk/model/ScreeningTravelRulePrescreeningRule.java +++ b/src/main/java/com/fireblocks/sdk/model/ScreeningTravelRulePrescreeningRule.java @@ -52,19 +52,19 @@ public class ScreeningTravelRulePrescreeningRule { @jakarta.annotation.Nullable private String bypassReason; public static final String JSON_PROPERTY_SOURCE_TYPE = "sourceType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum sourceType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 sourceType; public static final String JSON_PROPERTY_SOURCE_SUB_TYPE = "sourceSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum sourceSubType; public static final String JSON_PROPERTY_DEST_TYPE = "destType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum destType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 destType; public static final String JSON_PROPERTY_DEST_SUB_TYPE = "destSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum destSubType; public static final String JSON_PROPERTY_TRANSFER_PEER_TYPE = "transferPeerType"; - @jakarta.annotation.Nullable private TransferPeerTypeEnum transferPeerType; + @jakarta.annotation.Nullable private TransferPeerTypeEnum2 transferPeerType; public static final String JSON_PROPERTY_TRANSFER_PEER_SUB_TYPE = "transferPeerSubType"; @jakarta.annotation.Nullable private TransferPeerSubTypeEnum transferPeerSubType; @@ -126,7 +126,7 @@ public void setBypassReason(@jakarta.annotation.Nullable String bypassReason) { } public ScreeningTravelRulePrescreeningRule sourceType( - @jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; return this; } @@ -139,13 +139,13 @@ public ScreeningTravelRulePrescreeningRule sourceType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getSourceType() { + public TransferPeerTypeEnum2 getSourceType() { return sourceType; } @JsonProperty(JSON_PROPERTY_SOURCE_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum sourceType) { + public void setSourceType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 sourceType) { this.sourceType = sourceType; } @@ -175,7 +175,7 @@ public void setSourceSubType( } public ScreeningTravelRulePrescreeningRule destType( - @jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; return this; } @@ -188,13 +188,13 @@ public ScreeningTravelRulePrescreeningRule destType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getDestType() { + public TransferPeerTypeEnum2 getDestType() { return destType; } @JsonProperty(JSON_PROPERTY_DEST_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum destType) { + public void setDestType(@jakarta.annotation.Nullable TransferPeerTypeEnum2 destType) { this.destType = destType; } @@ -223,7 +223,7 @@ public void setDestSubType(@jakarta.annotation.Nullable TransferPeerSubTypeEnum } public ScreeningTravelRulePrescreeningRule transferPeerType( - @jakarta.annotation.Nullable TransferPeerTypeEnum transferPeerType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 transferPeerType) { this.transferPeerType = transferPeerType; return this; } @@ -236,14 +236,14 @@ public ScreeningTravelRulePrescreeningRule transferPeerType( @jakarta.annotation.Nullable @JsonProperty(JSON_PROPERTY_TRANSFER_PEER_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public TransferPeerTypeEnum getTransferPeerType() { + public TransferPeerTypeEnum2 getTransferPeerType() { return transferPeerType; } @JsonProperty(JSON_PROPERTY_TRANSFER_PEER_TYPE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setTransferPeerType( - @jakarta.annotation.Nullable TransferPeerTypeEnum transferPeerType) { + @jakarta.annotation.Nullable TransferPeerTypeEnum2 transferPeerType) { this.transferPeerType = transferPeerType; } diff --git a/src/main/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponse.java b/src/main/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponse.java new file mode 100644 index 00000000..a0067071 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponse.java @@ -0,0 +1,220 @@ +/* + * 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; + +/** StakingPositionRelatedTransactionsPaginatedResponse */ +@JsonPropertyOrder({ + StakingPositionRelatedTransactionsPaginatedResponse.JSON_PROPERTY_DATA, + StakingPositionRelatedTransactionsPaginatedResponse.JSON_PROPERTY_NEXT +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class StakingPositionRelatedTransactionsPaginatedResponse { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public StakingPositionRelatedTransactionsPaginatedResponse() {} + + @JsonCreator + public StakingPositionRelatedTransactionsPaginatedResponse( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public StakingPositionRelatedTransactionsPaginatedResponse data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public StakingPositionRelatedTransactionsPaginatedResponse addDataItem( + PositionRelatedTransaction dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * The related transactions for the current page. + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public StakingPositionRelatedTransactionsPaginatedResponse next( + @jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for the next page. Use this value in the pageCursor parameter to fetch the next page. + * Null if no more pages. + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + /** + * Return true if this StakingPositionRelatedTransactionsPaginatedResponse object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + StakingPositionRelatedTransactionsPaginatedResponse + stakingPositionRelatedTransactionsPaginatedResponse = + (StakingPositionRelatedTransactionsPaginatedResponse) o; + return Objects.equals(this.data, stakingPositionRelatedTransactionsPaginatedResponse.data) + && Objects.equals( + this.next, stakingPositionRelatedTransactionsPaginatedResponse.next); + } + + @Override + public int hashCode() { + return Objects.hash(data, next); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class StakingPositionRelatedTransactionsPaginatedResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequest.java b/src/main/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequest.java new file mode 100644 index 00000000..e9a72f89 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequest.java @@ -0,0 +1,170 @@ +/* + * 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.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.StringJoiner; + +/** + * Body of POST /trading/orders/{orderId}/requirement/data. Carries the textual response + * (`data`). Any required files are uploaded separately via POST + * /trading/orders/{orderId}/requirement/file. + */ +@JsonPropertyOrder({SubmitOrderRequirementRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class SubmitOrderRequirementRequest { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private Map data; + + public SubmitOrderRequirementRequest() {} + + @JsonCreator + public SubmitOrderRequirementRequest( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) Map data) { + this.data = data; + } + + public SubmitOrderRequirementRequest data( + @jakarta.annotation.Nonnull Map data) { + this.data = data; + return this; + } + + public SubmitOrderRequirementRequest putDataItem(String key, Object dataItem) { + if (this.data == null) { + this.data = new HashMap<>(); + } + this.data.put(key, dataItem); + return this; + } + + /** + * Free-form object that MUST conform to the `requiredData` JSON Schema returned by + * the GET endpoint. Carries text/select fields. + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) + public Map getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull Map data) { + this.data = data; + } + + /** Return true if this SubmitOrderRequirementRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SubmitOrderRequirementRequest submitOrderRequirementRequest = + (SubmitOrderRequirementRequest) o; + return Objects.equals(this.data, submitOrderRequirementRequest.data); + } + + @Override + public int hashCode() { + return Objects.hash(data); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SubmitOrderRequirementRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).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 `data` to the URL query string + if (getData() != null) { + for (String _key : getData().keySet()) { + joiner.add( + String.format( + "%sdata%s%s=%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", containerPrefix, _key, containerSuffix), + getData().get(_key), + ApiClient.urlEncode(ApiClient.valueToString(getData().get(_key))))); + } + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2.java b/src/main/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2.java new file mode 100644 index 00000000..b749ef4d --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2.java @@ -0,0 +1,291 @@ +/* + * 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.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.StringJoiner; + +/** TotalSupplyPagedResponse2 */ +@JsonPropertyOrder({ + TotalSupplyPagedResponse2.JSON_PROPERTY_DATA, + TotalSupplyPagedResponse2.JSON_PROPERTY_NEXT, + TotalSupplyPagedResponse2.JSON_PROPERTY_PREV, + TotalSupplyPagedResponse2.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class TotalSupplyPagedResponse2 { + public static final String JSON_PROPERTY_DATA = "data"; + @jakarta.annotation.Nonnull private List data; + + public static final String JSON_PROPERTY_NEXT = "next"; + @jakarta.annotation.Nullable private String next; + + public static final String JSON_PROPERTY_PREV = "prev"; + @jakarta.annotation.Nullable private String prev; + + public static final String JSON_PROPERTY_TOTAL = "total"; + @jakarta.annotation.Nullable private BigDecimal total; + + public TotalSupplyPagedResponse2() {} + + @JsonCreator + public TotalSupplyPagedResponse2( + @JsonProperty(value = JSON_PROPERTY_DATA, required = true) + List data) { + this.data = data; + } + + public TotalSupplyPagedResponse2 data( + @jakarta.annotation.Nonnull List data) { + this.data = data; + return this; + } + + public TotalSupplyPagedResponse2 addDataItem(TotalSupplyItemDto dataItem) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + this.data.add(dataItem); + return this; + } + + /** + * Array of total supply data points + * + * @return data + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setData(@jakarta.annotation.Nonnull List data) { + this.data = data; + } + + public TotalSupplyPagedResponse2 next(@jakarta.annotation.Nullable String next) { + this.next = next; + return this; + } + + /** + * Cursor for next page + * + * @return next + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNext() { + return next; + } + + @JsonProperty(JSON_PROPERTY_NEXT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setNext(@jakarta.annotation.Nullable String next) { + this.next = next; + } + + public TotalSupplyPagedResponse2 prev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + return this; + } + + /** + * Cursor for previous page + * + * @return prev + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPrev() { + return prev; + } + + @JsonProperty(JSON_PROPERTY_PREV) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPrev(@jakarta.annotation.Nullable String prev) { + this.prev = prev; + } + + public TotalSupplyPagedResponse2 total(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + return this; + } + + /** + * Total count of items + * + * @return total + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getTotal() { + return total; + } + + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTotal(@jakarta.annotation.Nullable BigDecimal total) { + this.total = total; + } + + /** Return true if this TotalSupplyPagedResponse-2 object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TotalSupplyPagedResponse2 totalSupplyPagedResponse2 = (TotalSupplyPagedResponse2) o; + return Objects.equals(this.data, totalSupplyPagedResponse2.data) + && Objects.equals(this.next, totalSupplyPagedResponse2.next) + && Objects.equals(this.prev, totalSupplyPagedResponse2.prev) + && Objects.equals(this.total, totalSupplyPagedResponse2.total); + } + + @Override + public int hashCode() { + return Objects.hash(data, next, prev, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TotalSupplyPagedResponse2 {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" next: ").append(toIndentedString(next)).append("\n"); + sb.append(" prev: ").append(toIndentedString(prev)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).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 `data` to the URL query string + if (getData() != null) { + for (int i = 0; i < getData().size(); i++) { + if (getData().get(i) != null) { + joiner.add( + getData() + .get(i) + .toUrlQueryString( + String.format( + "%sdata%s%s", + prefix, + suffix, + "".equals(suffix) + ? "" + : String.format( + "%s%d%s", + containerPrefix, + i, + containerSuffix)))); + } + } + } + + // add `next` to the URL query string + if (getNext() != null) { + joiner.add( + String.format( + "%snext%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getNext())))); + } + + // add `prev` to the URL query string + if (getPrev() != null) { + joiner.add( + String.format( + "%sprev%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getPrev())))); + } + + // add `total` to the URL query string + if (getTotal() != null) { + joiner.add( + String.format( + "%stotal%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getTotal())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TransactionConfigurations.java b/src/main/java/com/fireblocks/sdk/model/TransactionConfigurations.java new file mode 100644 index 00000000..82e9ea7d --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TransactionConfigurations.java @@ -0,0 +1,148 @@ +/* + * 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.math.BigDecimal; +import java.util.Objects; +import java.util.StringJoiner; + +/** TransactionConfigurations */ +@JsonPropertyOrder({TransactionConfigurations.JSON_PROPERTY_EXPIRES_AFTER_SECONDS}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class TransactionConfigurations { + public static final String JSON_PROPERTY_EXPIRES_AFTER_SECONDS = "expiresAfterSeconds"; + @jakarta.annotation.Nullable private BigDecimal expiresAfterSeconds; + + public TransactionConfigurations() {} + + public TransactionConfigurations expiresAfterSeconds( + @jakarta.annotation.Nullable BigDecimal expiresAfterSeconds) { + this.expiresAfterSeconds = expiresAfterSeconds; + return this; + } + + /** + * The number of seconds the transaction is valid for before it expires. After the specified + * duration, the transaction will expire if it has not been broadcasted. minimum: 300 maximum: + * 86400 + * + * @return expiresAfterSeconds + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EXPIRES_AFTER_SECONDS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public BigDecimal getExpiresAfterSeconds() { + return expiresAfterSeconds; + } + + @JsonProperty(JSON_PROPERTY_EXPIRES_AFTER_SECONDS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setExpiresAfterSeconds( + @jakarta.annotation.Nullable BigDecimal expiresAfterSeconds) { + this.expiresAfterSeconds = expiresAfterSeconds; + } + + /** Return true if this TransactionConfigurations object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TransactionConfigurations transactionConfigurations = (TransactionConfigurations) o; + return Objects.equals( + this.expiresAfterSeconds, transactionConfigurations.expiresAfterSeconds); + } + + @Override + public int hashCode() { + return Objects.hash(expiresAfterSeconds); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TransactionConfigurations {\n"); + sb.append(" expiresAfterSeconds: ") + .append(toIndentedString(expiresAfterSeconds)) + .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 `expiresAfterSeconds` to the URL query string + if (getExpiresAfterSeconds() != null) { + joiner.add( + String.format( + "%sexpiresAfterSeconds%s=%s", + prefix, + suffix, + ApiClient.urlEncode( + ApiClient.valueToString(getExpiresAfterSeconds())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/TransactionRequest.java b/src/main/java/com/fireblocks/sdk/model/TransactionRequest.java index eabdce3f..4d9ad9c1 100644 --- a/src/main/java/com/fireblocks/sdk/model/TransactionRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/TransactionRequest.java @@ -19,7 +19,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonValue; import com.fireblocks.sdk.ApiClient; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -56,7 +55,7 @@ TransactionRequest.JSON_PROPERTY_NETWORK_STAKING, TransactionRequest.JSON_PROPERTY_CPU_STAKING, TransactionRequest.JSON_PROPERTY_USE_GASLESS, - TransactionRequest.JSON_PROPERTY_EXPIRES_AFTER_SECONDS + TransactionRequest.JSON_PROPERTY_CONFIGURATIONS }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -189,8 +188,8 @@ public static FeeLevelEnum fromValue(String value) { public static final String JSON_PROPERTY_USE_GASLESS = "useGasless"; @jakarta.annotation.Nullable private Boolean useGasless; - public static final String JSON_PROPERTY_EXPIRES_AFTER_SECONDS = "expiresAfterSeconds"; - @jakarta.annotation.Nullable private BigDecimal expiresAfterSeconds; + public static final String JSON_PROPERTY_CONFIGURATIONS = "configurations"; + @jakarta.annotation.Nullable private TransactionConfigurations configurations; public TransactionRequest() {} @@ -924,31 +923,29 @@ public void setUseGasless(@jakarta.annotation.Nullable Boolean useGasless) { this.useGasless = useGasless; } - public TransactionRequest expiresAfterSeconds( - @jakarta.annotation.Nullable BigDecimal expiresAfterSeconds) { - this.expiresAfterSeconds = expiresAfterSeconds; + public TransactionRequest configurations( + @jakarta.annotation.Nullable TransactionConfigurations configurations) { + this.configurations = configurations; return this; } /** - * The number of seconds the transaction is valid for before it expires. After the specified - * duration, the transaction will expire if it has not been broadcasted. minimum: 600 maximum: - * 86400 + * Get configurations * - * @return expiresAfterSeconds + * @return configurations */ @jakarta.annotation.Nullable - @JsonProperty(JSON_PROPERTY_EXPIRES_AFTER_SECONDS) + @JsonProperty(JSON_PROPERTY_CONFIGURATIONS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public BigDecimal getExpiresAfterSeconds() { - return expiresAfterSeconds; + public TransactionConfigurations getConfigurations() { + return configurations; } - @JsonProperty(JSON_PROPERTY_EXPIRES_AFTER_SECONDS) + @JsonProperty(JSON_PROPERTY_CONFIGURATIONS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setExpiresAfterSeconds( - @jakarta.annotation.Nullable BigDecimal expiresAfterSeconds) { - this.expiresAfterSeconds = expiresAfterSeconds; + public void setConfigurations( + @jakarta.annotation.Nullable TransactionConfigurations configurations) { + this.configurations = configurations; } /** Return true if this TransactionRequest object is equal to o. */ @@ -990,7 +987,7 @@ public boolean equals(Object o) { && Objects.equals(this.networkStaking, transactionRequest.networkStaking) && Objects.equals(this.cpuStaking, transactionRequest.cpuStaking) && Objects.equals(this.useGasless, transactionRequest.useGasless) - && Objects.equals(this.expiresAfterSeconds, transactionRequest.expiresAfterSeconds); + && Objects.equals(this.configurations, transactionRequest.configurations); } @Override @@ -1025,7 +1022,7 @@ public int hashCode() { networkStaking, cpuStaking, useGasless, - expiresAfterSeconds); + configurations); } @Override @@ -1069,9 +1066,7 @@ public String toString() { sb.append(" networkStaking: ").append(toIndentedString(networkStaking)).append("\n"); sb.append(" cpuStaking: ").append(toIndentedString(cpuStaking)).append("\n"); sb.append(" useGasless: ").append(toIndentedString(useGasless)).append("\n"); - sb.append(" expiresAfterSeconds: ") - .append(toIndentedString(expiresAfterSeconds)) - .append("\n"); + sb.append(" configurations: ").append(toIndentedString(configurations)).append("\n"); sb.append("}"); return sb.toString(); } @@ -1366,15 +1361,9 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getUseGasless())))); } - // add `expiresAfterSeconds` to the URL query string - if (getExpiresAfterSeconds() != null) { - joiner.add( - String.format( - "%sexpiresAfterSeconds%s=%s", - prefix, - suffix, - ApiClient.urlEncode( - ApiClient.valueToString(getExpiresAfterSeconds())))); + // add `configurations` to the URL query string + if (getConfigurations() != null) { + joiner.add(getConfigurations().toUrlQueryString(prefix + "configurations" + suffix)); } return joiner.toString(); diff --git a/src/main/java/com/fireblocks/sdk/model/TransferPeerPathType.java b/src/main/java/com/fireblocks/sdk/model/TransferPeerPathType.java index 52ac3c62..87359898 100644 --- a/src/main/java/com/fireblocks/sdk/model/TransferPeerPathType.java +++ b/src/main/java/com/fireblocks/sdk/model/TransferPeerPathType.java @@ -48,7 +48,9 @@ public enum TransferPeerPathType { MULTI_DESTINATION("MULTI_DESTINATION"), - OEC_PARTNER("OEC_PARTNER"); + OEC_PARTNER("OEC_PARTNER"), + + WALLET_POOL("WALLET_POOL"); private String value; diff --git a/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum.java b/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum.java index a6ba06c4..a29f180f 100644 --- a/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum.java +++ b/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum.java @@ -44,7 +44,9 @@ public enum TransferPeerTypeEnum { PROGRAM_CALL("PROGRAM_CALL"), - MULTI_DESTINATION("MULTI_DESTINATION"); + MULTI_DESTINATION("MULTI_DESTINATION"), + + WALLET_POOL("WALLET_POOL"); private String value; diff --git a/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2.java b/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2.java new file mode 100644 index 00000000..1bf7b894 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2.java @@ -0,0 +1,88 @@ +/* + * 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; + +/** Transfer peer type (source or destination) */ +public enum TransferPeerTypeEnum2 { + VAULT_ACCOUNT("VAULT_ACCOUNT"), + + EXCHANGE_ACCOUNT("EXCHANGE_ACCOUNT"), + + INTERNAL_WALLET("INTERNAL_WALLET"), + + EXTERNAL_WALLET("EXTERNAL_WALLET"), + + CONTRACT("CONTRACT"), + + NETWORK_CONNECTION("NETWORK_CONNECTION"), + + FIAT_ACCOUNT("FIAT_ACCOUNT"), + + COMPOUND("COMPOUND"), + + GAS_STATION("GAS_STATION"), + + ONE_TIME_ADDRESS("ONE_TIME_ADDRESS"), + + UNKNOWN("UNKNOWN"), + + END_USER_WALLET("END_USER_WALLET"), + + PROGRAM_CALL("PROGRAM_CALL"), + + MULTI_DESTINATION("MULTI_DESTINATION"); + + private String value; + + TransferPeerTypeEnum2(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } + + @Override + public String toString() { + return String.valueOf(value); + } + + @JsonCreator + public static TransferPeerTypeEnum2 fromValue(String value) { + for (TransferPeerTypeEnum2 b : TransferPeerTypeEnum2.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/UpdateWebhookRequest.java b/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java index 576efcf5..957db65b 100644 --- a/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java +++ b/src/main/java/com/fireblocks/sdk/model/UpdateWebhookRequest.java @@ -27,7 +27,8 @@ UpdateWebhookRequest.JSON_PROPERTY_URL, UpdateWebhookRequest.JSON_PROPERTY_DESCRIPTION, UpdateWebhookRequest.JSON_PROPERTY_EVENTS, - UpdateWebhookRequest.JSON_PROPERTY_ENABLED + UpdateWebhookRequest.JSON_PROPERTY_ENABLED, + UpdateWebhookRequest.JSON_PROPERTY_MTLS }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -45,6 +46,9 @@ public class UpdateWebhookRequest { public static final String JSON_PROPERTY_ENABLED = "enabled"; @jakarta.annotation.Nullable private Boolean enabled; + public static final String JSON_PROPERTY_MTLS = "mtls"; + @jakarta.annotation.Nullable private WebhookMtls mtls; + public UpdateWebhookRequest() {} public UpdateWebhookRequest url(@jakarta.annotation.Nullable String url) { @@ -147,6 +151,29 @@ public void setEnabled(@jakarta.annotation.Nullable Boolean enabled) { this.enabled = enabled; } + public UpdateWebhookRequest mtls(@jakarta.annotation.Nullable WebhookMtls mtls) { + this.mtls = mtls; + return this; + } + + /** + * Get mtls + * + * @return mtls + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MTLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WebhookMtls getMtls() { + return mtls; + } + + @JsonProperty(JSON_PROPERTY_MTLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMtls(@jakarta.annotation.Nullable WebhookMtls mtls) { + this.mtls = mtls; + } + /** Return true if this UpdateWebhookRequest object is equal to o. */ @Override public boolean equals(Object o) { @@ -160,12 +187,13 @@ public boolean equals(Object o) { return Objects.equals(this.url, updateWebhookRequest.url) && Objects.equals(this.description, updateWebhookRequest.description) && Objects.equals(this.events, updateWebhookRequest.events) - && Objects.equals(this.enabled, updateWebhookRequest.enabled); + && Objects.equals(this.enabled, updateWebhookRequest.enabled) + && Objects.equals(this.mtls, updateWebhookRequest.mtls); } @Override public int hashCode() { - return Objects.hash(url, description, events, enabled); + return Objects.hash(url, description, events, enabled, mtls); } @Override @@ -176,6 +204,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("}"); return sb.toString(); } @@ -272,6 +301,11 @@ 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)); + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/Webhook.java b/src/main/java/com/fireblocks/sdk/model/Webhook.java index 729f55ee..b0f859de 100644 --- a/src/main/java/com/fireblocks/sdk/model/Webhook.java +++ b/src/main/java/com/fireblocks/sdk/model/Webhook.java @@ -33,7 +33,8 @@ Webhook.JSON_PROPERTY_EVENTS, Webhook.JSON_PROPERTY_STATUS, Webhook.JSON_PROPERTY_CREATED_AT, - Webhook.JSON_PROPERTY_UPDATED_AT + Webhook.JSON_PROPERTY_UPDATED_AT, + Webhook.JSON_PROPERTY_MTLS }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -95,6 +96,9 @@ public static StatusEnum fromValue(String value) { public static final String JSON_PROPERTY_UPDATED_AT = "updatedAt"; @jakarta.annotation.Nonnull private Long updatedAt; + public static final String JSON_PROPERTY_MTLS = "mtls"; + @jakarta.annotation.Nullable private WebhookMtls mtls; + public Webhook() {} @JsonCreator @@ -282,6 +286,29 @@ public void setUpdatedAt(@jakarta.annotation.Nonnull Long updatedAt) { this.updatedAt = updatedAt; } + public Webhook mtls(@jakarta.annotation.Nullable WebhookMtls mtls) { + this.mtls = mtls; + return this; + } + + /** + * Get mtls + * + * @return mtls + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MTLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public WebhookMtls getMtls() { + return mtls; + } + + @JsonProperty(JSON_PROPERTY_MTLS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setMtls(@jakarta.annotation.Nullable WebhookMtls mtls) { + this.mtls = mtls; + } + /** Return true if this Webhook object is equal to o. */ @Override public boolean equals(Object o) { @@ -298,12 +325,13 @@ public boolean equals(Object o) { && Objects.equals(this.events, webhook.events) && Objects.equals(this.status, webhook.status) && Objects.equals(this.createdAt, webhook.createdAt) - && Objects.equals(this.updatedAt, webhook.updatedAt); + && Objects.equals(this.updatedAt, webhook.updatedAt) + && Objects.equals(this.mtls, webhook.mtls); } @Override public int hashCode() { - return Objects.hash(id, url, description, events, status, createdAt, updatedAt); + return Objects.hash(id, url, description, events, status, createdAt, updatedAt, mtls); } @Override @@ -317,6 +345,7 @@ public String toString() { sb.append(" status: ").append(toIndentedString(status)).append("\n"); sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); sb.append(" updatedAt: ").append(toIndentedString(updatedAt)).append("\n"); + sb.append(" mtls: ").append(toIndentedString(mtls)).append("\n"); sb.append("}"); return sb.toString(); } @@ -441,6 +470,11 @@ public String toUrlQueryString(String prefix) { ApiClient.urlEncode(ApiClient.valueToString(getUpdatedAt())))); } + // add `mtls` to the URL query string + if (getMtls() != null) { + joiner.add(getMtls().toUrlQueryString(prefix + "mtls" + suffix)); + } + return joiner.toString(); } } diff --git a/src/main/java/com/fireblocks/sdk/model/WebhookMtls.java b/src/main/java/com/fireblocks/sdk/model/WebhookMtls.java new file mode 100644 index 00000000..97747c75 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/WebhookMtls.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; + +/** + * 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. + */ +@JsonPropertyOrder({WebhookMtls.JSON_PROPERTY_CLIENT_SIGNED_CERT}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class WebhookMtls { + public static final String JSON_PROPERTY_CLIENT_SIGNED_CERT = "clientSignedCert"; + @jakarta.annotation.Nonnull private String clientSignedCert; + + public WebhookMtls() {} + + @JsonCreator + public WebhookMtls( + @JsonProperty(value = JSON_PROPERTY_CLIENT_SIGNED_CERT, required = true) + String clientSignedCert) { + this.clientSignedCert = clientSignedCert; + } + + public WebhookMtls clientSignedCert(@jakarta.annotation.Nonnull String clientSignedCert) { + this.clientSignedCert = clientSignedCert; + return this; + } + + /** + * Signed client certificate PEM used for mTLS when delivering notifications. + * + * @return clientSignedCert + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CLIENT_SIGNED_CERT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getClientSignedCert() { + return clientSignedCert; + } + + @JsonProperty(JSON_PROPERTY_CLIENT_SIGNED_CERT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setClientSignedCert(@jakarta.annotation.Nonnull String clientSignedCert) { + this.clientSignedCert = clientSignedCert; + } + + /** Return true if this WebhookMtls object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebhookMtls webhookMtls = (WebhookMtls) o; + return Objects.equals(this.clientSignedCert, webhookMtls.clientSignedCert); + } + + @Override + public int hashCode() { + return Objects.hash(clientSignedCert); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebhookMtls {\n"); + sb.append(" clientSignedCert: ").append(toIndentedString(clientSignedCert)).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 `clientSignedCert` to the URL query string + if (getClientSignedCert() != null) { + joiner.add( + String.format( + "%sclientSignedCert%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getClientSignedCert())))); + } + + return joiner.toString(); + } +} diff --git a/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java b/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java new file mode 100644 index 00000000..cb0ffdc6 --- /dev/null +++ b/src/main/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponse.java @@ -0,0 +1,146 @@ +/* + * 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; + +/** mTLS Certificate Signing Request response */ +@JsonPropertyOrder({WebhookMtlsCsrResponse.JSON_PROPERTY_CSR}) +@jakarta.annotation.Generated( + value = "org.openapitools.codegen.languages.JavaClientCodegen", + comments = "Generator version: 7.14.0") +public class WebhookMtlsCsrResponse { + public static final String JSON_PROPERTY_CSR = "csr"; + @jakarta.annotation.Nonnull private String csr; + + public WebhookMtlsCsrResponse() {} + + @JsonCreator + public WebhookMtlsCsrResponse( + @JsonProperty(value = JSON_PROPERTY_CSR, required = true) String csr) { + this.csr = csr; + } + + public WebhookMtlsCsrResponse csr(@jakarta.annotation.Nonnull String csr) { + this.csr = csr; + return this; + } + + /** + * The Fireblocks PEM-encoded Certificate Signing Request (CSR). + * + * @return csr + */ + @jakarta.annotation.Nonnull + @JsonProperty(JSON_PROPERTY_CSR) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getCsr() { + return csr; + } + + @JsonProperty(JSON_PROPERTY_CSR) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setCsr(@jakarta.annotation.Nonnull String csr) { + this.csr = csr; + } + + /** Return true if this WebhookMtlsCsrResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + WebhookMtlsCsrResponse webhookMtlsCsrResponse = (WebhookMtlsCsrResponse) o; + return Objects.equals(this.csr, webhookMtlsCsrResponse.csr); + } + + @Override + public int hashCode() { + return Objects.hash(csr); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class WebhookMtlsCsrResponse {\n"); + sb.append(" csr: ").append(toIndentedString(csr)).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 `csr` to the URL query string + if (getCsr() != null) { + joiner.add( + String.format( + "%scsr%s=%s", + prefix, + suffix, + ApiClient.urlEncode(ApiClient.valueToString(getCsr())))); + } + + return joiner.toString(); + } +} diff --git a/src/test/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApiTest.java b/src/test/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApiTest.java index 87218c18..2d107ea7 100644 --- a/src/test/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/ConnectedAccountsBetaApiTest.java @@ -15,6 +15,9 @@ import com.fireblocks.sdk.ApiException; import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.model.AllowlistEntry; +import com.fireblocks.sdk.model.AllowlistEntryStatus; +import com.fireblocks.sdk.model.AllowlistResponse; import com.fireblocks.sdk.model.ConnectedAccountBalancesResponse; import com.fireblocks.sdk.model.ConnectedAccountRateResponse; import com.fireblocks.sdk.model.ConnectedAccountTradingPairsResponse; @@ -62,6 +65,56 @@ public void getConnectedAccountTest() throws ApiException { api.getConnectedAccount(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 + * accounts only. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getConnectedAccountAllowlistTest() throws ApiException { + String accountId = null; + AllowlistEntryStatus status = null; + String assetId = null; + String networkId = null; + String address = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + CompletableFuture> response = + api.getConnectedAccountAllowlist( + accountId, + status, + assetId, + networkId, + address, + pageCursor, + pageSize, + sortBy, + order); + } + + /** + * 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 accounts only. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getConnectedAccountAllowlistEntryTest() throws ApiException { + String accountId = null; + String allowlistId = null; + CompletableFuture> response = + api.getConnectedAccountAllowlistEntry(accountId, allowlistId); + } + /** * Get balances for an account * @@ -149,4 +202,23 @@ public void renameConnectedAccountTest() throws ApiException { api.renameConnectedAccount( renameConnectedAccountRequest, accountId, idempotencyKey); } + + /** + * 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 accounts only. + * + * @throws ApiException if the Api call fails + */ + @Test + public void syncConnectedAccountAllowlistTest() throws ApiException { + String accountId = null; + String idempotencyKey = null; + + CompletableFuture> response = + api.syncConnectedAccountAllowlist(accountId, idempotencyKey); + } } diff --git a/src/test/java/com/fireblocks/sdk/api/OnchainDataApiTest.java b/src/test/java/com/fireblocks/sdk/api/OnchainDataApiTest.java index 3e5cdcf6..376e6509 100644 --- a/src/test/java/com/fireblocks/sdk/api/OnchainDataApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/OnchainDataApiTest.java @@ -15,14 +15,14 @@ import com.fireblocks.sdk.ApiException; import com.fireblocks.sdk.ApiResponse; -import com.fireblocks.sdk.model.AccessRegistryCurrentStateResponse; +import com.fireblocks.sdk.model.AccessRegistryCurrentStateResponse2; import com.fireblocks.sdk.model.AccessRegistrySummaryResponse; -import com.fireblocks.sdk.model.AddressBalancePagedResponse; -import com.fireblocks.sdk.model.BalanceHistoryPagedResponse; -import com.fireblocks.sdk.model.OnchainTransactionsPagedResponse; -import com.fireblocks.sdk.model.RoleDetails; +import com.fireblocks.sdk.model.AddressBalancePagedResponse2; +import com.fireblocks.sdk.model.BalanceHistoryPagedResponse2; +import com.fireblocks.sdk.model.OnchainTransactionsPagedResponse2; +import com.fireblocks.sdk.model.RoleDetails2; import com.fireblocks.sdk.model.TokenContractSummaryResponse; -import com.fireblocks.sdk.model.TotalSupplyPagedResponse; +import com.fireblocks.sdk.model.TotalSupplyPagedResponse2; import java.time.OffsetDateTime; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -51,7 +51,7 @@ public void getAccessRegistryCurrentStateTest() throws ApiException { Integer pageSize = null; String sortBy = null; String order = null; - CompletableFuture> response = + CompletableFuture> response = api.getAccessRegistryCurrentState( baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, order); } @@ -84,7 +84,7 @@ public void getAccessRegistrySummaryTest() throws ApiException { public void getActiveRolesForContractTest() throws ApiException { String baseAssetId = null; String contractAddress = null; - CompletableFuture>> response = + CompletableFuture>> response = api.getActiveRolesForContract(baseAssetId, contractAddress); } @@ -108,7 +108,7 @@ public void getContractBalanceHistoryTest() throws ApiException { Integer pageSize = null; String sortBy = null; String order = null; - CompletableFuture> response = + CompletableFuture> response = api.getContractBalanceHistory( baseAssetId, contractAddress, @@ -157,7 +157,7 @@ public void getContractTotalSupplyTest() throws ApiException { Integer pageSize = null; String sortBy = null; String order = null; - CompletableFuture> response = + CompletableFuture> response = api.getContractTotalSupply( baseAssetId, contractAddress, @@ -187,7 +187,7 @@ public void getLatestBalancesForContractTest() throws ApiException { Integer pageSize = null; String sortBy = null; String order = null; - CompletableFuture> response = + CompletableFuture> response = api.getLatestBalancesForContract( baseAssetId, contractAddress, @@ -216,7 +216,7 @@ public void getOnchainTransactionsTest() throws ApiException { Integer pageSize = null; String sortBy = null; String order = null; - CompletableFuture> response = + CompletableFuture> response = api.getOnchainTransactions( baseAssetId, contractAddress, diff --git a/src/test/java/com/fireblocks/sdk/api/StakingApiTest.java b/src/test/java/com/fireblocks/sdk/api/StakingApiTest.java index 0dd65de8..d4cf5d62 100644 --- a/src/test/java/com/fireblocks/sdk/api/StakingApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/StakingApiTest.java @@ -27,6 +27,7 @@ import com.fireblocks.sdk.model.SplitResponse; import com.fireblocks.sdk.model.StakeRequest; import com.fireblocks.sdk.model.StakeResponse; +import com.fireblocks.sdk.model.StakingPositionRelatedTransactionsPaginatedResponse; import com.fireblocks.sdk.model.StakingPositionsPaginatedResponse; import com.fireblocks.sdk.model.StakingProvider; import com.fireblocks.sdk.model.UnstakeRequest; @@ -158,6 +159,25 @@ public void getDelegationByIdTest() throws ApiException { CompletableFuture> response = api.getDelegationById(id); } + /** + * List related transactions for a position + * + *

Returns enriched transaction history for a staking position with cursor-based pagination. + * Includes in-flight transactions with status pending. The in-flight transaction is always + * returned first; completed and failed history is ordered by the order parameter. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getPositionRelatedTransactionsTest() throws ApiException { + String id = null; + Integer pageSize = null; + String pageCursor = null; + String order = null; + CompletableFuture> + response = api.getPositionRelatedTransactions(id, pageSize, pageCursor, order); + } + /** * List staking positions (Paginated) * diff --git a/src/test/java/com/fireblocks/sdk/api/TokenizationApiTest.java b/src/test/java/com/fireblocks/sdk/api/TokenizationApiTest.java index 64881534..c9d52daf 100644 --- a/src/test/java/com/fireblocks/sdk/api/TokenizationApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/TokenizationApiTest.java @@ -15,7 +15,13 @@ import com.fireblocks.sdk.ApiException; import com.fireblocks.sdk.ApiResponse; +import com.fireblocks.sdk.model.AccessRegistryCurrentStateResponse; +import com.fireblocks.sdk.model.AccessRegistrySummaryResponse; +import com.fireblocks.sdk.model.ActiveRolesResponse; import com.fireblocks.sdk.model.AdapterProcessingResult; +import com.fireblocks.sdk.model.AddressBalanceItemDto; +import com.fireblocks.sdk.model.AddressBalancePagedResponse; +import com.fireblocks.sdk.model.BalanceHistoryPagedResponse; import com.fireblocks.sdk.model.CollectionBurnRequestDto; import com.fireblocks.sdk.model.CollectionBurnResponseDto; import com.fireblocks.sdk.model.CollectionDeployRequestDto; @@ -31,6 +37,8 @@ import com.fireblocks.sdk.model.GetLayerZeroPeersResponse; import com.fireblocks.sdk.model.GetLinkedCollectionsPaginatedResponse; import com.fireblocks.sdk.model.LinkedTokensCount; +import com.fireblocks.sdk.model.OnchainTransactionsPagedResponse; +import com.fireblocks.sdk.model.OnchainTransfersPagedResponse; import com.fireblocks.sdk.model.ReissueMultichainTokenRequest; import com.fireblocks.sdk.model.RemoveLayerZeroAdaptersRequest; import com.fireblocks.sdk.model.RemoveLayerZeroAdaptersResponse; @@ -40,11 +48,14 @@ import com.fireblocks.sdk.model.SetLayerZeroDvnConfigResponse; import com.fireblocks.sdk.model.SetLayerZeroPeersRequest; import com.fireblocks.sdk.model.SetLayerZeroPeersResponse; +import com.fireblocks.sdk.model.TokenContractSummaryResponse; import com.fireblocks.sdk.model.TokenLinkDto; import com.fireblocks.sdk.model.TokenLinkRequestDto; import com.fireblocks.sdk.model.TokensPaginatedResponse; +import com.fireblocks.sdk.model.TotalSupplyPagedResponse; import com.fireblocks.sdk.model.ValidateLayerZeroChannelResponse; import java.math.BigDecimal; +import java.time.OffsetDateTime; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -255,6 +266,207 @@ public void getLinkedTokensCountTest() throws ApiException { CompletableFuture> response = api.getLinkedTokensCount(); } + /** + * Get current state of addresses in an access registry + * + *

Returns the currently active addresses in the access registry (added but not removed). + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenAccessRegistryAddressesTest() throws ApiException { + String id = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + CompletableFuture> response = + api.getTokenAccessRegistryAddresses(id, pageCursor, pageSize, sortBy, order); + } + + /** + * Get summary of an access registry + * + *

Returns a summary of the current state of the access registry. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenAccessRegistrySummaryTest() throws ApiException { + String id = null; + CompletableFuture> response = + api.getTokenAccessRegistrySummary(id); + } + + /** + * Get the latest balance for a specific account + * + *

Returns the latest token balance for the specified account address. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenBalanceForAccountTest() throws ApiException { + String id = null; + String accountAddress = null; + CompletableFuture> response = + api.getTokenBalanceForAccount(id, accountAddress); + } + + /** + * Get balance history for a specific account + * + *

Returns paginated balance history for the specified account address with optional + * time-range filtering. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenBalanceHistoryTest() throws ApiException { + String id = null; + String accountAddress = null; + OffsetDateTime startDate = null; + OffsetDateTime endDate = null; + String interval = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + CompletableFuture> response = + api.getTokenBalanceHistory( + id, + accountAddress, + startDate, + endDate, + interval, + pageCursor, + pageSize, + sortBy, + order); + } + + /** + * Get latest balances for all holders of a token + * + *

Returns the latest balance for each unique address holding this token. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenBalancesTest() throws ApiException { + String id = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + CompletableFuture> response = + api.getTokenBalances(id, pageCursor, pageSize, sortBy, order); + } + + /** + * Get onchain summary for a token + * + *

Returns the total number of unique holders and the total supply for the token contract. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenContractSummaryTest() throws ApiException { + String id = null; + CompletableFuture> response = + api.getTokenContractSummary(id); + } + + /** + * Get active RBAC roles for a token + * + *

Returns a list of currently active roles for the token contract. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenRbacTest() throws ApiException { + String id = null; + CompletableFuture> response = api.getTokenRbac(id); + } + + /** + * Get historical total supply for a token + * + *

Returns paginated total supply history for the token contract with optional time-range + * filtering and binning. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenTotalSupplyTest() throws ApiException { + String id = null; + OffsetDateTime startDate = null; + OffsetDateTime endDate = null; + String interval = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + CompletableFuture> response = + api.getTokenTotalSupply( + id, startDate, endDate, interval, pageCursor, pageSize, sortBy, order); + } + + /** + * Get onchain transactions for a token + * + *

Returns a paginated list of onchain transactions for the token contract, optionally + * filtered by date range. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenTransactionsTest() throws ApiException { + String id = null; + OffsetDateTime startDate = null; + OffsetDateTime endDate = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + CompletableFuture> response = + api.getTokenTransactions( + id, startDate, endDate, pageCursor, pageSize, sortBy, order); + } + + /** + * Get onchain transfers for a token + * + *

Returns a paginated list of ERC20 transfer events for the token contract, optionally + * filtered by date range. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getTokenTransfersTest() throws ApiException { + String id = null; + OffsetDateTime startDate = null; + OffsetDateTime endDate = null; + String pageCursor = null; + Integer pageSize = null; + String sortBy = null; + String order = null; + String sender = null; + String receiver = null; + CompletableFuture> response = + api.getTokenTransfers( + id, + startDate, + endDate, + pageCursor, + pageSize, + sortBy, + order, + sender, + receiver); + } + /** * Issue a new token * diff --git a/src/test/java/com/fireblocks/sdk/api/TradingBetaApiTest.java b/src/test/java/com/fireblocks/sdk/api/TradingBetaApiTest.java index 9db0ccc0..5c395fd0 100644 --- a/src/test/java/com/fireblocks/sdk/api/TradingBetaApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/TradingBetaApiTest.java @@ -21,12 +21,15 @@ import com.fireblocks.sdk.model.GetOrdersResponse; import com.fireblocks.sdk.model.OffersResponse; import com.fireblocks.sdk.model.OrderDetails; +import com.fireblocks.sdk.model.OrderRequirementDetails; import com.fireblocks.sdk.model.OrderStatus; import com.fireblocks.sdk.model.ProvidersListResponse; import com.fireblocks.sdk.model.QuotesResponse; import com.fireblocks.sdk.model.RatesRequest; import com.fireblocks.sdk.model.RatesResponse; +import com.fireblocks.sdk.model.SubmitOrderRequirementRequest; import com.fireblocks.sdk.model.TradingProvider; +import java.io.File; import java.util.List; import java.util.concurrent.CompletableFuture; import org.junit.Ignore; @@ -145,6 +148,31 @@ public void getOrderTest() throws ApiException { CompletableFuture> response = api.getOrder(orderId); } + /** + * Get order requirement details for an order + * + *

Fetch order requirement details for an order that is in `AWAITING_INFORMATION` + * status. The response includes `requirementId` and `dueBy` metadata, a + * `requiredData` JSON Schema (Draft-7) describing the shape of the `data` + * object expected on `POST /trading/orders/{orderId}/requirement/data`, and + * `requiredFiles` descriptors for any files the provider requires (uploaded via + * `POST /trading/orders/{orderId}/requirement/file`). Note: These endpoints are + * currently in beta and might be subject to changes. If you want to participate and learn more + * about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send + * an email to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, + * Approver, Editor, Viewer. For detailed information about error codes and troubleshooting, + * please refer to our [API Error Codes + * documentation](https://developers.fireblocks.com/reference/api-error-codes). + * + * @throws ApiException if the Api call fails + */ + @Test + public void getOrderRequirementsTest() throws ApiException { + String orderId = null; + CompletableFuture> response = + api.getOrderRequirements(orderId); + } + /** * Get orders * @@ -222,4 +250,59 @@ public void getTradingProvidersTest() throws ApiException { CompletableFuture> response = api.getTradingProviders(pageSize, pageCursor); } + + /** + * Submit a response to an order requirement + * + *

Submit the user's textual response to an order requirement on an order that is in + * `AWAITING_INFORMATION` status. The request body carries `data` — a + * free-form object conforming to the `requiredData` JSON Schema returned by the GET + * endpoint. Any required files are uploaded separately via `POST + * /trading/orders/{orderId}/requirement/file`. Note: These endpoints are currently in beta + * and might be subject to changes. If you want to participate and learn more about the + * Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email + * to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + * For detailed information about error codes and troubleshooting, please refer to our [API + * Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + * + * @throws ApiException if the Api call fails + */ + @Test + public void submitOrderRequirementsTest() throws ApiException { + SubmitOrderRequirementRequest submitOrderRequirementRequest = null; + String orderId = null; + String idempotencyKey = null; + + CompletableFuture> response = + api.submitOrderRequirements(submitOrderRequirementRequest, orderId, idempotencyKey); + } + + /** + * Upload a file for an order requirement + * + *

Upload a single file (multipart/form-data) in response to an order requirement on an order + * that is in `AWAITING_INFORMATION` status. Call this endpoint once per required + * file. Send `fileKey` (matching a `fileKey` from `requiredFiles` + * on the GET response) and the binary `file`. Its type must be one of the supported + * file formats. Fireblocks encrypts each file and uploads it individually to the underlying + * provider. The textual response is submitted separately via `POST + * /trading/orders/{orderId}/requirement/data`. Note: These endpoints are currently in beta + * and might be subject to changes. If you want to participate and learn more about the + * Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email + * to CSM@fireblocks.com. Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor. + * For detailed information about error codes and troubleshooting, please refer to our [API + * Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes). + * + * @throws ApiException if the Api call fails + */ + @Test + public void uploadOrderRequirementFileTest() throws ApiException { + String fileKey = null; + File _file = null; + String orderId = null; + String idempotencyKey = null; + + CompletableFuture> response = + api.uploadOrderRequirementFile(fileKey, _file, orderId, idempotencyKey); + } } diff --git a/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java b/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java index 299010b3..01dff66b 100644 --- a/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java +++ b/src/test/java/com/fireblocks/sdk/api/WebhooksV2ApiTest.java @@ -30,6 +30,7 @@ import com.fireblocks.sdk.model.Webhook; import com.fireblocks.sdk.model.WebhookEvent; import com.fireblocks.sdk.model.WebhookMetric; +import com.fireblocks.sdk.model.WebhookMtlsCsrResponse; import com.fireblocks.sdk.model.WebhookPaginatedResponse; import java.math.BigDecimal; import java.util.List; @@ -88,6 +89,19 @@ public void getMetricsTest() throws ApiException { api.getMetrics(webhookId, metricName); } + /** + * Get mTLS CSR + * + *

Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to + * generate their signed client certificate. + * + * @throws ApiException if the Api call fails + */ + @Test + public void getMtlsCsrTest() throws ApiException { + CompletableFuture> response = api.getMtlsCsr(); + } + /** * Get notification by id * diff --git a/src/test/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2Test.java b/src/test/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2Test.java new file mode 100644 index 00000000..46569b84 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AccessRegistryCurrentStateResponse2Test.java @@ -0,0 +1,52 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for AccessRegistryCurrentStateResponse2 */ +class AccessRegistryCurrentStateResponse2Test { + private final AccessRegistryCurrentStateResponse2 model = + new AccessRegistryCurrentStateResponse2(); + + /** Model tests for AccessRegistryCurrentStateResponse2 */ + @Test + void testAccessRegistryCurrentStateResponse2() { + // TODO: test AccessRegistryCurrentStateResponse2 + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } + + /** Test the property 'prev' */ + @Test + void prevTest() { + // TODO: test prev + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ActiveRolesResponseTest.java b/src/test/java/com/fireblocks/sdk/model/ActiveRolesResponseTest.java new file mode 100644 index 00000000..b30386f4 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ActiveRolesResponseTest.java @@ -0,0 +1,33 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for ActiveRolesResponse */ +class ActiveRolesResponseTest { + private final ActiveRolesResponse model = new ActiveRolesResponse(); + + /** Model tests for ActiveRolesResponse */ + @Test + void testActiveRolesResponse() { + // TODO: test ActiveRolesResponse + } + + /** Test the property 'activeRoles' */ + @Test + void activeRolesTest() { + // TODO: test activeRoles + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2Test.java b/src/test/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2Test.java new file mode 100644 index 00000000..a7fb3f8a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AddressBalancePagedResponse2Test.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for AddressBalancePagedResponse2 */ +class AddressBalancePagedResponse2Test { + private final AddressBalancePagedResponse2 model = new AddressBalancePagedResponse2(); + + /** Model tests for AddressBalancePagedResponse2 */ + @Test + void testAddressBalancePagedResponse2() { + // TODO: test AddressBalancePagedResponse2 + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } + + /** Test the property 'prev' */ + @Test + void prevTest() { + // TODO: test prev + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AllowlistEntryStatusTest.java b/src/test/java/com/fireblocks/sdk/model/AllowlistEntryStatusTest.java new file mode 100644 index 00000000..395e5a5d --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AllowlistEntryStatusTest.java @@ -0,0 +1,25 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for AllowlistEntryStatus */ +class AllowlistEntryStatusTest { + /** Model tests for AllowlistEntryStatus */ + @Test + void testAllowlistEntryStatus() { + // TODO: test AllowlistEntryStatus + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AllowlistEntryTest.java b/src/test/java/com/fireblocks/sdk/model/AllowlistEntryTest.java new file mode 100644 index 00000000..34a6b257 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AllowlistEntryTest.java @@ -0,0 +1,87 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for AllowlistEntry */ +class AllowlistEntryTest { + private final AllowlistEntry model = new AllowlistEntry(); + + /** Model tests for AllowlistEntry */ + @Test + void testAllowlistEntry() { + // TODO: test AllowlistEntry + } + + /** Test the property 'id' */ + @Test + void idTest() { + // TODO: test id + } + + /** Test the property 'address' */ + @Test + void addressTest() { + // TODO: test address + } + + /** Test the property 'assets' */ + @Test + void assetsTest() { + // TODO: test assets + } + + /** Test the property 'networks' */ + @Test + void networksTest() { + // TODO: test networks + } + + /** Test the property 'label' */ + @Test + void labelTest() { + // TODO: test label + } + + /** Test the property 'addressIdentifier' */ + @Test + void addressIdentifierTest() { + // TODO: test addressIdentifier + } + + /** Test the property 'status' */ + @Test + void statusTest() { + // TODO: test status + } + + /** Test the property 'addedAt' */ + @Test + void addedAtTest() { + // TODO: test addedAt + } + + /** Test the property 'providerReferenceId' */ + @Test + void providerReferenceIdTest() { + // TODO: test providerReferenceId + } + + /** Test the property 'providerMetadata' */ + @Test + void providerMetadataTest() { + // TODO: test providerMetadata + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AllowlistMetadataTest.java b/src/test/java/com/fireblocks/sdk/model/AllowlistMetadataTest.java new file mode 100644 index 00000000..a87a76e6 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AllowlistMetadataTest.java @@ -0,0 +1,39 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for AllowlistMetadata */ +class AllowlistMetadataTest { + private final AllowlistMetadata model = new AllowlistMetadata(); + + /** Model tests for AllowlistMetadata */ + @Test + void testAllowlistMetadata() { + // TODO: test AllowlistMetadata + } + + /** Test the property 'lastSyncedAt' */ + @Test + void lastSyncedAtTest() { + // TODO: test lastSyncedAt + } + + /** Test the property 'syncStatus' */ + @Test + void syncStatusTest() { + // TODO: test syncStatus + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/AllowlistResponseTest.java b/src/test/java/com/fireblocks/sdk/model/AllowlistResponseTest.java new file mode 100644 index 00000000..38b40c5b --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/AllowlistResponseTest.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for AllowlistResponse */ +class AllowlistResponseTest { + private final AllowlistResponse model = new AllowlistResponse(); + + /** Model tests for AllowlistResponse */ + @Test + void testAllowlistResponse() { + // TODO: test AllowlistResponse + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'metadata' */ + @Test + void metadataTest() { + // TODO: test metadata + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2Test.java b/src/test/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2Test.java new file mode 100644 index 00000000..760f074b --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/BalanceHistoryPagedResponse2Test.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for BalanceHistoryPagedResponse2 */ +class BalanceHistoryPagedResponse2Test { + private final BalanceHistoryPagedResponse2 model = new BalanceHistoryPagedResponse2(); + + /** Model tests for BalanceHistoryPagedResponse2 */ + @Test + void testBalanceHistoryPagedResponse2() { + // TODO: test BalanceHistoryPagedResponse2 + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } + + /** Test the property 'prev' */ + @Test + void prevTest() { + // TODO: test prev + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/BusinessIdentificationTest.java b/src/test/java/com/fireblocks/sdk/model/BusinessIdentificationTest.java index cacc71a9..29c81ca8 100644 --- a/src/test/java/com/fireblocks/sdk/model/BusinessIdentificationTest.java +++ b/src/test/java/com/fireblocks/sdk/model/BusinessIdentificationTest.java @@ -72,4 +72,16 @@ void emailTest() { void phoneTest() { // TODO: test phone } + + /** Test the property 'dateOfRegistration' */ + @Test + void dateOfRegistrationTest() { + // TODO: test dateOfRegistration + } + + /** Test the property 'countryOfRegistration' */ + @Test + void countryOfRegistrationTest() { + // TODO: test countryOfRegistration + } } diff --git a/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTest.java b/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTest.java index 6230fe38..b259926a 100644 --- a/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTest.java +++ b/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTest.java @@ -66,4 +66,22 @@ void manifestTest() { void parentIdTest() { // TODO: test parentId } + + /** Test the property 'apiKey' */ + @Test + void apiKeyTest() { + // TODO: test apiKey + } + + /** Test the property 'providerAccountName' */ + @Test + void providerAccountNameTest() { + // TODO: test providerAccountName + } + + /** Test the property 'accountType' */ + @Test + void accountTypeTest() { + // TODO: test accountType + } } diff --git a/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTypeTest.java b/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTypeTest.java new file mode 100644 index 00000000..155ca699 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/ConnectedAccountTypeTest.java @@ -0,0 +1,25 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for ConnectedAccountType */ +class ConnectedAccountTypeTest { + /** Model tests for ConnectedAccountType */ + @Test + void testConnectedAccountType() { + // TODO: test ConnectedAccountType + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponseTest.java b/src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponseTest.java index 4abc316c..59d9ffcb 100644 --- a/src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponseTest.java +++ b/src/test/java/com/fireblocks/sdk/model/ConnectedSingleAccountResponseTest.java @@ -67,6 +67,24 @@ void parentIdTest() { // TODO: test parentId } + /** Test the property 'apiKey' */ + @Test + void apiKeyTest() { + // TODO: test apiKey + } + + /** Test the property 'providerAccountName' */ + @Test + void providerAccountNameTest() { + // TODO: test providerAccountName + } + + /** Test the property 'accountType' */ + @Test + void accountTypeTest() { + // TODO: test accountType + } + /** Test the property 'subAccountsIds' */ @Test void subAccountsIdsTest() { diff --git a/src/test/java/com/fireblocks/sdk/model/CreateWebhookRequestTest.java b/src/test/java/com/fireblocks/sdk/model/CreateWebhookRequestTest.java index 3ed4ad6e..a2effaba 100644 --- a/src/test/java/com/fireblocks/sdk/model/CreateWebhookRequestTest.java +++ b/src/test/java/com/fireblocks/sdk/model/CreateWebhookRequestTest.java @@ -48,4 +48,10 @@ void eventsTest() { void enabledTest() { // TODO: test enabled } + + /** Test the property 'mtls' */ + @Test + void mtlsTest() { + // TODO: test mtls + } } diff --git a/src/test/java/com/fireblocks/sdk/model/IdentificationTest.java b/src/test/java/com/fireblocks/sdk/model/IdentificationTest.java index bf24b3c0..51f1b353 100644 --- a/src/test/java/com/fireblocks/sdk/model/IdentificationTest.java +++ b/src/test/java/com/fireblocks/sdk/model/IdentificationTest.java @@ -97,6 +97,18 @@ void additionalIdTypeTest() { // TODO: test additionalIdType } + /** Test the property 'nationality' */ + @Test + void nationalityTest() { + // TODO: test nationality + } + + /** Test the property 'identificationDocuments' */ + @Test + void identificationDocumentsTest() { + // TODO: test identificationDocuments + } + /** Test the property 'businessName' */ @Test void businessNameTest() { @@ -108,4 +120,16 @@ void businessNameTest() { void registrationNumberTest() { // TODO: test registrationNumber } + + /** Test the property 'dateOfRegistration' */ + @Test + void dateOfRegistrationTest() { + // TODO: test dateOfRegistration + } + + /** Test the property 'countryOfRegistration' */ + @Test + void countryOfRegistrationTest() { + // TODO: test countryOfRegistration + } } diff --git a/src/test/java/com/fireblocks/sdk/model/OfferTest.java b/src/test/java/com/fireblocks/sdk/model/OfferTest.java index 445da1ed..8d76092c 100644 --- a/src/test/java/com/fireblocks/sdk/model/OfferTest.java +++ b/src/test/java/com/fireblocks/sdk/model/OfferTest.java @@ -127,10 +127,10 @@ void expiresAtTest() { // TODO: test expiresAt } - /** Test the property 'orderCreationRequirements' */ + /** Test the property 'requiredParticipantsIdentificationOnOrder' */ @Test - void orderCreationRequirementsTest() { - // TODO: test orderCreationRequirements + void requiredParticipantsIdentificationOnOrderTest() { + // TODO: test requiredParticipantsIdentificationOnOrder } /** Test the property 'type' */ diff --git a/src/test/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2Test.java b/src/test/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2Test.java new file mode 100644 index 00000000..483c5148 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/OnchainTransactionsPagedResponse2Test.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for OnchainTransactionsPagedResponse2 */ +class OnchainTransactionsPagedResponse2Test { + private final OnchainTransactionsPagedResponse2 model = new OnchainTransactionsPagedResponse2(); + + /** Model tests for OnchainTransactionsPagedResponse2 */ + @Test + void testOnchainTransactionsPagedResponse2() { + // TODO: test OnchainTransactionsPagedResponse2 + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } + + /** Test the property 'prev' */ + @Test + void prevTest() { + // TODO: test prev + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/OnchainTransferEventTest.java b/src/test/java/com/fireblocks/sdk/model/OnchainTransferEventTest.java new file mode 100644 index 00000000..80d8598f --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/OnchainTransferEventTest.java @@ -0,0 +1,105 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for OnchainTransferEvent */ +class OnchainTransferEventTest { + private final OnchainTransferEvent model = new OnchainTransferEvent(); + + /** Model tests for OnchainTransferEvent */ + @Test + void testOnchainTransferEvent() { + // TODO: test OnchainTransferEvent + } + + /** Test the property 'id' */ + @Test + void idTest() { + // TODO: test id + } + + /** Test the property 'transactionHash' */ + @Test + void transactionHashTest() { + // TODO: test transactionHash + } + + /** Test the property 'logIndex' */ + @Test + void logIndexTest() { + // TODO: test logIndex + } + + /** Test the property 'contractAddress' */ + @Test + void contractAddressTest() { + // TODO: test contractAddress + } + + /** Test the property 'fromAddress' */ + @Test + void fromAddressTest() { + // TODO: test fromAddress + } + + /** Test the property 'toAddress' */ + @Test + void toAddressTest() { + // TODO: test toAddress + } + + /** Test the property 'value' */ + @Test + void valueTest() { + // TODO: test value + } + + /** Test the property 'chainId' */ + @Test + void chainIdTest() { + // TODO: test chainId + } + + /** Test the property 'baseAssetId' */ + @Test + void baseAssetIdTest() { + // TODO: test baseAssetId + } + + /** Test the property 'blockNumber' */ + @Test + void blockNumberTest() { + // TODO: test blockNumber + } + + /** Test the property 'blockHash' */ + @Test + void blockHashTest() { + // TODO: test blockHash + } + + /** Test the property 'blockTimestamp' */ + @Test + void blockTimestampTest() { + // TODO: test blockTimestamp + } + + /** Test the property 'eventName' */ + @Test + void eventNameTest() { + // TODO: test eventName + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponseTest.java b/src/test/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponseTest.java new file mode 100644 index 00000000..eedc85e8 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/OnchainTransfersPagedResponseTest.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for OnchainTransfersPagedResponse */ +class OnchainTransfersPagedResponseTest { + private final OnchainTransfersPagedResponse model = new OnchainTransfersPagedResponse(); + + /** Model tests for OnchainTransfersPagedResponse */ + @Test + void testOnchainTransfersPagedResponse() { + // TODO: test OnchainTransfersPagedResponse + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } + + /** Test the property 'prev' */ + @Test + void prevTest() { + // TODO: test prev + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileTypeTest.java b/src/test/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileTypeTest.java new file mode 100644 index 00000000..5dddf383 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/OrderRequirementAllowedFileTypeTest.java @@ -0,0 +1,25 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for OrderRequirementAllowedFileType */ +class OrderRequirementAllowedFileTypeTest { + /** Model tests for OrderRequirementAllowedFileType */ + @Test + void testOrderRequirementAllowedFileType() { + // TODO: test OrderRequirementAllowedFileType + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/OrderRequirementDetailsTest.java b/src/test/java/com/fireblocks/sdk/model/OrderRequirementDetailsTest.java new file mode 100644 index 00000000..c530edf9 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/OrderRequirementDetailsTest.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for OrderRequirementDetails */ +class OrderRequirementDetailsTest { + private final OrderRequirementDetails model = new OrderRequirementDetails(); + + /** Model tests for OrderRequirementDetails */ + @Test + void testOrderRequirementDetails() { + // TODO: test OrderRequirementDetails + } + + /** Test the property 'requirementId' */ + @Test + void requirementIdTest() { + // TODO: test requirementId + } + + /** Test the property 'dueBy' */ + @Test + void dueByTest() { + // TODO: test dueBy + } + + /** Test the property 'requiredData' */ + @Test + void requiredDataTest() { + // TODO: test requiredData + } + + /** Test the property 'requiredFiles' */ + @Test + void requiredFilesTest() { + // TODO: test requiredFiles + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/OrderRequirementFileTest.java b/src/test/java/com/fireblocks/sdk/model/OrderRequirementFileTest.java new file mode 100644 index 00000000..0c042320 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/OrderRequirementFileTest.java @@ -0,0 +1,45 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for OrderRequirementFile */ +class OrderRequirementFileTest { + private final OrderRequirementFile model = new OrderRequirementFile(); + + /** Model tests for OrderRequirementFile */ + @Test + void testOrderRequirementFile() { + // TODO: test OrderRequirementFile + } + + /** Test the property 'fileKey' */ + @Test + void fileKeyTest() { + // TODO: test fileKey + } + + /** Test the property 'description' */ + @Test + void descriptionTest() { + // TODO: test description + } + + /** Test the property 'allowedFileTypes' */ + @Test + void allowedFileTypesTest() { + // TODO: test allowedFileTypes + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationDocumentTest.java b/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationDocumentTest.java new file mode 100644 index 00000000..a39fb358 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationDocumentTest.java @@ -0,0 +1,45 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for PersonalIdentificationDocument */ +class PersonalIdentificationDocumentTest { + private final PersonalIdentificationDocument model = new PersonalIdentificationDocument(); + + /** Model tests for PersonalIdentificationDocument */ + @Test + void testPersonalIdentificationDocument() { + // TODO: test PersonalIdentificationDocument + } + + /** Test the property 'id' */ + @Test + void idTest() { + // TODO: test id + } + + /** Test the property 'type' */ + @Test + void typeTest() { + // TODO: test type + } + + /** Test the property 'expirationDate' */ + @Test + void expirationDateTest() { + // TODO: test expirationDate + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationTest.java b/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationTest.java index cb960e3f..9630a9bb 100644 --- a/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationTest.java +++ b/src/test/java/com/fireblocks/sdk/model/PersonalIdentificationTest.java @@ -96,4 +96,16 @@ void additionalIdNumberTest() { void additionalIdTypeTest() { // TODO: test additionalIdType } + + /** Test the property 'nationality' */ + @Test + void nationalityTest() { + // TODO: test nationality + } + + /** Test the property 'identificationDocuments' */ + @Test + void identificationDocumentsTest() { + // TODO: test identificationDocuments + } } diff --git a/src/test/java/com/fireblocks/sdk/model/PositionRelatedTransactionTest.java b/src/test/java/com/fireblocks/sdk/model/PositionRelatedTransactionTest.java new file mode 100644 index 00000000..f4dd080a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/PositionRelatedTransactionTest.java @@ -0,0 +1,69 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for PositionRelatedTransaction */ +class PositionRelatedTransactionTest { + private final PositionRelatedTransaction model = new PositionRelatedTransaction(); + + /** Model tests for PositionRelatedTransaction */ + @Test + void testPositionRelatedTransaction() { + // TODO: test PositionRelatedTransaction + } + + /** Test the property 'txId' */ + @Test + void txIdTest() { + // TODO: test txId + } + + /** Test the property 'txHash' */ + @Test + void txHashTest() { + // TODO: test txHash + } + + /** Test the property 'stakingOperation' */ + @Test + void stakingOperationTest() { + // TODO: test stakingOperation + } + + /** Test the property 'timestamp' */ + @Test + void timestampTest() { + // TODO: test timestamp + } + + /** Test the property 'status' */ + @Test + void statusTest() { + // TODO: test status + } + + /** Test the property 'amount' */ + @Test + void amountTest() { + // TODO: test amount + } + + /** Test the property 'txNote' */ + @Test + void txNoteTest() { + // TODO: test txNote + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/QuoteOfferTest.java b/src/test/java/com/fireblocks/sdk/model/QuoteOfferTest.java index a73e3582..4cc8c21e 100644 --- a/src/test/java/com/fireblocks/sdk/model/QuoteOfferTest.java +++ b/src/test/java/com/fireblocks/sdk/model/QuoteOfferTest.java @@ -115,10 +115,10 @@ void expiresAtTest() { // TODO: test expiresAt } - /** Test the property 'orderCreationRequirements' */ + /** Test the property 'requiredParticipantsIdentificationOnOrder' */ @Test - void orderCreationRequirementsTest() { - // TODO: test orderCreationRequirements + void requiredParticipantsIdentificationOnOrderTest() { + // TODO: test requiredParticipantsIdentificationOnOrder } /** Test the property 'type' */ diff --git a/src/test/java/com/fireblocks/sdk/model/QuoteTest.java b/src/test/java/com/fireblocks/sdk/model/QuoteTest.java index 993fe285..ae87e22c 100644 --- a/src/test/java/com/fireblocks/sdk/model/QuoteTest.java +++ b/src/test/java/com/fireblocks/sdk/model/QuoteTest.java @@ -115,10 +115,10 @@ void expiresAtTest() { // TODO: test expiresAt } - /** Test the property 'orderCreationRequirements' */ + /** Test the property 'requiredParticipantsIdentificationOnOrder' */ @Test - void orderCreationRequirementsTest() { - // TODO: test orderCreationRequirements + void requiredParticipantsIdentificationOnOrderTest() { + // TODO: test requiredParticipantsIdentificationOnOrder } /** Test the property 'type' */ diff --git a/src/test/java/com/fireblocks/sdk/model/RoleDetails2Test.java b/src/test/java/com/fireblocks/sdk/model/RoleDetails2Test.java new file mode 100644 index 00000000..1d27e04a --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/RoleDetails2Test.java @@ -0,0 +1,45 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for RoleDetails2 */ +class RoleDetails2Test { + private final RoleDetails2 model = new RoleDetails2(); + + /** Model tests for RoleDetails2 */ + @Test + void testRoleDetails2() { + // TODO: test RoleDetails2 + } + + /** Test the property 'roleHash' */ + @Test + void roleHashTest() { + // TODO: test roleHash + } + + /** Test the property 'description' */ + @Test + void descriptionTest() { + // TODO: test description + } + + /** Test the property 'accounts' */ + @Test + void accountsTest() { + // TODO: test accounts + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponseTest.java b/src/test/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponseTest.java new file mode 100644 index 00000000..992261cd --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/StakingPositionRelatedTransactionsPaginatedResponseTest.java @@ -0,0 +1,40 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for StakingPositionRelatedTransactionsPaginatedResponse */ +class StakingPositionRelatedTransactionsPaginatedResponseTest { + private final StakingPositionRelatedTransactionsPaginatedResponse model = + new StakingPositionRelatedTransactionsPaginatedResponse(); + + /** Model tests for StakingPositionRelatedTransactionsPaginatedResponse */ + @Test + void testStakingPositionRelatedTransactionsPaginatedResponse() { + // TODO: test StakingPositionRelatedTransactionsPaginatedResponse + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequestTest.java b/src/test/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequestTest.java new file mode 100644 index 00000000..ed9c6717 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/SubmitOrderRequirementRequestTest.java @@ -0,0 +1,33 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for SubmitOrderRequirementRequest */ +class SubmitOrderRequirementRequestTest { + private final SubmitOrderRequirementRequest model = new SubmitOrderRequirementRequest(); + + /** Model tests for SubmitOrderRequirementRequest */ + @Test + void testSubmitOrderRequirementRequest() { + // TODO: test SubmitOrderRequirementRequest + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2Test.java b/src/test/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2Test.java new file mode 100644 index 00000000..4c8aae73 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TotalSupplyPagedResponse2Test.java @@ -0,0 +1,51 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for TotalSupplyPagedResponse2 */ +class TotalSupplyPagedResponse2Test { + private final TotalSupplyPagedResponse2 model = new TotalSupplyPagedResponse2(); + + /** Model tests for TotalSupplyPagedResponse2 */ + @Test + void testTotalSupplyPagedResponse2() { + // TODO: test TotalSupplyPagedResponse2 + } + + /** Test the property 'data' */ + @Test + void dataTest() { + // TODO: test data + } + + /** Test the property 'next' */ + @Test + void nextTest() { + // TODO: test next + } + + /** Test the property 'prev' */ + @Test + void prevTest() { + // TODO: test prev + } + + /** Test the property 'total' */ + @Test + void totalTest() { + // TODO: test total + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TransactionConfigurationsTest.java b/src/test/java/com/fireblocks/sdk/model/TransactionConfigurationsTest.java new file mode 100644 index 00000000..c381301c --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TransactionConfigurationsTest.java @@ -0,0 +1,33 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for TransactionConfigurations */ +class TransactionConfigurationsTest { + private final TransactionConfigurations model = new TransactionConfigurations(); + + /** Model tests for TransactionConfigurations */ + @Test + void testTransactionConfigurations() { + // TODO: test TransactionConfigurations + } + + /** Test the property 'expiresAfterSeconds' */ + @Test + void expiresAfterSecondsTest() { + // TODO: test expiresAfterSeconds + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/TransactionRequestTest.java b/src/test/java/com/fireblocks/sdk/model/TransactionRequestTest.java index 5537a028..a0271319 100644 --- a/src/test/java/com/fireblocks/sdk/model/TransactionRequestTest.java +++ b/src/test/java/com/fireblocks/sdk/model/TransactionRequestTest.java @@ -199,9 +199,9 @@ void useGaslessTest() { // TODO: test useGasless } - /** Test the property 'expiresAfterSeconds' */ + /** Test the property 'configurations' */ @Test - void expiresAfterSecondsTest() { - // TODO: test expiresAfterSeconds + void configurationsTest() { + // TODO: test configurations } } diff --git a/src/test/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2Test.java b/src/test/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2Test.java new file mode 100644 index 00000000..8fd5d502 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/TransferPeerTypeEnum2Test.java @@ -0,0 +1,25 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for TransferPeerTypeEnum2 */ +class TransferPeerTypeEnum2Test { + /** Model tests for TransferPeerTypeEnum2 */ + @Test + void testTransferPeerTypeEnum2() { + // TODO: test TransferPeerTypeEnum2 + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/UpdateWebhookRequestTest.java b/src/test/java/com/fireblocks/sdk/model/UpdateWebhookRequestTest.java index 14cc32b1..83b0fb2e 100644 --- a/src/test/java/com/fireblocks/sdk/model/UpdateWebhookRequestTest.java +++ b/src/test/java/com/fireblocks/sdk/model/UpdateWebhookRequestTest.java @@ -48,4 +48,10 @@ void eventsTest() { void enabledTest() { // TODO: test enabled } + + /** Test the property 'mtls' */ + @Test + void mtlsTest() { + // TODO: test mtls + } } diff --git a/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java new file mode 100644 index 00000000..c22a5567 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsCsrResponseTest.java @@ -0,0 +1,33 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for WebhookMtlsCsrResponse */ +class WebhookMtlsCsrResponseTest { + private final WebhookMtlsCsrResponse model = new WebhookMtlsCsrResponse(); + + /** Model tests for WebhookMtlsCsrResponse */ + @Test + void testWebhookMtlsCsrResponse() { + // TODO: test WebhookMtlsCsrResponse + } + + /** Test the property 'csr' */ + @Test + void csrTest() { + // TODO: test csr + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/WebhookMtlsTest.java b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsTest.java new file mode 100644 index 00000000..50551cf5 --- /dev/null +++ b/src/test/java/com/fireblocks/sdk/model/WebhookMtlsTest.java @@ -0,0 +1,33 @@ +/* + * 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 org.junit.jupiter.api.Test; + +/** Model tests for WebhookMtls */ +class WebhookMtlsTest { + private final WebhookMtls model = new WebhookMtls(); + + /** Model tests for WebhookMtls */ + @Test + void testWebhookMtls() { + // TODO: test WebhookMtls + } + + /** Test the property 'clientSignedCert' */ + @Test + void clientSignedCertTest() { + // TODO: test clientSignedCert + } +} diff --git a/src/test/java/com/fireblocks/sdk/model/WebhookTest.java b/src/test/java/com/fireblocks/sdk/model/WebhookTest.java index ede68e4b..87e447d4 100644 --- a/src/test/java/com/fireblocks/sdk/model/WebhookTest.java +++ b/src/test/java/com/fireblocks/sdk/model/WebhookTest.java @@ -66,4 +66,10 @@ void createdAtTest() { void updatedAtTest() { // TODO: test updatedAt } + + /** Test the property 'mtls' */ + @Test + void mtlsTest() { + // TODO: test mtls + } }