From a087619676f02a28de7d50a173aa2d5861d8b471 Mon Sep 17 00:00:00 2001 From: fireblocks_dx_team Date: Mon, 6 Apr 2026 09:51:56 +0000 Subject: [PATCH] Generated SDK #3331 --- .github/workflows/python-publish.yml | 3 +- .openapi-generator/FILES | 123 +- CHANGELOG.md | 224 -- README.md | 60 +- docs/AccountBasedAccessProvider.md | 2 +- docs/AccountBasedAccessProviderDetails.md | 31 - docs/AccountBasedAccessProviderInfo.md | 30 + docs/AccountBasedProviderDetails.md | 35 + docs/AddressRegistryAddVaultOptOutsRequest.md | 29 + ...VaultOptOutsRequestVaultAccountIdsInner.md | 28 + .../AddressRegistryAddVaultOptOutsResponse.md | 30 + docs/AddressRegistryError.md | 4 +- docs/AddressRegistryGetVaultOptOutResponse.md | 30 + docs/AddressRegistryLegalEntity.md | 11 +- docs/AddressRegistryLegalEntityLegacy.md | 32 + ...AddressRegistryListVaultOptOutsResponse.md | 32 + ...ssRegistryRemoveAllVaultOptOutsResponse.md | 30 + ...ddressRegistryRemoveVaultOptOutResponse.md | 30 + docs/AddressRegistryTenantRegistryResponse.md | 30 + docs/AddressRegistryTravelRuleProvider.md | 17 + docs/AddressRegistryVaultListOrder.md | 13 + docs/AddressRegistryVaultOptOutItem.md | 30 + docs/AmlResult.md | 2 +- docs/AmlStatusEnum.md | 2 +- docs/AssignVaultsToLegalEntityRequest.md | 30 + docs/AssignVaultsToLegalEntityResponse.md | 30 + docs/BaseProvider.md | 1 + docs/ComplianceApi.md | 1325 +++++++++- docs/ComplianceScreeningResult.md | 17 +- docs/ComplianceScreeningResultFullPayload.md | 17 +- docs/CreateMultipleAccountsRequest.md | 1 + docs/DirectAccessProvider.md | 2 + ...Details.md => DirectAccessProviderInfo.md} | 17 +- docs/DirectProviderDetails.md | 37 + ...lity.md => ExecutionRequestDetailsType.md} | 9 +- docs/ExtraParameters.md | 2 +- docs/GetTransactionOperation.md | 6 +- docs/GleifData.md | 35 + docs/InteracAddress.md | 4 + docs/JobCreated.md | 1 + docs/LegalEntityRegistration.md | 38 + docs/LeiStatus.md | 17 + docs/ListLegalEntitiesResponse.md | 33 + docs/ListVaultsForRegistrationResponse.md | 33 + docs/Manifest.md | 6 +- docs/ManifestBase.md | 30 + docs/ManifestOrder.md | 31 + docs/ManifestOrderInfo.md | 31 + docs/ManifestQuote.md | 30 + docs/ManifestQuoteInfo.md | 30 + docs/Position.md | 44 + docs/RegisterLegalEntityRequest.md | 32 + docs/ScreeningAmlResult.md | 2 +- docs/ScreeningRiskLevelEnum.md | 21 - docs/ScreeningTravelRuleResult.md | 2 +- ...AssetTypeEnum.md => SettlementTypeEnum.md} | 7 +- docs/StakingApi.md | 99 +- docs/StakingPositionsPaginatedResponse.md | 30 + docs/TRLinkApi.md | 54 +- docs/TRLinkCreateIntegrationRequest.md | 1 + docs/TradingBetaApi.md | 87 + docs/TradingProvider.md | 3 +- docs/TradingProviderDetails.md | 39 + docs/TransactionResponse.md | 2 +- docs/TravelRuleActionEnum.md | 4 + docs/TravelRuleOwnershipProof.md | 2 + docs/TravelRuleProvider.md | 29 + docs/TravelRuleResult.md | 2 +- docs/TravelRuleStatusEnum.md | 6 + docs/TravelRuleVerdictEnum.md | 6 + docs/UpdateLegalEntityRequest.md | 29 + docs/UserRole.md | 4 + fireblocks/__init__.py | 77 +- fireblocks/api/compliance_api.py | 2273 ++++++++++++++++- fireblocks/api/staking_api.py | 183 +- fireblocks/api/tr_link_api.py | 4 +- fireblocks/api/trading_beta_api.py | 135 + fireblocks/configuration.py | 2 +- fireblocks/models/__init__.py | 41 +- .../models/account_based_access_provider.py | 2 +- ... => account_based_access_provider_info.py} | 20 +- .../models/account_based_provider_details.py | 112 + ...ess_registry_add_vault_opt_outs_request.py | 97 + ...pt_outs_request_vault_account_ids_inner.py | 144 ++ ...ss_registry_add_vault_opt_outs_response.py | 88 + fireblocks/models/address_registry_error.py | 4 +- ...ess_registry_get_vault_opt_out_response.py | 88 + .../models/address_registry_legal_entity.py | 25 +- .../address_registry_legal_entity_legacy.py | 92 + ...s_registry_list_vault_opt_outs_response.py | 102 + ...stry_remove_all_vault_opt_outs_response.py | 88 + ..._registry_remove_vault_opt_out_response.py | 88 + ...dress_registry_tenant_registry_response.py | 95 + .../address_registry_travel_rule_provider.py | 40 + .../address_registry_vault_list_order.py | 38 + .../address_registry_vault_opt_out_item.py | 88 + fireblocks/models/aml_result.py | 2 +- fireblocks/models/aml_status_enum.py | 2 +- .../assign_vaults_to_legal_entity_request.py | 89 + .../assign_vaults_to_legal_entity_response.py | 88 + fireblocks/models/base_provider.py | 10 +- .../models/collection_ownership_response.py | 4 +- .../models/compliance_screening_result.py | 23 +- ...ompliance_screening_result_full_payload.py | 23 +- .../create_multiple_accounts_request.py | 7 +- fireblocks/models/direct_access_provider.py | 12 +- ...ails.py => direct_access_provider_info.py} | 14 +- fireblocks/models/direct_provider_details.py | 108 + ...y.py => execution_request_details_type.py} | 11 +- fireblocks/models/extra_parameters.py | 2 +- .../models/get_transaction_operation.py | 4 +- fireblocks/models/gleif_data.py | 100 + fireblocks/models/interac_address.py | 14 +- fireblocks/models/job_created.py | 6 +- .../models/legal_entity_registration.py | 111 + ...ening_risk_level_enum.py => lei_status.py} | 16 +- .../models/list_legal_entities_response.py | 102 + .../list_vaults_for_registration_response.py | 94 + fireblocks/models/manifest.py | 30 +- fireblocks/models/manifest_base.py | 88 + fireblocks/models/manifest_order.py | 94 + fireblocks/models/manifest_order_info.py | 92 + fireblocks/models/manifest_quote.py | 91 + fireblocks/models/manifest_quote_info.py | 89 + fireblocks/models/position.py | 139 + .../models/register_legal_entity_request.py | 93 + fireblocks/models/screening_aml_result.py | 2 +- .../models/screening_travel_rule_result.py | 2 +- ...t_type_enum.py => settlement_type_enum.py} | 10 +- .../staking_positions_paginated_response.py | 103 + fireblocks/models/token_ownership_response.py | 4 +- fireblocks/models/token_response.py | 4 +- .../tr_link_create_integration_request.py | 8 +- fireblocks/models/trading_provider_details.py | 138 + fireblocks/models/transaction_response.py | 2 +- fireblocks/models/travel_rule_action_enum.py | 2 + .../models/travel_rule_ownership_proof.py | 6 +- fireblocks/models/travel_rule_provider.py | 46 + fireblocks/models/travel_rule_result.py | 2 +- fireblocks/models/travel_rule_status_enum.py | 3 + fireblocks/models/travel_rule_verdict_enum.py | 3 + .../models/update_legal_entity_request.py | 88 + fireblocks/models/user_role.py | 2 + pyproject.toml | 2 +- setup.py | 2 +- test/test_account_based_access_provider.py | 7 +- ...est_account_based_access_provider_info.py} | 29 +- test/test_account_based_provider_details.py | 70 + test/test_add_collateral_request_body.py | 4 + ...ess_registry_add_vault_opt_outs_request.py | 57 + ...pt_outs_request_vault_account_ids_inner.py | 57 + ...ss_registry_add_vault_opt_outs_response.py | 57 + test/test_address_registry_error.py | 6 +- ...ess_registry_get_vault_opt_out_response.py | 57 + test/test_address_registry_legal_entity.py | 18 +- ...st_address_registry_legal_entity_legacy.py | 61 + ...s_registry_list_vault_opt_outs_response.py | 63 + ...stry_remove_all_vault_opt_outs_response.py | 59 + ..._registry_remove_vault_opt_out_response.py | 59 + ...dress_registry_tenant_registry_response.py | 57 + ...t_address_registry_travel_rule_provider.py | 38 + .../test_address_registry_vault_list_order.py | 38 + ...est_address_registry_vault_opt_out_item.py | 57 + ...t_assign_vaults_to_legal_entity_request.py | 57 + ..._assign_vaults_to_legal_entity_response.py | 57 + test/test_base_provider.py | 4 +- test/test_compliance_api.py | 107 +- test/test_compliance_result_full_payload.py | 27 +- test/test_compliance_results.py | 27 +- test/test_compliance_screening_result.py | 9 +- ...ompliance_screening_result_full_payload.py | 9 +- test/test_create_multiple_accounts_request.py | 3 +- test/test_direct_access_provider.py | 5 +- ...py => test_direct_access_provider_info.py} | 25 +- test/test_direct_provider_details.py | 67 + test/test_execution_request_details_type.py | 36 + test/test_gleif_data.py | 62 + test/test_interac_address.py | 6 +- test/test_interac_destination.py | 4 +- test/test_job_created.py | 3 +- test/test_legal_entity_registration.py | 75 + ...{test_capability.py => test_lei_status.py} | 12 +- test/test_list_legal_entities_response.py | 92 + ...t_list_vaults_for_registration_response.py | 60 + test/test_manifest.py | 20 +- test/test_manifest_base.py | 55 + test/test_manifest_order.py | 64 + test/test_manifest_order_info.py | 62 + test/test_manifest_quote.py | 58 + test/test_manifest_quote_info.py | 56 + test/test_position.py | 84 + test/test_register_legal_entity_request.py | 57 + test/test_remove_collateral_request_body.py | 4 + ...e_enum.py => test_settlement_type_enum.py} | 12 +- test/test_staking_api.py | 7 + ...st_staking_positions_paginated_response.py | 94 + ...test_tr_link_create_integration_request.py | 3 +- test/test_trading_beta_api.py | 7 + test/test_trading_provider.py | 10 +- test/test_trading_provider_details.py | 75 + test/test_transaction_request.py | 4 + test/test_transaction_response.py | 13 +- ..._travel_rule_create_transaction_request.py | 4 + test/test_travel_rule_ownership_proof.py | 2 + ...l_enum.py => test_travel_rule_provider.py} | 12 +- ..._rule_validate_full_transaction_request.py | 4 + test/test_update_legal_entity_request.py | 55 + 207 files changed, 10603 insertions(+), 789 deletions(-) delete mode 100644 CHANGELOG.md delete mode 100644 docs/AccountBasedAccessProviderDetails.md create mode 100644 docs/AccountBasedAccessProviderInfo.md create mode 100644 docs/AccountBasedProviderDetails.md create mode 100644 docs/AddressRegistryAddVaultOptOutsRequest.md create mode 100644 docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md create mode 100644 docs/AddressRegistryAddVaultOptOutsResponse.md create mode 100644 docs/AddressRegistryGetVaultOptOutResponse.md create mode 100644 docs/AddressRegistryLegalEntityLegacy.md create mode 100644 docs/AddressRegistryListVaultOptOutsResponse.md create mode 100644 docs/AddressRegistryRemoveAllVaultOptOutsResponse.md create mode 100644 docs/AddressRegistryRemoveVaultOptOutResponse.md create mode 100644 docs/AddressRegistryTenantRegistryResponse.md create mode 100644 docs/AddressRegistryTravelRuleProvider.md create mode 100644 docs/AddressRegistryVaultListOrder.md create mode 100644 docs/AddressRegistryVaultOptOutItem.md create mode 100644 docs/AssignVaultsToLegalEntityRequest.md create mode 100644 docs/AssignVaultsToLegalEntityResponse.md rename docs/{DirectAccessProviderDetails.md => DirectAccessProviderInfo.md} (52%) create mode 100644 docs/DirectProviderDetails.md rename docs/{Capability.md => ExecutionRequestDetailsType.md} (57%) create mode 100644 docs/GleifData.md create mode 100644 docs/LegalEntityRegistration.md create mode 100644 docs/LeiStatus.md create mode 100644 docs/ListLegalEntitiesResponse.md create mode 100644 docs/ListVaultsForRegistrationResponse.md create mode 100644 docs/ManifestBase.md create mode 100644 docs/ManifestOrder.md create mode 100644 docs/ManifestOrderInfo.md create mode 100644 docs/ManifestQuote.md create mode 100644 docs/ManifestQuoteInfo.md create mode 100644 docs/Position.md create mode 100644 docs/RegisterLegalEntityRequest.md delete mode 100644 docs/ScreeningRiskLevelEnum.md rename docs/{AssetTypeEnum.md => SettlementTypeEnum.md} (58%) create mode 100644 docs/StakingPositionsPaginatedResponse.md create mode 100644 docs/TradingProviderDetails.md create mode 100644 docs/TravelRuleProvider.md create mode 100644 docs/UpdateLegalEntityRequest.md rename fireblocks/models/{account_based_access_provider_details.py => account_based_access_provider_info.py} (79%) create mode 100644 fireblocks/models/account_based_provider_details.py create mode 100644 fireblocks/models/address_registry_add_vault_opt_outs_request.py create mode 100644 fireblocks/models/address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py create mode 100644 fireblocks/models/address_registry_add_vault_opt_outs_response.py create mode 100644 fireblocks/models/address_registry_get_vault_opt_out_response.py create mode 100644 fireblocks/models/address_registry_legal_entity_legacy.py create mode 100644 fireblocks/models/address_registry_list_vault_opt_outs_response.py create mode 100644 fireblocks/models/address_registry_remove_all_vault_opt_outs_response.py create mode 100644 fireblocks/models/address_registry_remove_vault_opt_out_response.py create mode 100644 fireblocks/models/address_registry_tenant_registry_response.py create mode 100644 fireblocks/models/address_registry_travel_rule_provider.py create mode 100644 fireblocks/models/address_registry_vault_list_order.py create mode 100644 fireblocks/models/address_registry_vault_opt_out_item.py create mode 100644 fireblocks/models/assign_vaults_to_legal_entity_request.py create mode 100644 fireblocks/models/assign_vaults_to_legal_entity_response.py rename fireblocks/models/{direct_access_provider_details.py => direct_access_provider_info.py} (84%) create mode 100644 fireblocks/models/direct_provider_details.py rename fireblocks/models/{capability.py => execution_request_details_type.py} (79%) create mode 100644 fireblocks/models/gleif_data.py create mode 100644 fireblocks/models/legal_entity_registration.py rename fireblocks/models/{screening_risk_level_enum.py => lei_status.py} (71%) create mode 100644 fireblocks/models/list_legal_entities_response.py create mode 100644 fireblocks/models/list_vaults_for_registration_response.py create mode 100644 fireblocks/models/manifest_base.py create mode 100644 fireblocks/models/manifest_order.py create mode 100644 fireblocks/models/manifest_order_info.py create mode 100644 fireblocks/models/manifest_quote.py create mode 100644 fireblocks/models/manifest_quote_info.py create mode 100644 fireblocks/models/position.py create mode 100644 fireblocks/models/register_legal_entity_request.py rename fireblocks/models/{asset_type_enum.py => settlement_type_enum.py} (81%) create mode 100644 fireblocks/models/staking_positions_paginated_response.py create mode 100644 fireblocks/models/trading_provider_details.py create mode 100644 fireblocks/models/travel_rule_provider.py create mode 100644 fireblocks/models/update_legal_entity_request.py rename test/{test_account_based_access_provider_details.py => test_account_based_access_provider_info.py} (63%) create mode 100644 test/test_account_based_provider_details.py create mode 100644 test/test_address_registry_add_vault_opt_outs_request.py create mode 100644 test/test_address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py create mode 100644 test/test_address_registry_add_vault_opt_outs_response.py create mode 100644 test/test_address_registry_get_vault_opt_out_response.py create mode 100644 test/test_address_registry_legal_entity_legacy.py create mode 100644 test/test_address_registry_list_vault_opt_outs_response.py create mode 100644 test/test_address_registry_remove_all_vault_opt_outs_response.py create mode 100644 test/test_address_registry_remove_vault_opt_out_response.py create mode 100644 test/test_address_registry_tenant_registry_response.py create mode 100644 test/test_address_registry_travel_rule_provider.py create mode 100644 test/test_address_registry_vault_list_order.py create mode 100644 test/test_address_registry_vault_opt_out_item.py create mode 100644 test/test_assign_vaults_to_legal_entity_request.py create mode 100644 test/test_assign_vaults_to_legal_entity_response.py rename test/{test_direct_access_provider_details.py => test_direct_access_provider_info.py} (70%) create mode 100644 test/test_direct_provider_details.py create mode 100644 test/test_execution_request_details_type.py create mode 100644 test/test_gleif_data.py create mode 100644 test/test_legal_entity_registration.py rename test/{test_capability.py => test_lei_status.py} (76%) create mode 100644 test/test_list_legal_entities_response.py create mode 100644 test/test_list_vaults_for_registration_response.py create mode 100644 test/test_manifest_base.py create mode 100644 test/test_manifest_order.py create mode 100644 test/test_manifest_order_info.py create mode 100644 test/test_manifest_quote.py create mode 100644 test/test_manifest_quote_info.py create mode 100644 test/test_position.py create mode 100644 test/test_register_legal_entity_request.py rename test/{test_asset_type_enum.py => test_settlement_type_enum.py} (71%) create mode 100644 test/test_staking_positions_paginated_response.py create mode 100644 test/test_trading_provider_details.py rename test/{test_screening_risk_level_enum.py => test_travel_rule_provider.py} (69%) create mode 100644 test/test_update_legal_entity_request.py diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index df986b00..5222d78c 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -30,6 +30,7 @@ jobs: python -m pip install --upgrade pip pip install bump-my-version npm i -g auto-changelog + - name: Bump version run: | initialTag=${{ github.event.release.tag_name }} @@ -85,4 +86,4 @@ jobs: - name: Publish package to PyPI uses: pypa/gh-action-pypi-publish@release/v1 - # No user/password needed - OIDC handles authentication + # No user/password needed - OIDC handles authentication \ No newline at end of file diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 5bb694a0..7ee7b892 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -13,7 +13,8 @@ docs/Account.md docs/AccountAccess.md docs/AccountBase.md docs/AccountBasedAccessProvider.md -docs/AccountBasedAccessProviderDetails.md +docs/AccountBasedAccessProviderInfo.md +docs/AccountBasedProviderDetails.md docs/AccountConfig.md docs/AccountHolderDetails.md docs/AccountIdentifier.md @@ -39,8 +40,20 @@ docs/AdditionalInfoRequestAdditionalInfo.md docs/AddressBalanceItemDto.md docs/AddressBalancePagedResponse.md docs/AddressNotAvailableError.md +docs/AddressRegistryAddVaultOptOutsRequest.md +docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md +docs/AddressRegistryAddVaultOptOutsResponse.md docs/AddressRegistryError.md +docs/AddressRegistryGetVaultOptOutResponse.md docs/AddressRegistryLegalEntity.md +docs/AddressRegistryLegalEntityLegacy.md +docs/AddressRegistryListVaultOptOutsResponse.md +docs/AddressRegistryRemoveAllVaultOptOutsResponse.md +docs/AddressRegistryRemoveVaultOptOutResponse.md +docs/AddressRegistryTenantRegistryResponse.md +docs/AddressRegistryTravelRuleProvider.md +docs/AddressRegistryVaultListOrder.md +docs/AddressRegistryVaultOptOutItem.md docs/AlertExposureTypeEnum.md docs/AlertLevelEnum.md docs/AmlAlert.md @@ -92,10 +105,11 @@ docs/AssetPriceNotFoundErrorResponse.md docs/AssetPriceResponse.md docs/AssetResponse.md docs/AssetScope.md -docs/AssetTypeEnum.md docs/AssetTypeResponse.md docs/AssetTypesConfigInner.md docs/AssetWallet.md +docs/AssignVaultsToLegalEntityRequest.md +docs/AssignVaultsToLegalEntityResponse.md docs/AuditLogData.md docs/AuditLogsApi.md docs/AuditorData.md @@ -123,7 +137,6 @@ docs/BusinessIdentification.md docs/CallbackHandler.md docs/CallbackHandlerRequest.md docs/CancelTransactionResponse.md -docs/Capability.md docs/ChainDescriptor.md docs/ChainInfoResponse.md docs/ChannelDvnConfigWithConfirmations.md @@ -285,7 +298,8 @@ docs/DestinationTransferPeerPath.md docs/DestinationTransferPeerPathResponse.md docs/DirectAccess.md docs/DirectAccessProvider.md -docs/DirectAccessProviderDetails.md +docs/DirectAccessProviderInfo.md +docs/DirectProviderDetails.md docs/DisbursementAmountInstruction.md docs/DisbursementConfigOperation.md docs/DisbursementInstruction.md @@ -353,6 +367,7 @@ docs/ExecutionDisbursementOperation.md docs/ExecutionOperationStatus.md docs/ExecutionRequestBaseDetails.md docs/ExecutionRequestDetails.md +docs/ExecutionRequestDetailsType.md docs/ExecutionResponseBaseDetails.md docs/ExecutionResponseDetails.md docs/ExecutionScreeningOperation.md @@ -422,6 +437,7 @@ docs/GetTransactionOperation.md docs/GetValidationKeyResponseDto.md docs/GetWhitelistIpAddressesResponse.md docs/GetWorkspaceStatusResponse.md +docs/GleifData.md docs/HttpContractDoesNotExistError.md docs/IbanAddress.md docs/IbanDestination.md @@ -478,14 +494,23 @@ docs/LegacyPolicyValidation.md docs/LegacyPublishDraftRequest.md docs/LegacyPublishResult.md docs/LegacySrcOrDestAttributesInner.md +docs/LegalEntityRegistration.md +docs/LeiStatus.md docs/LinkedTokensCount.md docs/ListAssetsResponse.md docs/ListBlockchainsResponse.md +docs/ListLegalEntitiesResponse.md docs/ListOwnedCollectionsResponse.md docs/ListOwnedTokensResponse.md +docs/ListVaultsForRegistrationResponse.md docs/LocalBankTransferAfricaAddress.md docs/LocalBankTransferAfricaDestination.md docs/Manifest.md +docs/ManifestBase.md +docs/ManifestOrder.md +docs/ManifestOrderInfo.md +docs/ManifestQuote.md +docs/ManifestQuoteInfo.md docs/MarketExecutionRequestDetails.md docs/MarketExecutionResponseDetails.md docs/MarketRequoteRequestDetails.md @@ -600,6 +625,7 @@ docs/PolicyType.md docs/PolicyValidation.md docs/PolicyVerdictActionEnum.md docs/PolicyVerdictActionEnum2.md +docs/Position.md docs/PostalAddress.md docs/PreScreening.md docs/PrefundedSettlement.md @@ -627,6 +653,7 @@ docs/ReadCallFunctionDto.md docs/ReadCallFunctionDtoAbiFunction.md docs/RecipientHandle.md docs/RedeemFundsToLinkedDDAResponse.md +docs/RegisterLegalEntityRequest.md docs/RegisterNewAssetRequest.md docs/ReissueMultichainTokenRequest.md docs/RelatedRequest.md @@ -673,7 +700,6 @@ docs/ScreeningOperationFailure.md docs/ScreeningOperationType.md docs/ScreeningPolicyResponse.md docs/ScreeningProviderRulesConfigurationResponse.md -docs/ScreeningRiskLevelEnum.md docs/ScreeningTRLinkAmount.md docs/ScreeningTRLinkMissingTrmDecision.md docs/ScreeningTRLinkMissingTrmRule.md @@ -717,6 +743,7 @@ docs/Settlement.md docs/SettlementRequestBody.md docs/SettlementResponse.md docs/SettlementSourceAccount.md +docs/SettlementTypeEnum.md docs/Side.md docs/SignedMessage.md docs/SignedMessageSignature.md @@ -769,6 +796,7 @@ docs/StEthBlockchainData.md docs/StakeRequest.md docs/StakeResponse.md docs/StakingApi.md +docs/StakingPositionsPaginatedResponse.md docs/StakingProvider.md docs/Status.md docs/StellarRippleCreateParamsDto.md @@ -889,6 +917,7 @@ docs/TradingAccountType.md docs/TradingBetaApi.md docs/TradingErrorSchema.md docs/TradingProvider.md +docs/TradingProviderDetails.md docs/Transaction.md docs/TransactionDirection.md docs/TransactionFee.md @@ -948,6 +977,7 @@ docs/TravelRulePerson.md docs/TravelRulePiiIVMS.md docs/TravelRulePolicyRuleResponse.md docs/TravelRulePrescreeningRule.md +docs/TravelRuleProvider.md docs/TravelRuleResult.md docs/TravelRuleStatusEnum.md docs/TravelRuleTransactionBlockchainInfo.md @@ -984,6 +1014,7 @@ docs/UpdateAssetUserMetadataRequest.md docs/UpdateCallbackHandlerRequest.md docs/UpdateCallbackHandlerResponse.md docs/UpdateDraftRequest.md +docs/UpdateLegalEntityRequest.md docs/UpdateTagRequest.md docs/UpdateTokenOwnershipStatusDto.md docs/UpdateVaultAccountAssetAddressRequest.md @@ -1108,7 +1139,8 @@ fireblocks/models/account.py fireblocks/models/account_access.py fireblocks/models/account_base.py fireblocks/models/account_based_access_provider.py -fireblocks/models/account_based_access_provider_details.py +fireblocks/models/account_based_access_provider_info.py +fireblocks/models/account_based_provider_details.py fireblocks/models/account_config.py fireblocks/models/account_holder_details.py fireblocks/models/account_identifier.py @@ -1134,8 +1166,20 @@ fireblocks/models/additional_info_request_additional_info.py fireblocks/models/address_balance_item_dto.py fireblocks/models/address_balance_paged_response.py fireblocks/models/address_not_available_error.py +fireblocks/models/address_registry_add_vault_opt_outs_request.py +fireblocks/models/address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py +fireblocks/models/address_registry_add_vault_opt_outs_response.py fireblocks/models/address_registry_error.py +fireblocks/models/address_registry_get_vault_opt_out_response.py fireblocks/models/address_registry_legal_entity.py +fireblocks/models/address_registry_legal_entity_legacy.py +fireblocks/models/address_registry_list_vault_opt_outs_response.py +fireblocks/models/address_registry_remove_all_vault_opt_outs_response.py +fireblocks/models/address_registry_remove_vault_opt_out_response.py +fireblocks/models/address_registry_tenant_registry_response.py +fireblocks/models/address_registry_travel_rule_provider.py +fireblocks/models/address_registry_vault_list_order.py +fireblocks/models/address_registry_vault_opt_out_item.py fireblocks/models/alert_exposure_type_enum.py fireblocks/models/alert_level_enum.py fireblocks/models/aml_alert.py @@ -1187,10 +1231,11 @@ fireblocks/models/asset_price_not_found_error_response.py fireblocks/models/asset_price_response.py fireblocks/models/asset_response.py fireblocks/models/asset_scope.py -fireblocks/models/asset_type_enum.py fireblocks/models/asset_type_response.py fireblocks/models/asset_types_config_inner.py fireblocks/models/asset_wallet.py +fireblocks/models/assign_vaults_to_legal_entity_request.py +fireblocks/models/assign_vaults_to_legal_entity_response.py fireblocks/models/audit_log_data.py fireblocks/models/auditor_data.py fireblocks/models/authorization_groups.py @@ -1216,7 +1261,6 @@ fireblocks/models/business_identification.py fireblocks/models/callback_handler.py fireblocks/models/callback_handler_request.py fireblocks/models/cancel_transaction_response.py -fireblocks/models/capability.py fireblocks/models/chain_descriptor.py fireblocks/models/chain_info_response.py fireblocks/models/channel_dvn_config_with_confirmations.py @@ -1367,7 +1411,8 @@ fireblocks/models/destination_transfer_peer_path.py fireblocks/models/destination_transfer_peer_path_response.py fireblocks/models/direct_access.py fireblocks/models/direct_access_provider.py -fireblocks/models/direct_access_provider_details.py +fireblocks/models/direct_access_provider_info.py +fireblocks/models/direct_provider_details.py fireblocks/models/disbursement_amount_instruction.py fireblocks/models/disbursement_config_operation.py fireblocks/models/disbursement_instruction.py @@ -1435,6 +1480,7 @@ fireblocks/models/execution_disbursement_operation.py fireblocks/models/execution_operation_status.py fireblocks/models/execution_request_base_details.py fireblocks/models/execution_request_details.py +fireblocks/models/execution_request_details_type.py fireblocks/models/execution_response_base_details.py fireblocks/models/execution_response_details.py fireblocks/models/execution_screening_operation.py @@ -1501,6 +1547,7 @@ fireblocks/models/get_transaction_operation.py fireblocks/models/get_validation_key_response_dto.py fireblocks/models/get_whitelist_ip_addresses_response.py fireblocks/models/get_workspace_status_response.py +fireblocks/models/gleif_data.py fireblocks/models/http_contract_does_not_exist_error.py fireblocks/models/iban_address.py fireblocks/models/iban_destination.py @@ -1554,14 +1601,23 @@ fireblocks/models/legacy_policy_validation.py fireblocks/models/legacy_publish_draft_request.py fireblocks/models/legacy_publish_result.py fireblocks/models/legacy_src_or_dest_attributes_inner.py +fireblocks/models/legal_entity_registration.py +fireblocks/models/lei_status.py fireblocks/models/linked_tokens_count.py fireblocks/models/list_assets_response.py fireblocks/models/list_blockchains_response.py +fireblocks/models/list_legal_entities_response.py fireblocks/models/list_owned_collections_response.py fireblocks/models/list_owned_tokens_response.py +fireblocks/models/list_vaults_for_registration_response.py fireblocks/models/local_bank_transfer_africa_address.py fireblocks/models/local_bank_transfer_africa_destination.py fireblocks/models/manifest.py +fireblocks/models/manifest_base.py +fireblocks/models/manifest_order.py +fireblocks/models/manifest_order_info.py +fireblocks/models/manifest_quote.py +fireblocks/models/manifest_quote_info.py fireblocks/models/market_execution_request_details.py fireblocks/models/market_execution_response_details.py fireblocks/models/market_requote_request_details.py @@ -1668,6 +1724,7 @@ fireblocks/models/policy_type.py fireblocks/models/policy_validation.py fireblocks/models/policy_verdict_action_enum.py fireblocks/models/policy_verdict_action_enum2.py +fireblocks/models/position.py fireblocks/models/postal_address.py fireblocks/models/pre_screening.py fireblocks/models/prefunded_settlement.py @@ -1695,6 +1752,7 @@ fireblocks/models/read_call_function_dto.py fireblocks/models/read_call_function_dto_abi_function.py fireblocks/models/recipient_handle.py fireblocks/models/redeem_funds_to_linked_dda_response.py +fireblocks/models/register_legal_entity_request.py fireblocks/models/register_new_asset_request.py fireblocks/models/reissue_multichain_token_request.py fireblocks/models/related_request.py @@ -1736,7 +1794,6 @@ fireblocks/models/screening_operation_failure.py fireblocks/models/screening_operation_type.py fireblocks/models/screening_policy_response.py fireblocks/models/screening_provider_rules_configuration_response.py -fireblocks/models/screening_risk_level_enum.py fireblocks/models/screening_tr_link_amount.py fireblocks/models/screening_tr_link_missing_trm_decision.py fireblocks/models/screening_tr_link_missing_trm_rule.py @@ -1782,6 +1839,7 @@ fireblocks/models/settlement.py fireblocks/models/settlement_request_body.py fireblocks/models/settlement_response.py fireblocks/models/settlement_source_account.py +fireblocks/models/settlement_type_enum.py fireblocks/models/side.py fireblocks/models/signed_message.py fireblocks/models/signed_message_signature.py @@ -1834,6 +1892,7 @@ fireblocks/models/split_response.py fireblocks/models/st_eth_blockchain_data.py fireblocks/models/stake_request.py fireblocks/models/stake_response.py +fireblocks/models/staking_positions_paginated_response.py fireblocks/models/staking_provider.py fireblocks/models/status.py fireblocks/models/stellar_ripple_create_params_dto.py @@ -1950,6 +2009,7 @@ fireblocks/models/tr_link_verdict_enum.py fireblocks/models/trading_account_type.py fireblocks/models/trading_error_schema.py fireblocks/models/trading_provider.py +fireblocks/models/trading_provider_details.py fireblocks/models/transaction.py fireblocks/models/transaction_direction.py fireblocks/models/transaction_fee.py @@ -2007,6 +2067,7 @@ fireblocks/models/travel_rule_person.py fireblocks/models/travel_rule_pii_ivms.py fireblocks/models/travel_rule_policy_rule_response.py fireblocks/models/travel_rule_prescreening_rule.py +fireblocks/models/travel_rule_provider.py fireblocks/models/travel_rule_result.py fireblocks/models/travel_rule_status_enum.py fireblocks/models/travel_rule_transaction_blockchain_info.py @@ -2041,6 +2102,7 @@ fireblocks/models/update_asset_user_metadata_request.py fireblocks/models/update_callback_handler_request.py fireblocks/models/update_callback_handler_response.py fireblocks/models/update_draft_request.py +fireblocks/models/update_legal_entity_request.py fireblocks/models/update_tag_request.py fireblocks/models/update_token_ownership_status_dto.py fireblocks/models/update_vault_account_asset_address_request.py @@ -2123,7 +2185,8 @@ test/test_account.py test/test_account_access.py test/test_account_base.py test/test_account_based_access_provider.py -test/test_account_based_access_provider_details.py +test/test_account_based_access_provider_info.py +test/test_account_based_provider_details.py test/test_account_config.py test/test_account_holder_details.py test/test_account_identifier.py @@ -2149,8 +2212,20 @@ test/test_additional_info_request_additional_info.py test/test_address_balance_item_dto.py test/test_address_balance_paged_response.py test/test_address_not_available_error.py +test/test_address_registry_add_vault_opt_outs_request.py +test/test_address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py +test/test_address_registry_add_vault_opt_outs_response.py test/test_address_registry_error.py +test/test_address_registry_get_vault_opt_out_response.py test/test_address_registry_legal_entity.py +test/test_address_registry_legal_entity_legacy.py +test/test_address_registry_list_vault_opt_outs_response.py +test/test_address_registry_remove_all_vault_opt_outs_response.py +test/test_address_registry_remove_vault_opt_out_response.py +test/test_address_registry_tenant_registry_response.py +test/test_address_registry_travel_rule_provider.py +test/test_address_registry_vault_list_order.py +test/test_address_registry_vault_opt_out_item.py test/test_alert_exposure_type_enum.py test/test_alert_level_enum.py test/test_aml_alert.py @@ -2203,10 +2278,11 @@ test/test_asset_price_not_found_error_response.py test/test_asset_price_response.py test/test_asset_response.py test/test_asset_scope.py -test/test_asset_type_enum.py test/test_asset_type_response.py test/test_asset_types_config_inner.py test/test_asset_wallet.py +test/test_assign_vaults_to_legal_entity_request.py +test/test_assign_vaults_to_legal_entity_response.py test/test_audit_log_data.py test/test_audit_logs_api.py test/test_auditor_data.py @@ -2234,7 +2310,6 @@ test/test_business_identification.py test/test_callback_handler.py test/test_callback_handler_request.py test/test_cancel_transaction_response.py -test/test_capability.py test/test_chain_descriptor.py test/test_chain_info_response.py test/test_channel_dvn_config_with_confirmations.py @@ -2394,7 +2469,8 @@ test/test_destination_transfer_peer_path.py test/test_destination_transfer_peer_path_response.py test/test_direct_access.py test/test_direct_access_provider.py -test/test_direct_access_provider_details.py +test/test_direct_access_provider_info.py +test/test_direct_provider_details.py test/test_disbursement_amount_instruction.py test/test_disbursement_config_operation.py test/test_disbursement_instruction.py @@ -2464,6 +2540,7 @@ test/test_execution_disbursement_operation.py test/test_execution_operation_status.py test/test_execution_request_base_details.py test/test_execution_request_details.py +test/test_execution_request_details_type.py test/test_execution_response_base_details.py test/test_execution_response_details.py test/test_execution_screening_operation.py @@ -2533,6 +2610,7 @@ test/test_get_transaction_operation.py test/test_get_validation_key_response_dto.py test/test_get_whitelist_ip_addresses_response.py test/test_get_workspace_status_response.py +test/test_gleif_data.py test/test_http_contract_does_not_exist_error.py test/test_iban_address.py test/test_iban_destination.py @@ -2589,14 +2667,23 @@ test/test_legacy_policy_validation.py test/test_legacy_publish_draft_request.py test/test_legacy_publish_result.py test/test_legacy_src_or_dest_attributes_inner.py +test/test_legal_entity_registration.py +test/test_lei_status.py test/test_linked_tokens_count.py test/test_list_assets_response.py test/test_list_blockchains_response.py +test/test_list_legal_entities_response.py test/test_list_owned_collections_response.py test/test_list_owned_tokens_response.py +test/test_list_vaults_for_registration_response.py test/test_local_bank_transfer_africa_address.py test/test_local_bank_transfer_africa_destination.py test/test_manifest.py +test/test_manifest_base.py +test/test_manifest_order.py +test/test_manifest_order_info.py +test/test_manifest_quote.py +test/test_manifest_quote_info.py test/test_market_execution_request_details.py test/test_market_execution_response_details.py test/test_market_requote_request_details.py @@ -2711,6 +2798,7 @@ test/test_policy_type.py test/test_policy_validation.py test/test_policy_verdict_action_enum.py test/test_policy_verdict_action_enum2.py +test/test_position.py test/test_postal_address.py test/test_pre_screening.py test/test_prefunded_settlement.py @@ -2738,6 +2826,7 @@ test/test_read_call_function_dto.py test/test_read_call_function_dto_abi_function.py test/test_recipient_handle.py test/test_redeem_funds_to_linked_dda_response.py +test/test_register_legal_entity_request.py test/test_register_new_asset_request.py test/test_reissue_multichain_token_request.py test/test_related_request.py @@ -2780,7 +2869,6 @@ test/test_screening_operation_failure.py test/test_screening_operation_type.py test/test_screening_policy_response.py test/test_screening_provider_rules_configuration_response.py -test/test_screening_risk_level_enum.py test/test_screening_tr_link_amount.py test/test_screening_tr_link_missing_trm_decision.py test/test_screening_tr_link_missing_trm_rule.py @@ -2826,6 +2914,7 @@ test/test_settlement.py test/test_settlement_request_body.py test/test_settlement_response.py test/test_settlement_source_account.py +test/test_settlement_type_enum.py test/test_side.py test/test_signed_message.py test/test_signed_message_signature.py @@ -2880,6 +2969,7 @@ test/test_st_eth_blockchain_data.py test/test_stake_request.py test/test_stake_response.py test/test_staking_api.py +test/test_staking_positions_paginated_response.py test/test_staking_provider.py test/test_status.py test/test_stellar_ripple_create_params_dto.py @@ -3000,6 +3090,7 @@ test/test_trading_account_type.py test/test_trading_beta_api.py test/test_trading_error_schema.py test/test_trading_provider.py +test/test_trading_provider_details.py test/test_transaction.py test/test_transaction_direction.py test/test_transaction_fee.py @@ -3059,6 +3150,7 @@ test/test_travel_rule_person.py test/test_travel_rule_pii_ivms.py test/test_travel_rule_policy_rule_response.py test/test_travel_rule_prescreening_rule.py +test/test_travel_rule_provider.py test/test_travel_rule_result.py test/test_travel_rule_status_enum.py test/test_travel_rule_transaction_blockchain_info.py @@ -3093,6 +3185,7 @@ test/test_update_asset_user_metadata_request.py test/test_update_callback_handler_request.py test/test_update_callback_handler_response.py test/test_update_draft_request.py +test/test_update_legal_entity_request.py test/test_update_tag_request.py test/test_update_token_ownership_status_dto.py test/test_update_vault_account_asset_address_request.py diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 877bba23..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,224 +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). - -## [v15.0.0](https://github.com/fireblocks/py-sdk/compare/v14.1.0...v15.0.0) - 2026-03-15 - -### Commits - -- Update python-publish.yml [`a9c280b`](https://github.com/fireblocks/py-sdk/commit/a9c280b41894af5667f5dde3b800fe2ab1fac9c9) - -## [v14.1.0](https://github.com/fireblocks/py-sdk/compare/v14.0.0...v14.1.0) - 2026-02-26 - -### Merged - -- Generated SDK #2167 [`#127`](https://github.com/fireblocks/py-sdk/pull/127) - -## [v14.0.0](https://github.com/fireblocks/py-sdk/compare/v13.0.0...v14.0.0) - 2026-02-03 - -### Merged - -- Generated SDK #4746 [`#123`](https://github.com/fireblocks/py-sdk/pull/123) - -## [v13.0.0](https://github.com/fireblocks/py-sdk/compare/v12.1.2...v13.0.0) - 2025-11-13 - -### Merged - -- Generated SDK #5834 [`#121`](https://github.com/fireblocks/py-sdk/pull/121) - -## [v12.1.2](https://github.com/fireblocks/py-sdk/compare/v12.1.1...v12.1.2) - 2025-10-22 - -### Merged - -- Generated SDK #8293 [`#120`](https://github.com/fireblocks/py-sdk/pull/120) - -## [v12.1.1](https://github.com/fireblocks/py-sdk/compare/v12.1.0...v12.1.1) - 2025-09-29 - -### Merged - -- Generated SDK #6061 [`#119`](https://github.com/fireblocks/py-sdk/pull/119) - -## [v12.1.0](https://github.com/fireblocks/py-sdk/compare/v12.0.0...v12.1.0) - 2025-09-09 - -### Merged - -- Generated SDK #4521 [`#118`](https://github.com/fireblocks/py-sdk/pull/118) - -## [v12.0.0](https://github.com/fireblocks/py-sdk/compare/v11.2.0...v12.0.0) - 2025-09-01 - -### Merged - -- Generated SDK #7741 [`#117`](https://github.com/fireblocks/py-sdk/pull/117) - -## [v11.2.0](https://github.com/fireblocks/py-sdk/compare/v11.1.0...v11.2.0) - 2025-08-18 - -### Merged - -- Generated SDK #3302 [`#116`](https://github.com/fireblocks/py-sdk/pull/116) - -## [v11.1.0](https://github.com/fireblocks/py-sdk/compare/v11.0.0...v11.1.0) - 2025-08-11 - -### Merged - -- Generated SDK #1782 [`#115`](https://github.com/fireblocks/py-sdk/pull/115) - -## [v11.0.0](https://github.com/fireblocks/py-sdk/compare/v10.4.0...v11.0.0) - 2025-07-15 - -### Merged - -- Generated SDK #5610 [`#114`](https://github.com/fireblocks/py-sdk/pull/114) - -## [v10.4.0](https://github.com/fireblocks/py-sdk/compare/v10.3.0...v10.4.0) - 2025-06-29 - -### Merged - -- Generated SDK #1492 [`#113`](https://github.com/fireblocks/py-sdk/pull/113) - -## [v10.3.0](https://github.com/fireblocks/py-sdk/compare/v10.2.0...v10.3.0) - 2025-06-18 - -### Merged - -- Generated SDK #4009 [`#112`](https://github.com/fireblocks/py-sdk/pull/112) - -## [v10.2.0](https://github.com/fireblocks/py-sdk/compare/v10.1.1...v10.2.0) - 2025-06-04 - -### Merged - -- Generated SDK #8912 [`#111`](https://github.com/fireblocks/py-sdk/pull/111) - -## [v10.1.1](https://github.com/fireblocks/py-sdk/compare/v10.1.0...v10.1.1) - 2025-05-18 - -### Merged - -- Generated SDK #5019 [`#110`](https://github.com/fireblocks/py-sdk/pull/110) - -## [v10.1.0](https://github.com/fireblocks/py-sdk/compare/v10.0.0...v10.1.0) - 2025-05-07 - -### Merged - -- Generated SDK #7076 [`#107`](https://github.com/fireblocks/py-sdk/pull/107) - -## [v10.0.0](https://github.com/fireblocks/py-sdk/compare/v9.0.1...v10.0.0) - 2025-04-20 - -### Merged - -- Generated SDK #4794 [`#105`](https://github.com/fireblocks/py-sdk/pull/105) - -## [v9.0.1](https://github.com/fireblocks/py-sdk/compare/v9.0.0...v9.0.1) - 2025-04-07 - -### Merged - -- Generated SDK #3065 [`#104`](https://github.com/fireblocks/py-sdk/pull/104) - -## [v9.0.0](https://github.com/fireblocks/py-sdk/compare/v8.0.0...v9.0.0) - 2025-03-27 - -### Merged - -- Generated SDK #619 [`#102`](https://github.com/fireblocks/py-sdk/pull/102) - -## [v8.0.0](https://github.com/fireblocks/py-sdk/compare/v7.1.0...v8.0.0) - 2025-03-17 - -### Merged - -- Generated SDK #645 [`#101`](https://github.com/fireblocks/py-sdk/pull/101) -- Generated SDK #726 [`#99`](https://github.com/fireblocks/py-sdk/pull/99) - -## [v7.1.0](https://github.com/fireblocks/py-sdk/compare/v7.0.1...v7.1.0) - 2025-02-25 - -### Merged - -- Generated SDK #9833 [`#96`](https://github.com/fireblocks/py-sdk/pull/96) - -## [v7.0.1](https://github.com/fireblocks/py-sdk/compare/v7.0.0...v7.0.1) - 2025-02-12 - -### Merged - -- Generated SDK #4262 [`#95`](https://github.com/fireblocks/py-sdk/pull/95) - -## [v7.0.0](https://github.com/fireblocks/py-sdk/compare/v6.0.0...v7.0.0) - 2025-02-02 - -### Merged - -- Generated SDK #538 [`#92`](https://github.com/fireblocks/py-sdk/pull/92) - -## [v6.0.0](https://github.com/fireblocks/py-sdk/compare/v5.0.0...v6.0.0) - 2025-01-08 - -### Merged - -- Generated SDK #8699 [`#89`](https://github.com/fireblocks/py-sdk/pull/89) - -## [v5.0.0](https://github.com/fireblocks/py-sdk/compare/v4.0.0...v5.0.0) - 2024-12-05 - -### Merged - -- Generated SDK #1430 [`#85`](https://github.com/fireblocks/py-sdk/pull/85) -- Update python-package.yml, deprecate macos-12 [`#86`](https://github.com/fireblocks/py-sdk/pull/86) - -## [v4.0.0](https://github.com/fireblocks/py-sdk/compare/v3.0.0...v4.0.0) - 2024-10-31 - -### Merged - -- Generated SDK #5184 [`#82`](https://github.com/fireblocks/py-sdk/pull/82) - -## [v3.0.0](https://github.com/fireblocks/py-sdk/compare/v2.1.0...v3.0.0) - 2024-09-17 - -### Merged - -- Generated SDK #237 [`#81`](https://github.com/fireblocks/py-sdk/pull/81) - -## [v2.1.0](https://github.com/fireblocks/py-sdk/compare/v2.0.0...v2.1.0) - 2024-07-25 - -### Merged - -- Generated SDK #6749 [`#78`](https://github.com/fireblocks/py-sdk/pull/78) - -## [v2.0.0](https://github.com/fireblocks/py-sdk/compare/v1.0.4...v2.0.0) - 2024-07-17 - -### Merged - -- Generated SDK #6152 [`#76`](https://github.com/fireblocks/py-sdk/pull/76) -- Generated SDK #7647 [`#73`](https://github.com/fireblocks/py-sdk/pull/73) -- Generated SDK #7984 [`#70`](https://github.com/fireblocks/py-sdk/pull/70) - -## [v1.0.4](https://github.com/fireblocks/py-sdk/compare/v1.0.3...v1.0.4) - 2024-06-26 - -### Merged - -- Generated SDK #5779 [`#69`](https://github.com/fireblocks/py-sdk/pull/69) -- Generated SDK #913 [`#68`](https://github.com/fireblocks/py-sdk/pull/68) -- Generated SDK #1353 [`#67`](https://github.com/fireblocks/py-sdk/pull/67) -- Generated SDK #9982 [`#66`](https://github.com/fireblocks/py-sdk/pull/66) -- Generated SDK #1362 [`#65`](https://github.com/fireblocks/py-sdk/pull/65) -- Generated SDK #3652 [`#64`](https://github.com/fireblocks/py-sdk/pull/64) - -## [v1.0.3](https://github.com/fireblocks/py-sdk/compare/v1.0.2...v1.0.3) - 2024-06-06 - -### Merged - -- Generated SDK #2648 [`#30`](https://github.com/fireblocks/py-sdk/pull/30) - -## [v1.0.2](https://github.com/fireblocks/py-sdk/compare/v0.0.2-beta...v1.0.2) - 2024-06-04 - -### Merged - -- version 1.0.2 [`#25`](https://github.com/fireblocks/py-sdk/pull/25) -- version 1.0.0 [`#24`](https://github.com/fireblocks/py-sdk/pull/24) - -## v0.0.2-beta - 2024-05-30 - -### Merged - -- version 0.0.2-beta [`#23`](https://github.com/fireblocks/py-sdk/pull/23) -- Update .bumpversion.cfg [`#14`](https://github.com/fireblocks/py-sdk/pull/14) -- Update setup.py [`#13`](https://github.com/fireblocks/py-sdk/pull/13) -- Bug Fixes [`#12`](https://github.com/fireblocks/py-sdk/pull/12) -- update support for beta in bumpversion [`#11`](https://github.com/fireblocks/py-sdk/pull/11) -- Update setup.py [`#10`](https://github.com/fireblocks/py-sdk/pull/10) -- Update setup.py [`#9`](https://github.com/fireblocks/py-sdk/pull/9) -- Added Idempotency & NCW headers support [`#7`](https://github.com/fireblocks/py-sdk/pull/7) -- Added Idempotency & NCW headers support [`#8`](https://github.com/fireblocks/py-sdk/pull/8) -- Update setup.py [`#5`](https://github.com/fireblocks/py-sdk/pull/5) -- API Support Updates [`#4`](https://github.com/fireblocks/py-sdk/pull/4) diff --git a/README.md b/README.md index 4ca24e78..670482bd 100644 --- a/README.md +++ b/README.md @@ -244,15 +244,30 @@ Class | Method | HTTP request | Description *BlockchainsAssetsApi* | [**register_new_asset**](docs/BlockchainsAssetsApi.md#register_new_asset) | **POST** /assets | Register an asset *BlockchainsAssetsApi* | [**set_asset_price**](docs/BlockchainsAssetsApi.md#set_asset_price) | **POST** /assets/prices/{id} | Set asset price *BlockchainsAssetsApi* | [**update_asset_user_metadata**](docs/BlockchainsAssetsApi.md#update_asset_user_metadata) | **PATCH** /assets/{id} | Update the user’s metadata for an asset +*ComplianceApi* | [**add_address_registry_vault_opt_outs**](docs/ComplianceApi.md#add_address_registry_vault_opt_outs) | **POST** /address_registry/vaults | Add vault accounts to the address registry opt-out list +*ComplianceApi* | [**assign_vaults_to_legal_entity**](docs/ComplianceApi.md#assign_vaults_to_legal_entity) | **POST** /legal_entities/{legalEntityId}/vaults | Assign vault accounts to a legal entity +*ComplianceApi* | [**get_address_registry_tenant_participation_status**](docs/ComplianceApi.md#get_address_registry_tenant_participation_status) | **GET** /address_registry/tenant | Get address registry participation status for the authenticated workspace +*ComplianceApi* | [**get_address_registry_vault_opt_out**](docs/ComplianceApi.md#get_address_registry_vault_opt_out) | **GET** /address_registry/vaults/{vaultAccountId} | Get whether a vault account is opted out of the address registry *ComplianceApi* | [**get_aml_post_screening_policy**](docs/ComplianceApi.md#get_aml_post_screening_policy) | **GET** /screening/aml/post_screening_policy | AML - View Post-Screening Policy *ComplianceApi* | [**get_aml_screening_policy**](docs/ComplianceApi.md#get_aml_screening_policy) | **GET** /screening/aml/screening_policy | AML - View Screening Policy -*ComplianceApi* | [**get_legal_entity_by_address**](docs/ComplianceApi.md#get_legal_entity_by_address) | **GET** /address_registry/legal_entity | Look up legal entity by address and asset +*ComplianceApi* | [**get_legal_entity**](docs/ComplianceApi.md#get_legal_entity) | **GET** /legal_entities/{legalEntityId} | Get a legal entity +*ComplianceApi* | [**get_legal_entity_by_address**](docs/ComplianceApi.md#get_legal_entity_by_address) | **GET** /address_registry/legal_entity | [Deprecated] Look up legal entity by address (query parameter) +*ComplianceApi* | [**get_legal_entity_for_address**](docs/ComplianceApi.md#get_legal_entity_for_address) | **GET** /address_registry/legal_entities/{address} | Look up legal entity by blockchain address *ComplianceApi* | [**get_post_screening_policy**](docs/ComplianceApi.md#get_post_screening_policy) | **GET** /screening/travel_rule/post_screening_policy | Travel Rule - View Post-Screening Policy *ComplianceApi* | [**get_screening_full_details**](docs/ComplianceApi.md#get_screening_full_details) | **GET** /screening/transaction/{txId} | Provides all the compliance details for the given screened transaction. *ComplianceApi* | [**get_screening_policy**](docs/ComplianceApi.md#get_screening_policy) | **GET** /screening/travel_rule/screening_policy | Travel Rule - View Screening Policy +*ComplianceApi* | [**list_address_registry_vault_opt_outs**](docs/ComplianceApi.md#list_address_registry_vault_opt_outs) | **GET** /address_registry/vaults | List vault-level address registry opt-outs (paginated) +*ComplianceApi* | [**list_legal_entities**](docs/ComplianceApi.md#list_legal_entities) | **GET** /legal_entities | List legal entities (Paginated) +*ComplianceApi* | [**list_vaults_for_legal_entity**](docs/ComplianceApi.md#list_vaults_for_legal_entity) | **GET** /legal_entities/{legalEntityId}/vaults | List vault accounts for a legal entity (Paginated) +*ComplianceApi* | [**opt_in_address_registry_tenant**](docs/ComplianceApi.md#opt_in_address_registry_tenant) | **POST** /address_registry/tenant | Opt the workspace in to the address registry +*ComplianceApi* | [**opt_out_address_registry_tenant**](docs/ComplianceApi.md#opt_out_address_registry_tenant) | **DELETE** /address_registry/tenant | Opt the workspace out of the address registry +*ComplianceApi* | [**register_legal_entity**](docs/ComplianceApi.md#register_legal_entity) | **POST** /legal_entities | Register a new legal entity +*ComplianceApi* | [**remove_address_registry_vault_opt_out**](docs/ComplianceApi.md#remove_address_registry_vault_opt_out) | **DELETE** /address_registry/vaults/{vaultAccountId} | Remove a single vault account from the address registry opt-out list +*ComplianceApi* | [**remove_all_address_registry_vault_opt_outs**](docs/ComplianceApi.md#remove_all_address_registry_vault_opt_outs) | **DELETE** /address_registry/vaults | Remove all vault-level address registry opt-outs for the workspace *ComplianceApi* | [**retry_rejected_transaction_bypass_screening_checks**](docs/ComplianceApi.md#retry_rejected_transaction_bypass_screening_checks) | **POST** /screening/transaction/{txId}/bypass_screening_policy | Calling the \"Bypass Screening Policy\" API endpoint triggers a new transaction, with the API user as the initiator, bypassing the screening policy check *ComplianceApi* | [**set_aml_verdict**](docs/ComplianceApi.md#set_aml_verdict) | **POST** /screening/aml/verdict/manual | Set AML Verdict for Manual Screening Verdict. *ComplianceApi* | [**update_aml_screening_configuration**](docs/ComplianceApi.md#update_aml_screening_configuration) | **PUT** /screening/aml/policy_configuration | Update AML Configuration +*ComplianceApi* | [**update_legal_entity**](docs/ComplianceApi.md#update_legal_entity) | **PUT** /legal_entities/{legalEntityId} | Update legal entity *ComplianceApi* | [**update_screening_configuration**](docs/ComplianceApi.md#update_screening_configuration) | **PUT** /screening/configurations | Tenant - Screening Configuration *ComplianceApi* | [**update_travel_rule_config**](docs/ComplianceApi.md#update_travel_rule_config) | **PUT** /screening/travel_rule/policy_configuration | Update Travel Rule Configuration *ComplianceScreeningConfigurationApi* | [**get_aml_screening_configuration**](docs/ComplianceScreeningConfigurationApi.md#get_aml_screening_configuration) | **GET** /screening/aml/policy_configuration | Get AML Screening Policy Configuration @@ -446,6 +461,7 @@ Class | Method | HTTP request | Description *StakingApi* | [**get_chain_info**](docs/StakingApi.md#get_chain_info) | **GET** /staking/chains/{chainDescriptor}/chainInfo | Get chain-level staking parameters *StakingApi* | [**get_chains**](docs/StakingApi.md#get_chains) | **GET** /staking/chains | List supported staking chains *StakingApi* | [**get_delegation_by_id**](docs/StakingApi.md#get_delegation_by_id) | **GET** /staking/positions/{id} | Get position details +*StakingApi* | [**get_positions**](docs/StakingApi.md#get_positions) | **GET** /staking/positions_paginated | List staking positions (Paginated) *StakingApi* | [**get_providers**](docs/StakingApi.md#get_providers) | **GET** /staking/providers | List staking providers *StakingApi* | [**get_summary**](docs/StakingApi.md#get_summary) | **GET** /staking/positions/summary | Get positions summary *StakingApi* | [**get_summary_by_vault**](docs/StakingApi.md#get_summary_by_vault) | **GET** /staking/positions/summary/vaults | Get positions summary by vault @@ -514,6 +530,7 @@ Class | Method | HTTP request | Description *TradingBetaApi* | [**create_quote**](docs/TradingBetaApi.md#create_quote) | **POST** /trading/quotes | Create a quote *TradingBetaApi* | [**get_order**](docs/TradingBetaApi.md#get_order) | **GET** /trading/orders/{orderId} | Get order details *TradingBetaApi* | [**get_orders**](docs/TradingBetaApi.md#get_orders) | **GET** /trading/orders | Get orders +*TradingBetaApi* | [**get_trading_provider_by_id**](docs/TradingBetaApi.md#get_trading_provider_by_id) | **GET** /trading/providers/{providerId} | Get trading provider by ID *TradingBetaApi* | [**get_trading_providers**](docs/TradingBetaApi.md#get_trading_providers) | **GET** /trading/providers | Get providers *TransactionsApi* | [**cancel_transaction**](docs/TransactionsApi.md#cancel_transaction) | **POST** /transactions/{txId}/cancel | Cancel a transaction *TransactionsApi* | [**create_transaction**](docs/TransactionsApi.md#create_transaction) | **POST** /transactions | Create a new transaction @@ -609,7 +626,8 @@ Class | Method | HTTP request | Description - [AccountAccess](docs/AccountAccess.md) - [AccountBase](docs/AccountBase.md) - [AccountBasedAccessProvider](docs/AccountBasedAccessProvider.md) - - [AccountBasedAccessProviderDetails](docs/AccountBasedAccessProviderDetails.md) + - [AccountBasedAccessProviderInfo](docs/AccountBasedAccessProviderInfo.md) + - [AccountBasedProviderDetails](docs/AccountBasedProviderDetails.md) - [AccountConfig](docs/AccountConfig.md) - [AccountHolderDetails](docs/AccountHolderDetails.md) - [AccountIdentifier](docs/AccountIdentifier.md) @@ -635,8 +653,20 @@ Class | Method | HTTP request | Description - [AddressBalanceItemDto](docs/AddressBalanceItemDto.md) - [AddressBalancePagedResponse](docs/AddressBalancePagedResponse.md) - [AddressNotAvailableError](docs/AddressNotAvailableError.md) + - [AddressRegistryAddVaultOptOutsRequest](docs/AddressRegistryAddVaultOptOutsRequest.md) + - [AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner](docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md) + - [AddressRegistryAddVaultOptOutsResponse](docs/AddressRegistryAddVaultOptOutsResponse.md) - [AddressRegistryError](docs/AddressRegistryError.md) + - [AddressRegistryGetVaultOptOutResponse](docs/AddressRegistryGetVaultOptOutResponse.md) - [AddressRegistryLegalEntity](docs/AddressRegistryLegalEntity.md) + - [AddressRegistryLegalEntityLegacy](docs/AddressRegistryLegalEntityLegacy.md) + - [AddressRegistryListVaultOptOutsResponse](docs/AddressRegistryListVaultOptOutsResponse.md) + - [AddressRegistryRemoveAllVaultOptOutsResponse](docs/AddressRegistryRemoveAllVaultOptOutsResponse.md) + - [AddressRegistryRemoveVaultOptOutResponse](docs/AddressRegistryRemoveVaultOptOutResponse.md) + - [AddressRegistryTenantRegistryResponse](docs/AddressRegistryTenantRegistryResponse.md) + - [AddressRegistryTravelRuleProvider](docs/AddressRegistryTravelRuleProvider.md) + - [AddressRegistryVaultListOrder](docs/AddressRegistryVaultListOrder.md) + - [AddressRegistryVaultOptOutItem](docs/AddressRegistryVaultOptOutItem.md) - [AlertExposureTypeEnum](docs/AlertExposureTypeEnum.md) - [AlertLevelEnum](docs/AlertLevelEnum.md) - [AmlAlert](docs/AmlAlert.md) @@ -687,10 +717,11 @@ Class | Method | HTTP request | Description - [AssetPriceResponse](docs/AssetPriceResponse.md) - [AssetResponse](docs/AssetResponse.md) - [AssetScope](docs/AssetScope.md) - - [AssetTypeEnum](docs/AssetTypeEnum.md) - [AssetTypeResponse](docs/AssetTypeResponse.md) - [AssetTypesConfigInner](docs/AssetTypesConfigInner.md) - [AssetWallet](docs/AssetWallet.md) + - [AssignVaultsToLegalEntityRequest](docs/AssignVaultsToLegalEntityRequest.md) + - [AssignVaultsToLegalEntityResponse](docs/AssignVaultsToLegalEntityResponse.md) - [AuditLogData](docs/AuditLogData.md) - [AuditorData](docs/AuditorData.md) - [AuthorizationGroups](docs/AuthorizationGroups.md) @@ -716,7 +747,6 @@ Class | Method | HTTP request | Description - [CallbackHandler](docs/CallbackHandler.md) - [CallbackHandlerRequest](docs/CallbackHandlerRequest.md) - [CancelTransactionResponse](docs/CancelTransactionResponse.md) - - [Capability](docs/Capability.md) - [ChainDescriptor](docs/ChainDescriptor.md) - [ChainInfoResponse](docs/ChainInfoResponse.md) - [ChannelDvnConfigWithConfirmations](docs/ChannelDvnConfigWithConfirmations.md) @@ -869,7 +899,8 @@ Class | Method | HTTP request | Description - [DestinationTransferPeerPathResponse](docs/DestinationTransferPeerPathResponse.md) - [DirectAccess](docs/DirectAccess.md) - [DirectAccessProvider](docs/DirectAccessProvider.md) - - [DirectAccessProviderDetails](docs/DirectAccessProviderDetails.md) + - [DirectAccessProviderInfo](docs/DirectAccessProviderInfo.md) + - [DirectProviderDetails](docs/DirectProviderDetails.md) - [DisbursementAmountInstruction](docs/DisbursementAmountInstruction.md) - [DisbursementConfigOperation](docs/DisbursementConfigOperation.md) - [DisbursementInstruction](docs/DisbursementInstruction.md) @@ -935,6 +966,7 @@ Class | Method | HTTP request | Description - [ExecutionOperationStatus](docs/ExecutionOperationStatus.md) - [ExecutionRequestBaseDetails](docs/ExecutionRequestBaseDetails.md) - [ExecutionRequestDetails](docs/ExecutionRequestDetails.md) + - [ExecutionRequestDetailsType](docs/ExecutionRequestDetailsType.md) - [ExecutionResponseBaseDetails](docs/ExecutionResponseBaseDetails.md) - [ExecutionResponseDetails](docs/ExecutionResponseDetails.md) - [ExecutionScreeningOperation](docs/ExecutionScreeningOperation.md) @@ -1001,6 +1033,7 @@ Class | Method | HTTP request | Description - [GetValidationKeyResponseDto](docs/GetValidationKeyResponseDto.md) - [GetWhitelistIpAddressesResponse](docs/GetWhitelistIpAddressesResponse.md) - [GetWorkspaceStatusResponse](docs/GetWorkspaceStatusResponse.md) + - [GleifData](docs/GleifData.md) - [HttpContractDoesNotExistError](docs/HttpContractDoesNotExistError.md) - [IbanAddress](docs/IbanAddress.md) - [IbanDestination](docs/IbanDestination.md) @@ -1054,14 +1087,23 @@ Class | Method | HTTP request | Description - [LegacyPublishDraftRequest](docs/LegacyPublishDraftRequest.md) - [LegacyPublishResult](docs/LegacyPublishResult.md) - [LegacySrcOrDestAttributesInner](docs/LegacySrcOrDestAttributesInner.md) + - [LegalEntityRegistration](docs/LegalEntityRegistration.md) + - [LeiStatus](docs/LeiStatus.md) - [LinkedTokensCount](docs/LinkedTokensCount.md) - [ListAssetsResponse](docs/ListAssetsResponse.md) - [ListBlockchainsResponse](docs/ListBlockchainsResponse.md) + - [ListLegalEntitiesResponse](docs/ListLegalEntitiesResponse.md) - [ListOwnedCollectionsResponse](docs/ListOwnedCollectionsResponse.md) - [ListOwnedTokensResponse](docs/ListOwnedTokensResponse.md) + - [ListVaultsForRegistrationResponse](docs/ListVaultsForRegistrationResponse.md) - [LocalBankTransferAfricaAddress](docs/LocalBankTransferAfricaAddress.md) - [LocalBankTransferAfricaDestination](docs/LocalBankTransferAfricaDestination.md) - [Manifest](docs/Manifest.md) + - [ManifestBase](docs/ManifestBase.md) + - [ManifestOrder](docs/ManifestOrder.md) + - [ManifestOrderInfo](docs/ManifestOrderInfo.md) + - [ManifestQuote](docs/ManifestQuote.md) + - [ManifestQuoteInfo](docs/ManifestQuoteInfo.md) - [MarketExecutionRequestDetails](docs/MarketExecutionRequestDetails.md) - [MarketExecutionResponseDetails](docs/MarketExecutionResponseDetails.md) - [MarketRequoteRequestDetails](docs/MarketRequoteRequestDetails.md) @@ -1168,6 +1210,7 @@ Class | Method | HTTP request | Description - [PolicyValidation](docs/PolicyValidation.md) - [PolicyVerdictActionEnum](docs/PolicyVerdictActionEnum.md) - [PolicyVerdictActionEnum2](docs/PolicyVerdictActionEnum2.md) + - [Position](docs/Position.md) - [PostalAddress](docs/PostalAddress.md) - [PreScreening](docs/PreScreening.md) - [PrefundedSettlement](docs/PrefundedSettlement.md) @@ -1195,6 +1238,7 @@ Class | Method | HTTP request | Description - [ReadCallFunctionDtoAbiFunction](docs/ReadCallFunctionDtoAbiFunction.md) - [RecipientHandle](docs/RecipientHandle.md) - [RedeemFundsToLinkedDDAResponse](docs/RedeemFundsToLinkedDDAResponse.md) + - [RegisterLegalEntityRequest](docs/RegisterLegalEntityRequest.md) - [RegisterNewAssetRequest](docs/RegisterNewAssetRequest.md) - [ReissueMultichainTokenRequest](docs/ReissueMultichainTokenRequest.md) - [RelatedRequest](docs/RelatedRequest.md) @@ -1240,7 +1284,6 @@ Class | Method | HTTP request | Description - [ScreeningOperationType](docs/ScreeningOperationType.md) - [ScreeningPolicyResponse](docs/ScreeningPolicyResponse.md) - [ScreeningProviderRulesConfigurationResponse](docs/ScreeningProviderRulesConfigurationResponse.md) - - [ScreeningRiskLevelEnum](docs/ScreeningRiskLevelEnum.md) - [ScreeningTRLinkAmount](docs/ScreeningTRLinkAmount.md) - [ScreeningTRLinkMissingTrmDecision](docs/ScreeningTRLinkMissingTrmDecision.md) - [ScreeningTRLinkMissingTrmRule](docs/ScreeningTRLinkMissingTrmRule.md) @@ -1284,6 +1327,7 @@ Class | Method | HTTP request | Description - [SettlementRequestBody](docs/SettlementRequestBody.md) - [SettlementResponse](docs/SettlementResponse.md) - [SettlementSourceAccount](docs/SettlementSourceAccount.md) + - [SettlementTypeEnum](docs/SettlementTypeEnum.md) - [Side](docs/Side.md) - [SignedMessage](docs/SignedMessage.md) - [SignedMessageSignature](docs/SignedMessageSignature.md) @@ -1334,6 +1378,7 @@ Class | Method | HTTP request | Description - [StEthBlockchainData](docs/StEthBlockchainData.md) - [StakeRequest](docs/StakeRequest.md) - [StakeResponse](docs/StakeResponse.md) + - [StakingPositionsPaginatedResponse](docs/StakingPositionsPaginatedResponse.md) - [StakingProvider](docs/StakingProvider.md) - [Status](docs/Status.md) - [StellarRippleCreateParamsDto](docs/StellarRippleCreateParamsDto.md) @@ -1450,6 +1495,7 @@ Class | Method | HTTP request | Description - [TradingAccountType](docs/TradingAccountType.md) - [TradingErrorSchema](docs/TradingErrorSchema.md) - [TradingProvider](docs/TradingProvider.md) + - [TradingProviderDetails](docs/TradingProviderDetails.md) - [Transaction](docs/Transaction.md) - [TransactionDirection](docs/TransactionDirection.md) - [TransactionFee](docs/TransactionFee.md) @@ -1507,6 +1553,7 @@ Class | Method | HTTP request | Description - [TravelRulePiiIVMS](docs/TravelRulePiiIVMS.md) - [TravelRulePolicyRuleResponse](docs/TravelRulePolicyRuleResponse.md) - [TravelRulePrescreeningRule](docs/TravelRulePrescreeningRule.md) + - [TravelRuleProvider](docs/TravelRuleProvider.md) - [TravelRuleResult](docs/TravelRuleResult.md) - [TravelRuleStatusEnum](docs/TravelRuleStatusEnum.md) - [TravelRuleTransactionBlockchainInfo](docs/TravelRuleTransactionBlockchainInfo.md) @@ -1543,6 +1590,7 @@ Class | Method | HTTP request | Description - [UpdateCallbackHandlerRequest](docs/UpdateCallbackHandlerRequest.md) - [UpdateCallbackHandlerResponse](docs/UpdateCallbackHandlerResponse.md) - [UpdateDraftRequest](docs/UpdateDraftRequest.md) + - [UpdateLegalEntityRequest](docs/UpdateLegalEntityRequest.md) - [UpdateTagRequest](docs/UpdateTagRequest.md) - [UpdateTokenOwnershipStatusDto](docs/UpdateTokenOwnershipStatusDto.md) - [UpdateVaultAccountAssetAddressRequest](docs/UpdateVaultAccountAssetAddressRequest.md) diff --git a/docs/AccountBasedAccessProvider.md b/docs/AccountBasedAccessProvider.md index dc698c49..6aa8a54f 100644 --- a/docs/AccountBasedAccessProvider.md +++ b/docs/AccountBasedAccessProvider.md @@ -11,7 +11,7 @@ Name | Type | Description | Notes **account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | **manifest** | [**Manifest**](Manifest.md) | | **connected** | **bool** | Whether the provider is currently connected | -**accounts** | [**List[AccountBase]**](AccountBase.md) | | [optional] +**accounts** | [**List[AccountBase]**](AccountBase.md) | | ## Example diff --git a/docs/AccountBasedAccessProviderDetails.md b/docs/AccountBasedAccessProviderDetails.md deleted file mode 100644 index 0fadad55..00000000 --- a/docs/AccountBasedAccessProviderDetails.md +++ /dev/null @@ -1,31 +0,0 @@ -# AccountBasedAccessProviderDetails - - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**manifest** | [**Manifest**](Manifest.md) | | -**connected** | **bool** | Whether the provider is currently connected | -**accounts** | [**List[AccountBase]**](AccountBase.md) | | [optional] - -## Example - -```python -from fireblocks.models.account_based_access_provider_details import AccountBasedAccessProviderDetails - -# TODO update the JSON string below -json = "{}" -# create an instance of AccountBasedAccessProviderDetails from a JSON string -account_based_access_provider_details_instance = AccountBasedAccessProviderDetails.from_json(json) -# print the JSON string representation of the object -print(AccountBasedAccessProviderDetails.to_json()) - -# convert the object into a dict -account_based_access_provider_details_dict = account_based_access_provider_details_instance.to_dict() -# create an instance of AccountBasedAccessProviderDetails from a dict -account_based_access_provider_details_from_dict = AccountBasedAccessProviderDetails.from_dict(account_based_access_provider_details_dict) -``` -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/docs/AccountBasedAccessProviderInfo.md b/docs/AccountBasedAccessProviderInfo.md new file mode 100644 index 00000000..e13f55dc --- /dev/null +++ b/docs/AccountBasedAccessProviderInfo.md @@ -0,0 +1,30 @@ +# AccountBasedAccessProviderInfo + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**connected** | **bool** | Whether the provider is currently connected | +**accounts** | [**List[AccountBase]**](AccountBase.md) | | + +## Example + +```python +from fireblocks.models.account_based_access_provider_info import AccountBasedAccessProviderInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of AccountBasedAccessProviderInfo from a JSON string +account_based_access_provider_info_instance = AccountBasedAccessProviderInfo.from_json(json) +# print the JSON string representation of the object +print(AccountBasedAccessProviderInfo.to_json()) + +# convert the object into a dict +account_based_access_provider_info_dict = account_based_access_provider_info_instance.to_dict() +# create an instance of AccountBasedAccessProviderInfo from a dict +account_based_access_provider_info_from_dict = AccountBasedAccessProviderInfo.from_dict(account_based_access_provider_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AccountBasedProviderDetails.md b/docs/AccountBasedProviderDetails.md new file mode 100644 index 00000000..a2fa7e07 --- /dev/null +++ b/docs/AccountBasedProviderDetails.md @@ -0,0 +1,35 @@ +# AccountBasedProviderDetails + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Unique identifier for the provider | +**name** | **str** | Display name of the provider | +**logo** | **str** | URL to the logo image of the provider | [optional] +**account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | +**manifest** | [**Manifest**](Manifest.md) | | +**connected** | **bool** | Whether the provider is currently connected | +**accounts** | [**List[AccountBase]**](AccountBase.md) | | + +## Example + +```python +from fireblocks.models.account_based_provider_details import AccountBasedProviderDetails + +# TODO update the JSON string below +json = "{}" +# create an instance of AccountBasedProviderDetails from a JSON string +account_based_provider_details_instance = AccountBasedProviderDetails.from_json(json) +# print the JSON string representation of the object +print(AccountBasedProviderDetails.to_json()) + +# convert the object into a dict +account_based_provider_details_dict = account_based_provider_details_instance.to_dict() +# create an instance of AccountBasedProviderDetails from a dict +account_based_provider_details_from_dict = AccountBasedProviderDetails.from_dict(account_based_provider_details_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryAddVaultOptOutsRequest.md b/docs/AddressRegistryAddVaultOptOutsRequest.md new file mode 100644 index 00000000..ec94d361 --- /dev/null +++ b/docs/AddressRegistryAddVaultOptOutsRequest.md @@ -0,0 +1,29 @@ +# AddressRegistryAddVaultOptOutsRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**vault_account_ids** | [**List[AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner]**](AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md) | Vault account ids to add to the opt-out list (non-empty). Each element may be a JSON number or a decimal string; both forms are accepted. | + +## Example + +```python +from fireblocks.models.address_registry_add_vault_opt_outs_request import AddressRegistryAddVaultOptOutsRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryAddVaultOptOutsRequest from a JSON string +address_registry_add_vault_opt_outs_request_instance = AddressRegistryAddVaultOptOutsRequest.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryAddVaultOptOutsRequest.to_json()) + +# convert the object into a dict +address_registry_add_vault_opt_outs_request_dict = address_registry_add_vault_opt_outs_request_instance.to_dict() +# create an instance of AddressRegistryAddVaultOptOutsRequest from a dict +address_registry_add_vault_opt_outs_request_from_dict = AddressRegistryAddVaultOptOutsRequest.from_dict(address_registry_add_vault_opt_outs_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md b/docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md new file mode 100644 index 00000000..f3692177 --- /dev/null +++ b/docs/AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.md @@ -0,0 +1,28 @@ +# AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +## Example + +```python +from fireblocks.models.address_registry_add_vault_opt_outs_request_vault_account_ids_inner import AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner from a JSON string +address_registry_add_vault_opt_outs_request_vault_account_ids_inner_instance = AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.to_json()) + +# convert the object into a dict +address_registry_add_vault_opt_outs_request_vault_account_ids_inner_dict = address_registry_add_vault_opt_outs_request_vault_account_ids_inner_instance.to_dict() +# create an instance of AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner from a dict +address_registry_add_vault_opt_outs_request_vault_account_ids_inner_from_dict = AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.from_dict(address_registry_add_vault_opt_outs_request_vault_account_ids_inner_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryAddVaultOptOutsResponse.md b/docs/AddressRegistryAddVaultOptOutsResponse.md new file mode 100644 index 00000000..4fdd31b7 --- /dev/null +++ b/docs/AddressRegistryAddVaultOptOutsResponse.md @@ -0,0 +1,30 @@ +# AddressRegistryAddVaultOptOutsResponse + +Result of adding vault account ids to the workspace opt-out list for the address registry. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**accepted_count** | **int** | Number of vault ids from the request that were processed. An empty `vaultAccountIds` list is rejected with HTTP 400, not a 200 with zero. | + +## Example + +```python +from fireblocks.models.address_registry_add_vault_opt_outs_response import AddressRegistryAddVaultOptOutsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryAddVaultOptOutsResponse from a JSON string +address_registry_add_vault_opt_outs_response_instance = AddressRegistryAddVaultOptOutsResponse.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryAddVaultOptOutsResponse.to_json()) + +# convert the object into a dict +address_registry_add_vault_opt_outs_response_dict = address_registry_add_vault_opt_outs_response_instance.to_dict() +# create an instance of AddressRegistryAddVaultOptOutsResponse from a dict +address_registry_add_vault_opt_outs_response_from_dict = AddressRegistryAddVaultOptOutsResponse.from_dict(address_registry_add_vault_opt_outs_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryError.md b/docs/AddressRegistryError.md index 95c97651..34f66aef 100644 --- a/docs/AddressRegistryError.md +++ b/docs/AddressRegistryError.md @@ -1,12 +1,12 @@ # AddressRegistryError -Error body for address-registry 4xx and 5xx. +Error body for address registry operations (4xx and 5xx). ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**code** | **int** | Numeric error code (2140–2143) for 403, 404 and 5xx responses. | [optional] +**code** | **int** | Application error code when present. Typical values include **2140** (403 — workspace not opted in to the address registry) and **2142** (404 — not found). Other codes may appear, including on server errors. | [optional] **message** | **str** | Human-readable error message | ## Example diff --git a/docs/AddressRegistryGetVaultOptOutResponse.md b/docs/AddressRegistryGetVaultOptOutResponse.md new file mode 100644 index 00000000..74fa9c6c --- /dev/null +++ b/docs/AddressRegistryGetVaultOptOutResponse.md @@ -0,0 +1,30 @@ +# AddressRegistryGetVaultOptOutResponse + +Whether the given vault account is excluded from the address registry for your workspace. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**opted_out** | **bool** | `true` if this vault account is excluded from the address registry; `false` if it is not excluded. | + +## Example + +```python +from fireblocks.models.address_registry_get_vault_opt_out_response import AddressRegistryGetVaultOptOutResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryGetVaultOptOutResponse from a JSON string +address_registry_get_vault_opt_out_response_instance = AddressRegistryGetVaultOptOutResponse.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryGetVaultOptOutResponse.to_json()) + +# convert the object into a dict +address_registry_get_vault_opt_out_response_dict = address_registry_get_vault_opt_out_response_instance.to_dict() +# create an instance of AddressRegistryGetVaultOptOutResponse from a dict +address_registry_get_vault_opt_out_response_from_dict = AddressRegistryGetVaultOptOutResponse.from_dict(address_registry_get_vault_opt_out_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryLegalEntity.md b/docs/AddressRegistryLegalEntity.md index e7f5c663..836996c4 100644 --- a/docs/AddressRegistryLegalEntity.md +++ b/docs/AddressRegistryLegalEntity.md @@ -1,14 +1,17 @@ # AddressRegistryLegalEntity -Legal entity resolved for an address-registry lookup +Legal entity details for a blockchain address. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**company_name** | **str** | Legal entity / company display name | -**country_code** | **str** | Jurisdiction country code (e.g. ISO 3166-1 alpha-2) | -**company_id** | **str** | Company identifier for the resolved legal entity (UUID) | +**verified** | **bool** | Whether the entity was resolved from verified public registry data (e.g. LEI sources). | +**entity_name** | **str** | Legal entity display name. | +**jurisdiction** | **str** | Jurisdiction (e.g. ISO 3166-1 alpha-2 country code). | +**lei** | **str** | Legal Entity Identifier when available; may be empty when unverified. | +**travel_rule_providers** | [**List[AddressRegistryTravelRuleProvider]**](AddressRegistryTravelRuleProvider.md) | | +**email** | **str** | Travel Rule contact email when available. | ## Example diff --git a/docs/AddressRegistryLegalEntityLegacy.md b/docs/AddressRegistryLegalEntityLegacy.md new file mode 100644 index 00000000..31fc870c --- /dev/null +++ b/docs/AddressRegistryLegalEntityLegacy.md @@ -0,0 +1,32 @@ +# AddressRegistryLegalEntityLegacy + +Narrow legacy response for deprecated `GET /v1/address_registry/legal_entity?address=…`. Use `GET /v1/address_registry/legal_entities/{address}` for the full field set. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**company_name** | **str** | Legal entity / company display name | +**country_code** | **str** | Jurisdiction country code (e.g. ISO 3166-1 alpha-2) | +**company_id** | **str** | Company identifier for the resolved legal entity (UUID) | + +## Example + +```python +from fireblocks.models.address_registry_legal_entity_legacy import AddressRegistryLegalEntityLegacy + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryLegalEntityLegacy from a JSON string +address_registry_legal_entity_legacy_instance = AddressRegistryLegalEntityLegacy.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryLegalEntityLegacy.to_json()) + +# convert the object into a dict +address_registry_legal_entity_legacy_dict = address_registry_legal_entity_legacy_instance.to_dict() +# create an instance of AddressRegistryLegalEntityLegacy from a dict +address_registry_legal_entity_legacy_from_dict = AddressRegistryLegalEntityLegacy.from_dict(address_registry_legal_entity_legacy_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryListVaultOptOutsResponse.md b/docs/AddressRegistryListVaultOptOutsResponse.md new file mode 100644 index 00000000..0a65280e --- /dev/null +++ b/docs/AddressRegistryListVaultOptOutsResponse.md @@ -0,0 +1,32 @@ +# AddressRegistryListVaultOptOutsResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | Total number of vault accounts excluded from the address registry for your workspace. | +**data** | [**List[AddressRegistryVaultOptOutItem]**](AddressRegistryVaultOptOutItem.md) | | +**next** | **str** | Opaque cursor for the next page; empty when there is no next page. | [optional] +**prev** | **str** | Opaque cursor for the previous page; empty when there is no previous page. | [optional] + +## Example + +```python +from fireblocks.models.address_registry_list_vault_opt_outs_response import AddressRegistryListVaultOptOutsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryListVaultOptOutsResponse from a JSON string +address_registry_list_vault_opt_outs_response_instance = AddressRegistryListVaultOptOutsResponse.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryListVaultOptOutsResponse.to_json()) + +# convert the object into a dict +address_registry_list_vault_opt_outs_response_dict = address_registry_list_vault_opt_outs_response_instance.to_dict() +# create an instance of AddressRegistryListVaultOptOutsResponse from a dict +address_registry_list_vault_opt_outs_response_from_dict = AddressRegistryListVaultOptOutsResponse.from_dict(address_registry_list_vault_opt_outs_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryRemoveAllVaultOptOutsResponse.md b/docs/AddressRegistryRemoveAllVaultOptOutsResponse.md new file mode 100644 index 00000000..40c19ce3 --- /dev/null +++ b/docs/AddressRegistryRemoveAllVaultOptOutsResponse.md @@ -0,0 +1,30 @@ +# AddressRegistryRemoveAllVaultOptOutsResponse + +Result of clearing all vault-level opt-outs for the address registry on this workspace. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**removed_count** | **int** | Number of opt-out rows deleted (0 if none existed). | + +## Example + +```python +from fireblocks.models.address_registry_remove_all_vault_opt_outs_response import AddressRegistryRemoveAllVaultOptOutsResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryRemoveAllVaultOptOutsResponse from a JSON string +address_registry_remove_all_vault_opt_outs_response_instance = AddressRegistryRemoveAllVaultOptOutsResponse.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryRemoveAllVaultOptOutsResponse.to_json()) + +# convert the object into a dict +address_registry_remove_all_vault_opt_outs_response_dict = address_registry_remove_all_vault_opt_outs_response_instance.to_dict() +# create an instance of AddressRegistryRemoveAllVaultOptOutsResponse from a dict +address_registry_remove_all_vault_opt_outs_response_from_dict = AddressRegistryRemoveAllVaultOptOutsResponse.from_dict(address_registry_remove_all_vault_opt_outs_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryRemoveVaultOptOutResponse.md b/docs/AddressRegistryRemoveVaultOptOutResponse.md new file mode 100644 index 00000000..883a0baf --- /dev/null +++ b/docs/AddressRegistryRemoveVaultOptOutResponse.md @@ -0,0 +1,30 @@ +# AddressRegistryRemoveVaultOptOutResponse + +Body after removing one vault from the opt-out list; same fields as GET for that vault (`optedOut` is false). + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**opted_out** | **bool** | Always false after a successful remove — the vault is not on the opt-out list. | + +## Example + +```python +from fireblocks.models.address_registry_remove_vault_opt_out_response import AddressRegistryRemoveVaultOptOutResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryRemoveVaultOptOutResponse from a JSON string +address_registry_remove_vault_opt_out_response_instance = AddressRegistryRemoveVaultOptOutResponse.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryRemoveVaultOptOutResponse.to_json()) + +# convert the object into a dict +address_registry_remove_vault_opt_out_response_dict = address_registry_remove_vault_opt_out_response_instance.to_dict() +# create an instance of AddressRegistryRemoveVaultOptOutResponse from a dict +address_registry_remove_vault_opt_out_response_from_dict = AddressRegistryRemoveVaultOptOutResponse.from_dict(address_registry_remove_vault_opt_out_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryTenantRegistryResponse.md b/docs/AddressRegistryTenantRegistryResponse.md new file mode 100644 index 00000000..af863761 --- /dev/null +++ b/docs/AddressRegistryTenantRegistryResponse.md @@ -0,0 +1,30 @@ +# AddressRegistryTenantRegistryResponse + +Workspace participation in the address registry. Same shape for GET, POST (opt in), and DELETE (opt out). + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | OPTED_IN or OPTED_OUT. | + +## Example + +```python +from fireblocks.models.address_registry_tenant_registry_response import AddressRegistryTenantRegistryResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryTenantRegistryResponse from a JSON string +address_registry_tenant_registry_response_instance = AddressRegistryTenantRegistryResponse.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryTenantRegistryResponse.to_json()) + +# convert the object into a dict +address_registry_tenant_registry_response_dict = address_registry_tenant_registry_response_instance.to_dict() +# create an instance of AddressRegistryTenantRegistryResponse from a dict +address_registry_tenant_registry_response_from_dict = AddressRegistryTenantRegistryResponse.from_dict(address_registry_tenant_registry_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryTravelRuleProvider.md b/docs/AddressRegistryTravelRuleProvider.md new file mode 100644 index 00000000..526e3181 --- /dev/null +++ b/docs/AddressRegistryTravelRuleProvider.md @@ -0,0 +1,17 @@ +# AddressRegistryTravelRuleProvider + +Travel Rule provider identifier (string enum value). + +## Enum + +* `TRAVEL_RULE_PROVIDER_NOTABENE` (value: `'TRAVEL_RULE_PROVIDER_NOTABENE'`) + +* `TRAVEL_RULE_PROVIDER_SYGNA` (value: `'TRAVEL_RULE_PROVIDER_SYGNA'`) + +* `TRAVEL_RULE_PROVIDER_TRISA` (value: `'TRAVEL_RULE_PROVIDER_TRISA'`) + +* `TRAVEL_RULE_PROVIDER_OPENVASP` (value: `'TRAVEL_RULE_PROVIDER_OPENVASP'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryVaultListOrder.md b/docs/AddressRegistryVaultListOrder.md new file mode 100644 index 00000000..920c7ce5 --- /dev/null +++ b/docs/AddressRegistryVaultListOrder.md @@ -0,0 +1,13 @@ +# AddressRegistryVaultListOrder + +Sort order for the vault opt-out list by vault account id (ascending is the default when omitted). + +## Enum + +* `VAULT_OPT_OUT_LIST_ORDER_ASC` (value: `'VAULT_OPT_OUT_LIST_ORDER_ASC'`) + +* `VAULT_OPT_OUT_LIST_ORDER_DESC` (value: `'VAULT_OPT_OUT_LIST_ORDER_DESC'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AddressRegistryVaultOptOutItem.md b/docs/AddressRegistryVaultOptOutItem.md new file mode 100644 index 00000000..2882d0f4 --- /dev/null +++ b/docs/AddressRegistryVaultOptOutItem.md @@ -0,0 +1,30 @@ +# AddressRegistryVaultOptOutItem + +A vault account excluded from the address registry for your workspace. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**vault_account_id** | **int** | Vault account ID. | + +## Example + +```python +from fireblocks.models.address_registry_vault_opt_out_item import AddressRegistryVaultOptOutItem + +# TODO update the JSON string below +json = "{}" +# create an instance of AddressRegistryVaultOptOutItem from a JSON string +address_registry_vault_opt_out_item_instance = AddressRegistryVaultOptOutItem.from_json(json) +# print the JSON string representation of the object +print(AddressRegistryVaultOptOutItem.to_json()) + +# convert the object into a dict +address_registry_vault_opt_out_item_dict = address_registry_vault_opt_out_item_instance.to_dict() +# create an instance of AddressRegistryVaultOptOutItem from a dict +address_registry_vault_opt_out_item_from_dict = AddressRegistryVaultOptOutItem.from_dict(address_registry_vault_opt_out_item_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AmlResult.md b/docs/AmlResult.md index d31c6fa1..205e946c 100644 --- a/docs/AmlResult.md +++ b/docs/AmlResult.md @@ -1,6 +1,6 @@ # AmlResult -Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. +Deprecated: This field is not currently returned in the API response. Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. ## Properties diff --git a/docs/AmlStatusEnum.md b/docs/AmlStatusEnum.md index ad8cc9ec..4ff32523 100644 --- a/docs/AmlStatusEnum.md +++ b/docs/AmlStatusEnum.md @@ -1,6 +1,6 @@ # AmlStatusEnum -AML screening status +Deprecated: Use screeningStatus instead. AML screening status. ## Enum diff --git a/docs/AssignVaultsToLegalEntityRequest.md b/docs/AssignVaultsToLegalEntityRequest.md new file mode 100644 index 00000000..047d2699 --- /dev/null +++ b/docs/AssignVaultsToLegalEntityRequest.md @@ -0,0 +1,30 @@ +# AssignVaultsToLegalEntityRequest + +Request body to assign vault accounts to a legal entity + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**vault_account_ids** | **List[str]** | List of vault account IDs to assign to the legal entity | + +## Example + +```python +from fireblocks.models.assign_vaults_to_legal_entity_request import AssignVaultsToLegalEntityRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of AssignVaultsToLegalEntityRequest from a JSON string +assign_vaults_to_legal_entity_request_instance = AssignVaultsToLegalEntityRequest.from_json(json) +# print the JSON string representation of the object +print(AssignVaultsToLegalEntityRequest.to_json()) + +# convert the object into a dict +assign_vaults_to_legal_entity_request_dict = assign_vaults_to_legal_entity_request_instance.to_dict() +# create an instance of AssignVaultsToLegalEntityRequest from a dict +assign_vaults_to_legal_entity_request_from_dict = AssignVaultsToLegalEntityRequest.from_dict(assign_vaults_to_legal_entity_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AssignVaultsToLegalEntityResponse.md b/docs/AssignVaultsToLegalEntityResponse.md new file mode 100644 index 00000000..eaedb69f --- /dev/null +++ b/docs/AssignVaultsToLegalEntityResponse.md @@ -0,0 +1,30 @@ +# AssignVaultsToLegalEntityResponse + +Response after assigning vault accounts to a legal entity + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**assigned_count** | **int** | Number of vault accounts successfully assigned | + +## Example + +```python +from fireblocks.models.assign_vaults_to_legal_entity_response import AssignVaultsToLegalEntityResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of AssignVaultsToLegalEntityResponse from a JSON string +assign_vaults_to_legal_entity_response_instance = AssignVaultsToLegalEntityResponse.from_json(json) +# print the JSON string representation of the object +print(AssignVaultsToLegalEntityResponse.to_json()) + +# convert the object into a dict +assign_vaults_to_legal_entity_response_dict = assign_vaults_to_legal_entity_response_instance.to_dict() +# create an instance of AssignVaultsToLegalEntityResponse from a dict +assign_vaults_to_legal_entity_response_from_dict = AssignVaultsToLegalEntityResponse.from_dict(assign_vaults_to_legal_entity_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/BaseProvider.md b/docs/BaseProvider.md index 52817c1f..f31aa1f6 100644 --- a/docs/BaseProvider.md +++ b/docs/BaseProvider.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **name** | **str** | Display name of the provider | **logo** | **str** | URL to the logo image of the provider | [optional] **account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | +**manifest** | [**Manifest**](Manifest.md) | | ## Example diff --git a/docs/ComplianceApi.md b/docs/ComplianceApi.md index 30149fae..56b97197 100644 --- a/docs/ComplianceApi.md +++ b/docs/ComplianceApi.md @@ -4,31 +4,1018 @@ All URIs are relative to *https://api.fireblocks.io/v1* Method | HTTP request | Description ------------- | ------------- | ------------- +[**add_address_registry_vault_opt_outs**](ComplianceApi.md#add_address_registry_vault_opt_outs) | **POST** /address_registry/vaults | Add vault accounts to the address registry opt-out list +[**assign_vaults_to_legal_entity**](ComplianceApi.md#assign_vaults_to_legal_entity) | **POST** /legal_entities/{legalEntityId}/vaults | Assign vault accounts to a legal entity +[**get_address_registry_tenant_participation_status**](ComplianceApi.md#get_address_registry_tenant_participation_status) | **GET** /address_registry/tenant | Get address registry participation status for the authenticated workspace +[**get_address_registry_vault_opt_out**](ComplianceApi.md#get_address_registry_vault_opt_out) | **GET** /address_registry/vaults/{vaultAccountId} | Get whether a vault account is opted out of the address registry [**get_aml_post_screening_policy**](ComplianceApi.md#get_aml_post_screening_policy) | **GET** /screening/aml/post_screening_policy | AML - View Post-Screening Policy [**get_aml_screening_policy**](ComplianceApi.md#get_aml_screening_policy) | **GET** /screening/aml/screening_policy | AML - View Screening Policy -[**get_legal_entity_by_address**](ComplianceApi.md#get_legal_entity_by_address) | **GET** /address_registry/legal_entity | Look up legal entity by address and asset +[**get_legal_entity**](ComplianceApi.md#get_legal_entity) | **GET** /legal_entities/{legalEntityId} | Get a legal entity +[**get_legal_entity_by_address**](ComplianceApi.md#get_legal_entity_by_address) | **GET** /address_registry/legal_entity | [Deprecated] Look up legal entity by address (query parameter) +[**get_legal_entity_for_address**](ComplianceApi.md#get_legal_entity_for_address) | **GET** /address_registry/legal_entities/{address} | Look up legal entity by blockchain address [**get_post_screening_policy**](ComplianceApi.md#get_post_screening_policy) | **GET** /screening/travel_rule/post_screening_policy | Travel Rule - View Post-Screening Policy [**get_screening_full_details**](ComplianceApi.md#get_screening_full_details) | **GET** /screening/transaction/{txId} | Provides all the compliance details for the given screened transaction. [**get_screening_policy**](ComplianceApi.md#get_screening_policy) | **GET** /screening/travel_rule/screening_policy | Travel Rule - View Screening Policy +[**list_address_registry_vault_opt_outs**](ComplianceApi.md#list_address_registry_vault_opt_outs) | **GET** /address_registry/vaults | List vault-level address registry opt-outs (paginated) +[**list_legal_entities**](ComplianceApi.md#list_legal_entities) | **GET** /legal_entities | List legal entities (Paginated) +[**list_vaults_for_legal_entity**](ComplianceApi.md#list_vaults_for_legal_entity) | **GET** /legal_entities/{legalEntityId}/vaults | List vault accounts for a legal entity (Paginated) +[**opt_in_address_registry_tenant**](ComplianceApi.md#opt_in_address_registry_tenant) | **POST** /address_registry/tenant | Opt the workspace in to the address registry +[**opt_out_address_registry_tenant**](ComplianceApi.md#opt_out_address_registry_tenant) | **DELETE** /address_registry/tenant | Opt the workspace out of the address registry +[**register_legal_entity**](ComplianceApi.md#register_legal_entity) | **POST** /legal_entities | Register a new legal entity +[**remove_address_registry_vault_opt_out**](ComplianceApi.md#remove_address_registry_vault_opt_out) | **DELETE** /address_registry/vaults/{vaultAccountId} | Remove a single vault account from the address registry opt-out list +[**remove_all_address_registry_vault_opt_outs**](ComplianceApi.md#remove_all_address_registry_vault_opt_outs) | **DELETE** /address_registry/vaults | Remove all vault-level address registry opt-outs for the workspace [**retry_rejected_transaction_bypass_screening_checks**](ComplianceApi.md#retry_rejected_transaction_bypass_screening_checks) | **POST** /screening/transaction/{txId}/bypass_screening_policy | Calling the \"Bypass Screening Policy\" API endpoint triggers a new transaction, with the API user as the initiator, bypassing the screening policy check [**set_aml_verdict**](ComplianceApi.md#set_aml_verdict) | **POST** /screening/aml/verdict/manual | Set AML Verdict for Manual Screening Verdict. [**update_aml_screening_configuration**](ComplianceApi.md#update_aml_screening_configuration) | **PUT** /screening/aml/policy_configuration | Update AML Configuration +[**update_legal_entity**](ComplianceApi.md#update_legal_entity) | **PUT** /legal_entities/{legalEntityId} | Update legal entity [**update_screening_configuration**](ComplianceApi.md#update_screening_configuration) | **PUT** /screening/configurations | Tenant - Screening Configuration [**update_travel_rule_config**](ComplianceApi.md#update_travel_rule_config) | **PUT** /screening/travel_rule/policy_configuration | Update Travel Rule Configuration +# **add_address_registry_vault_opt_outs** +> AddressRegistryAddVaultOptOutsResponse add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request, idempotency_key=idempotency_key) + +Add vault accounts to the address registry opt-out list + +Adds one or more vault account ids to the workspace opt-out list for the address registry. + +### Example + + +```python +from fireblocks.models.address_registry_add_vault_opt_outs_request import AddressRegistryAddVaultOptOutsRequest +from fireblocks.models.address_registry_add_vault_opt_outs_response import AddressRegistryAddVaultOptOutsResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + address_registry_add_vault_opt_outs_request = fireblocks.AddressRegistryAddVaultOptOutsRequest() # AddressRegistryAddVaultOptOutsRequest | + idempotency_key = 'idempotency_key_example' # str | 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) + + try: + # Add vault accounts to the address registry opt-out list + api_response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request, idempotency_key=idempotency_key).result() + print("The response of ComplianceApi->add_address_registry_vault_opt_outs:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->add_address_registry_vault_opt_outs: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **address_registry_add_vault_opt_outs_request** | [**AddressRegistryAddVaultOptOutsRequest**](AddressRegistryAddVaultOptOutsRequest.md)| | + **idempotency_key** | **str**| 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 + +[**AddressRegistryAddVaultOptOutsResponse**](AddressRegistryAddVaultOptOutsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Opt-outs recorded; response body includes `acceptedCount`. | * X-Request-ID -
| +**400** | Validation error (e.g. empty list or invalid vault ids) | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **assign_vaults_to_legal_entity** +> AssignVaultsToLegalEntityResponse assign_vaults_to_legal_entity(legal_entity_id, assign_vaults_to_legal_entity_request, idempotency_key=idempotency_key) + +Assign vault accounts to a legal entity + +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. + +### Example + + +```python +from fireblocks.models.assign_vaults_to_legal_entity_request import AssignVaultsToLegalEntityRequest +from fireblocks.models.assign_vaults_to_legal_entity_response import AssignVaultsToLegalEntityResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + legal_entity_id = 'legal_entity_id_example' # str | The unique ID of the legal entity registration + assign_vaults_to_legal_entity_request = fireblocks.AssignVaultsToLegalEntityRequest() # AssignVaultsToLegalEntityRequest | + idempotency_key = 'idempotency_key_example' # str | 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) + + try: + # Assign vault accounts to a legal entity + api_response = fireblocks.compliance.assign_vaults_to_legal_entity(legal_entity_id, assign_vaults_to_legal_entity_request, idempotency_key=idempotency_key).result() + print("The response of ComplianceApi->assign_vaults_to_legal_entity:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->assign_vaults_to_legal_entity: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **legal_entity_id** | **str**| The unique ID of the legal entity registration | + **assign_vaults_to_legal_entity_request** | [**AssignVaultsToLegalEntityRequest**](AssignVaultsToLegalEntityRequest.md)| | + **idempotency_key** | **str**| 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 + +[**AssignVaultsToLegalEntityResponse**](AssignVaultsToLegalEntityResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Vault accounts assigned successfully | * X-Request-ID -
| +**404** | Legal entity registration not found | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_address_registry_tenant_participation_status** +> AddressRegistryTenantRegistryResponse get_address_registry_tenant_participation_status() + +Get address registry participation status for the authenticated workspace + +Returns whether the workspace is `OPTED_IN` or `OPTED_OUT` of the address registry. + +### Example + + +```python +from fireblocks.models.address_registry_tenant_registry_response import AddressRegistryTenantRegistryResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + + try: + # Get address registry participation status for the authenticated workspace + api_response = fireblocks.compliance.get_address_registry_tenant_participation_status().result() + print("The response of ComplianceApi->get_address_registry_tenant_participation_status:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_address_registry_tenant_participation_status: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**AddressRegistryTenantRegistryResponse**](AddressRegistryTenantRegistryResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Participation status in the response body | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_address_registry_vault_opt_out** +> AddressRegistryGetVaultOptOutResponse get_address_registry_vault_opt_out(vault_account_id) + +Get whether a vault account is opted out of the address registry + +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. + +### Example + + +```python +from fireblocks.models.address_registry_get_vault_opt_out_response import AddressRegistryGetVaultOptOutResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + vault_account_id = 10001 # int | Vault account id (non-negative integer). + + try: + # Get whether a vault account is opted out of the address registry + api_response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id).result() + print("The response of ComplianceApi->get_address_registry_vault_opt_out:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_address_registry_vault_opt_out: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **vault_account_id** | **int**| Vault account id (non-negative integer). | + +### Return type + +[**AddressRegistryGetVaultOptOutResponse**](AddressRegistryGetVaultOptOutResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Current opt-out flag for the vault | * X-Request-ID -
| +**400** | Invalid path parameter (e.g. negative or out-of-range vault account id) | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **get_aml_post_screening_policy** > ScreeningPolicyResponse get_aml_post_screening_policy() -AML - View Post-Screening Policy +AML - View Post-Screening Policy + +Get the post-screening policy for AML. + +### Example + + +```python +from fireblocks.models.screening_policy_response import ScreeningPolicyResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + + try: + # AML - View Post-Screening Policy + api_response = fireblocks.compliance.get_aml_post_screening_policy().result() + print("The response of ComplianceApi->get_aml_post_screening_policy:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_aml_post_screening_policy: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ScreeningPolicyResponse**](ScreeningPolicyResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Post-screening policy retrieved successfully. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_aml_screening_policy** +> ScreeningProviderRulesConfigurationResponse get_aml_screening_policy() + +AML - View Screening Policy + +Get the screening policy for AML. + +### Example + + +```python +from fireblocks.models.screening_provider_rules_configuration_response import ScreeningProviderRulesConfigurationResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + + try: + # AML - View Screening Policy + api_response = fireblocks.compliance.get_aml_screening_policy().result() + print("The response of ComplianceApi->get_aml_screening_policy:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_aml_screening_policy: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ScreeningProviderRulesConfigurationResponse**](ScreeningProviderRulesConfigurationResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Screening policy retrieved successfully. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_legal_entity** +> LegalEntityRegistration get_legal_entity(legal_entity_id) + +Get a legal entity + +Returns details of a specific legal entity registration, including GLEIF data when available. +
Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + +### Example + + +```python +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + legal_entity_id = 'legal_entity_id_example' # str | The unique ID of the legal entity registration + + try: + # Get a legal entity + api_response = fireblocks.compliance.get_legal_entity(legal_entity_id).result() + print("The response of ComplianceApi->get_legal_entity:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_legal_entity: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **legal_entity_id** | **str**| The unique ID of the legal entity registration | + +### Return type + +[**LegalEntityRegistration**](LegalEntityRegistration.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Legal entity registration details | * X-Request-ID -
| +**404** | Legal entity registration not found | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_legal_entity_by_address** +> AddressRegistryLegalEntityLegacy get_legal_entity_by_address(address, asset=asset) + +[Deprecated] Look up legal entity by address (query parameter) + +**Deprecated** — use `GET /v1/address_registry/legal_entities/{address}` instead. +Here `address` is a **query** parameter; the replacement uses a path segment. +The response includes only `companyName`, `countryCode`, and `companyId`. The replacement returns additional fields documented on that operation. +Optional **`asset`** is supported here only (not on the replacement path). + +### Example + + +```python +from fireblocks.models.address_registry_legal_entity_legacy import AddressRegistryLegalEntityLegacy +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + address = '0x742d35cc6634c0532925a3b844bc9e7595f0beb0' # str | Blockchain address to look up + asset = 'ETH' # str | Optional asset identifier (this deprecated operation only). (optional) + + try: + # [Deprecated] Look up legal entity by address (query parameter) + api_response = fireblocks.compliance.get_legal_entity_by_address(address, asset=asset).result() + print("The response of ComplianceApi->get_legal_entity_by_address:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_legal_entity_by_address: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **address** | **str**| Blockchain address to look up | + **asset** | **str**| Optional asset identifier (this deprecated operation only). | [optional] + +### Return type + +[**AddressRegistryLegalEntityLegacy**](AddressRegistryLegalEntityLegacy.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Legal entity found | * X-Request-ID -
| +**400** | Bad request – missing or invalid address | * X-Request-ID -
| +**403** | Forbidden – the authenticated workspace is not opted in to the address registry (error code 2140) | * X-Request-ID -
| +**404** | Not found (error code 2142) — unresolved address, no legal entity for a resolved address, or the same not-found outcome in other cases. | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_legal_entity_for_address** +> AddressRegistryLegalEntity get_legal_entity_for_address(address) + +Look up legal entity by blockchain address + +Returns legal entity information for the given blockchain address. URL-encode `{address}` when required. +Prefer this operation over the deprecated `GET /v1/address_registry/legal_entity?address=…`, which returns only `companyName`, `countryCode`, and `companyId`. This operation adds verification status, LEI, Travel Rule providers, and contact email (see response properties). + +### Example + + +```python +from fireblocks.models.address_registry_legal_entity import AddressRegistryLegalEntity +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + address = '0x742d35cc6634c0532925a3b844bc9e7595f0beb0' # str | Blockchain address to look up + + try: + # Look up legal entity by blockchain address + api_response = fireblocks.compliance.get_legal_entity_for_address(address).result() + print("The response of ComplianceApi->get_legal_entity_for_address:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_legal_entity_for_address: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **address** | **str**| Blockchain address to look up | + +### Return type + +[**AddressRegistryLegalEntity**](AddressRegistryLegalEntity.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Legal entity found | * X-Request-ID -
| +**400** | Bad request – missing or invalid address | * X-Request-ID -
| +**403** | Forbidden – the authenticated workspace is not opted in to the address registry (error code 2140) | * X-Request-ID -
| +**404** | Not found (error code 2142) — unresolved address, no legal entity for a resolved address, or the same not-found outcome in other cases. | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_post_screening_policy** +> ScreeningPolicyResponse get_post_screening_policy() + +Travel Rule - View Post-Screening Policy + +Get the post-screening policy for Travel Rule. + +### Example + + +```python +from fireblocks.models.screening_policy_response import ScreeningPolicyResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + + try: + # Travel Rule - View Post-Screening Policy + api_response = fireblocks.compliance.get_post_screening_policy().result() + print("The response of ComplianceApi->get_post_screening_policy:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_post_screening_policy: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ScreeningPolicyResponse**](ScreeningPolicyResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Post-screening policy retrieved successfully. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_screening_full_details** +> ComplianceResultFullPayload get_screening_full_details(tx_id) + +Provides all the compliance details for the given screened transaction. + +Provides all the compliance details for the given screened transaction. + +### Example + + +```python +from fireblocks.models.compliance_result_full_payload import ComplianceResultFullPayload +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + tx_id = '550e8400-e29b-41d4-a716-446655440000' # str | Fireblocks transaction ID of the screened transaction + + try: + # Provides all the compliance details for the given screened transaction. + api_response = fireblocks.compliance.get_screening_full_details(tx_id).result() + print("The response of ComplianceApi->get_screening_full_details:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_screening_full_details: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **tx_id** | **str**| Fireblocks transaction ID of the screened transaction | + +### Return type + +[**ComplianceResultFullPayload**](ComplianceResultFullPayload.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | A compliance object | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_screening_policy** +> ScreeningProviderRulesConfigurationResponse get_screening_policy() + +Travel Rule - View Screening Policy + +Get the screening policy for Travel Rule. + +### Example + + +```python +from fireblocks.models.screening_provider_rules_configuration_response import ScreeningProviderRulesConfigurationResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + + try: + # Travel Rule - View Screening Policy + api_response = fireblocks.compliance.get_screening_policy().result() + print("The response of ComplianceApi->get_screening_policy:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->get_screening_policy: %s\n" % e) +``` + + + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**ScreeningProviderRulesConfigurationResponse**](ScreeningProviderRulesConfigurationResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Screening policy retrieved successfully. | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_address_registry_vault_opt_outs** +> AddressRegistryListVaultOptOutsResponse list_address_registry_vault_opt_outs(page_cursor=page_cursor, page_size=page_size, order=order) + +List vault-level address registry opt-outs (paginated) + +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. + +### Example + + +```python +from fireblocks.models.address_registry_list_vault_opt_outs_response import AddressRegistryListVaultOptOutsResponse +from fireblocks.models.address_registry_vault_list_order import AddressRegistryVaultListOrder +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() -Get the post-screening policy for AML. +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + page_cursor = 'eyJvZmZzZXQiOjAsInBhZ2VTaXplIjoxMH0' # str | Opaque cursor from a previous response (`next` or `prev`). Omit for the first page. (optional) + page_size = 50 # int | Page size. Default **50** if omitted; must be between **1** and **100**. (optional) (default to 50) + order = VAULT_OPT_OUT_LIST_ORDER_ASC # AddressRegistryVaultListOrder | Sort direction by vault account id. Omit for ascending; use the enum value for descending. (optional) (default to VAULT_OPT_OUT_LIST_ORDER_ASC) + + try: + # List vault-level address registry opt-outs (paginated) + api_response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor=page_cursor, page_size=page_size, order=order).result() + print("The response of ComplianceApi->list_address_registry_vault_opt_outs:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->list_address_registry_vault_opt_outs: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **page_cursor** | **str**| Opaque cursor from a previous response (`next` or `prev`). Omit for the first page. | [optional] + **page_size** | **int**| Page size. Default **50** if omitted; must be between **1** and **100**. | [optional] [default to 50] + **order** | [**AddressRegistryVaultListOrder**](.md)| Sort direction by vault account id. Omit for ascending; use the enum value for descending. | [optional] [default to VAULT_OPT_OUT_LIST_ORDER_ASC] + +### Return type + +[**AddressRegistryListVaultOptOutsResponse**](AddressRegistryListVaultOptOutsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Page of vault opt-out rows | * X-Request-ID -
| +**400** | Validation error (e.g. invalid or malformed pageCursor) | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **list_legal_entities** +> ListLegalEntitiesResponse list_legal_entities(vault_account_id=vault_account_id, page_cursor=page_cursor, page_size=page_size, sort_by=sort_by, order=order) + +List legal entities (Paginated) + +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. ### Example ```python -from fireblocks.models.screening_policy_response import ScreeningPolicyResponse +from fireblocks.models.list_legal_entities_response import ListLegalEntitiesResponse from fireblocks.client import Fireblocks from fireblocks.client_configuration import ClientConfiguration from fireblocks.exceptions import ApiException @@ -49,25 +1036,37 @@ configuration = ClientConfiguration( # Enter a context with an instance of the API client with Fireblocks(configuration) as fireblocks: + vault_account_id = 'vault_account_id_example' # str | The ID of the vault account. When provided, returns the legal entity associated with that vault account and pagination parameters are ignored. (optional) + page_cursor = 'page_cursor_example' # str | Cursor string returned in `next` or `prev` of a previous response. Ignored when `vaultAccountId` is provided. (optional) + page_size = 50 # int | Maximum number of registrations to return. Ignored when `vaultAccountId` is provided. (optional) (default to 50) + sort_by = 'sort_by_example' # str | Field to sort results by. Ignored when `vaultAccountId` is provided. (optional) + order = DESC # str | Sort order. Ignored when `vaultAccountId` is provided. (optional) (default to DESC) try: - # AML - View Post-Screening Policy - api_response = fireblocks.compliance.get_aml_post_screening_policy().result() - print("The response of ComplianceApi->get_aml_post_screening_policy:\n") + # List legal entities (Paginated) + api_response = fireblocks.compliance.list_legal_entities(vault_account_id=vault_account_id, page_cursor=page_cursor, page_size=page_size, sort_by=sort_by, order=order).result() + print("The response of ComplianceApi->list_legal_entities:\n") pprint(api_response) except Exception as e: - print("Exception when calling ComplianceApi->get_aml_post_screening_policy: %s\n" % e) + print("Exception when calling ComplianceApi->list_legal_entities: %s\n" % e) ``` ### Parameters -This endpoint does not need any parameter. + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **vault_account_id** | **str**| The ID of the vault account. When provided, returns the legal entity associated with that vault account and pagination parameters are ignored. | [optional] + **page_cursor** | **str**| Cursor string returned in `next` or `prev` of a previous response. Ignored when `vaultAccountId` is provided. | [optional] + **page_size** | **int**| Maximum number of registrations to return. Ignored when `vaultAccountId` is provided. | [optional] [default to 50] + **sort_by** | **str**| Field to sort results by. Ignored when `vaultAccountId` is provided. | [optional] + **order** | **str**| Sort order. Ignored when `vaultAccountId` is provided. | [optional] [default to DESC] ### Return type -[**ScreeningPolicyResponse**](ScreeningPolicyResponse.md) +[**ListLegalEntitiesResponse**](ListLegalEntitiesResponse.md) ### Authorization @@ -82,22 +1081,24 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Post-screening policy retrieved successfully. | - | +**200** | A paginated list of legal entity registrations. When `vaultAccountId` is provided, `data` contains at most one item. | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_aml_screening_policy** -> ScreeningProviderRulesConfigurationResponse get_aml_screening_policy() +# **list_vaults_for_legal_entity** +> ListVaultsForRegistrationResponse list_vaults_for_legal_entity(legal_entity_id, page_cursor=page_cursor, page_size=page_size) -AML - View Screening Policy +List vault accounts for a legal entity (Paginated) -Get the screening policy for AML. +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. ### Example ```python -from fireblocks.models.screening_provider_rules_configuration_response import ScreeningProviderRulesConfigurationResponse +from fireblocks.models.list_vaults_for_registration_response import ListVaultsForRegistrationResponse from fireblocks.client import Fireblocks from fireblocks.client_configuration import ClientConfiguration from fireblocks.exceptions import ApiException @@ -118,25 +1119,33 @@ configuration = ClientConfiguration( # Enter a context with an instance of the API client with Fireblocks(configuration) as fireblocks: + legal_entity_id = 'legal_entity_id_example' # str | The unique ID of the legal entity registration + page_cursor = 'page_cursor_example' # str | Cursor string returned in `next` or `prev` of a previous response (optional) + page_size = 50 # int | Maximum number of registrations to return (optional) (default to 50) try: - # AML - View Screening Policy - api_response = fireblocks.compliance.get_aml_screening_policy().result() - print("The response of ComplianceApi->get_aml_screening_policy:\n") + # List vault accounts for a legal entity (Paginated) + api_response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id, page_cursor=page_cursor, page_size=page_size).result() + print("The response of ComplianceApi->list_vaults_for_legal_entity:\n") pprint(api_response) except Exception as e: - print("Exception when calling ComplianceApi->get_aml_screening_policy: %s\n" % e) + print("Exception when calling ComplianceApi->list_vaults_for_legal_entity: %s\n" % e) ``` ### Parameters -This endpoint does not need any parameter. + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **legal_entity_id** | **str**| The unique ID of the legal entity registration | + **page_cursor** | **str**| Cursor string returned in `next` or `prev` of a previous response | [optional] + **page_size** | **int**| Maximum number of registrations to return | [optional] [default to 50] ### Return type -[**ScreeningProviderRulesConfigurationResponse**](ScreeningProviderRulesConfigurationResponse.md) +[**ListVaultsForRegistrationResponse**](ListVaultsForRegistrationResponse.md) ### Authorization @@ -151,22 +1160,24 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Screening policy retrieved successfully. | - | +**200** | Paginated list of vault account IDs assigned to the legal entity | * X-Request-ID -
| +**404** | Legal entity registration not found | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_legal_entity_by_address** -> AddressRegistryLegalEntity get_legal_entity_by_address(address, asset=asset) +# **opt_in_address_registry_tenant** +> AddressRegistryTenantRegistryResponse opt_in_address_registry_tenant(idempotency_key=idempotency_key) -Look up legal entity by address and asset +Opt the workspace in to the address registry -Returns the legal entity (company name, jurisdiction, companyId) for the given blockchain address and optional asset. Both the requester and the owner of the address must be opted in to the address registry. +Opts the workspace in. No request body. Response uses the same JSON shape as GET; status is OPTED_IN. ### Example ```python -from fireblocks.models.address_registry_legal_entity import AddressRegistryLegalEntity +from fireblocks.models.address_registry_tenant_registry_response import AddressRegistryTenantRegistryResponse from fireblocks.client import Fireblocks from fireblocks.client_configuration import ClientConfiguration from fireblocks.exceptions import ApiException @@ -187,16 +1198,15 @@ configuration = ClientConfiguration( # Enter a context with an instance of the API client with Fireblocks(configuration) as fireblocks: - address = '0x742d35cc6634c0532925a3b844bc9e7595f0beb0' # str | Blockchain address to look up - asset = 'ETH' # str | Asset ID (e.g. ETH, BTC). Optional. (optional) + idempotency_key = 'idempotency_key_example' # str | 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) try: - # Look up legal entity by address and asset - api_response = fireblocks.compliance.get_legal_entity_by_address(address, asset=asset).result() - print("The response of ComplianceApi->get_legal_entity_by_address:\n") + # Opt the workspace in to the address registry + api_response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key=idempotency_key).result() + print("The response of ComplianceApi->opt_in_address_registry_tenant:\n") pprint(api_response) except Exception as e: - print("Exception when calling ComplianceApi->get_legal_entity_by_address: %s\n" % e) + print("Exception when calling ComplianceApi->opt_in_address_registry_tenant: %s\n" % e) ``` @@ -206,12 +1216,11 @@ with Fireblocks(configuration) as fireblocks: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **address** | **str**| Blockchain address to look up | - **asset** | **str**| Asset ID (e.g. ETH, BTC). Optional. | [optional] + **idempotency_key** | **str**| 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 -[**AddressRegistryLegalEntity**](AddressRegistryLegalEntity.md) +[**AddressRegistryTenantRegistryResponse**](AddressRegistryTenantRegistryResponse.md) ### Authorization @@ -226,26 +1235,23 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Legal entity found | * X-Request-ID -
| -**400** | Bad request – missing or invalid address or asset | * X-Request-ID -
| -**403** | Forbidden – requester or address owner not opted in to the address registry (error codes 2140, 2141) | * X-Request-ID -
| -**404** | Address not resolved or entity not found (error code 2142) | * X-Request-ID -
| +**200** | Success; response body includes status OPTED_IN | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_post_screening_policy** -> ScreeningPolicyResponse get_post_screening_policy() +# **opt_out_address_registry_tenant** +> AddressRegistryTenantRegistryResponse opt_out_address_registry_tenant() -Travel Rule - View Post-Screening Policy +Opt the workspace out of the address registry -Get the post-screening policy for Travel Rule. +Opts the workspace out. No request body. Response uses the same JSON shape as GET; status is OPTED_OUT. ### Example ```python -from fireblocks.models.screening_policy_response import ScreeningPolicyResponse +from fireblocks.models.address_registry_tenant_registry_response import AddressRegistryTenantRegistryResponse from fireblocks.client import Fireblocks from fireblocks.client_configuration import ClientConfiguration from fireblocks.exceptions import ApiException @@ -268,12 +1274,12 @@ configuration = ClientConfiguration( with Fireblocks(configuration) as fireblocks: try: - # Travel Rule - View Post-Screening Policy - api_response = fireblocks.compliance.get_post_screening_policy().result() - print("The response of ComplianceApi->get_post_screening_policy:\n") + # Opt the workspace out of the address registry + api_response = fireblocks.compliance.opt_out_address_registry_tenant().result() + print("The response of ComplianceApi->opt_out_address_registry_tenant:\n") pprint(api_response) except Exception as e: - print("Exception when calling ComplianceApi->get_post_screening_policy: %s\n" % e) + print("Exception when calling ComplianceApi->opt_out_address_registry_tenant: %s\n" % e) ``` @@ -284,7 +1290,7 @@ This endpoint does not need any parameter. ### Return type -[**ScreeningPolicyResponse**](ScreeningPolicyResponse.md) +[**AddressRegistryTenantRegistryResponse**](AddressRegistryTenantRegistryResponse.md) ### Authorization @@ -299,22 +1305,25 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Post-screening policy retrieved successfully. | - | +**200** | Success; response body includes status OPTED_OUT | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_screening_full_details** -> ComplianceResultFullPayload get_screening_full_details(tx_id) +# **register_legal_entity** +> LegalEntityRegistration register_legal_entity(register_legal_entity_request, idempotency_key=idempotency_key) -Provides all the compliance details for the given screened transaction. +Register a new legal entity -Provides all the compliance details for the given screened transaction. +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. ### Example ```python -from fireblocks.models.compliance_result_full_payload import ComplianceResultFullPayload +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest from fireblocks.client import Fireblocks from fireblocks.client_configuration import ClientConfiguration from fireblocks.exceptions import ApiException @@ -335,15 +1344,16 @@ configuration = ClientConfiguration( # Enter a context with an instance of the API client with Fireblocks(configuration) as fireblocks: - tx_id = '550e8400-e29b-41d4-a716-446655440000' # str | Fireblocks transaction ID of the screened transaction + register_legal_entity_request = fireblocks.RegisterLegalEntityRequest() # RegisterLegalEntityRequest | + idempotency_key = 'idempotency_key_example' # str | 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) try: - # Provides all the compliance details for the given screened transaction. - api_response = fireblocks.compliance.get_screening_full_details(tx_id).result() - print("The response of ComplianceApi->get_screening_full_details:\n") + # Register a new legal entity + api_response = fireblocks.compliance.register_legal_entity(register_legal_entity_request, idempotency_key=idempotency_key).result() + print("The response of ComplianceApi->register_legal_entity:\n") pprint(api_response) except Exception as e: - print("Exception when calling ComplianceApi->get_screening_full_details: %s\n" % e) + print("Exception when calling ComplianceApi->register_legal_entity: %s\n" % e) ``` @@ -353,11 +1363,90 @@ with Fireblocks(configuration) as fireblocks: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **tx_id** | **str**| Fireblocks transaction ID of the screened transaction | + **register_legal_entity_request** | [**RegisterLegalEntityRequest**](RegisterLegalEntityRequest.md)| | + **idempotency_key** | **str**| 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 -[**ComplianceResultFullPayload**](ComplianceResultFullPayload.md) +[**LegalEntityRegistration**](LegalEntityRegistration.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**201** | Legal entity registered successfully | * X-Request-ID -
| +**400** | Invalid LEI or request parameters | * X-Request-ID -
| +**404** | LEI not found in the GLEIF registry | * X-Request-ID -
| +**409** | A legal entity with this LEI is already registered for the workspace | * X-Request-ID -
| +**500** | Internal Server Error | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **remove_address_registry_vault_opt_out** +> AddressRegistryRemoveVaultOptOutResponse remove_address_registry_vault_opt_out(vault_account_id) + +Remove a single vault account from the address registry opt-out list + +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`. + +### Example + + +```python +from fireblocks.models.address_registry_remove_vault_opt_out_response import AddressRegistryRemoveVaultOptOutResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + vault_account_id = 10001 # int | Vault account id (non-negative integer). + + try: + # Remove a single vault account from the address registry opt-out list + api_response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id).result() + print("The response of ComplianceApi->remove_address_registry_vault_opt_out:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->remove_address_registry_vault_opt_out: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **vault_account_id** | **int**| Vault account id (non-negative integer). | + +### Return type + +[**AddressRegistryRemoveVaultOptOutResponse**](AddressRegistryRemoveVaultOptOutResponse.md) ### Authorization @@ -372,23 +1461,24 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | A compliance object | * X-Request-ID -
| +**200** | Success; `optedOut` is false (list entry removed if it existed) | * X-Request-ID -
| +**400** | Invalid path parameter (e.g. negative or out-of-range vault account id) | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_screening_policy** -> ScreeningProviderRulesConfigurationResponse get_screening_policy() +# **remove_all_address_registry_vault_opt_outs** +> AddressRegistryRemoveAllVaultOptOutsResponse remove_all_address_registry_vault_opt_outs() -Travel Rule - View Screening Policy +Remove all vault-level address registry opt-outs for the workspace -Get the screening policy for Travel Rule. +Removes all vault accounts from the workspace opt-out list. ### Example ```python -from fireblocks.models.screening_provider_rules_configuration_response import ScreeningProviderRulesConfigurationResponse +from fireblocks.models.address_registry_remove_all_vault_opt_outs_response import AddressRegistryRemoveAllVaultOptOutsResponse from fireblocks.client import Fireblocks from fireblocks.client_configuration import ClientConfiguration from fireblocks.exceptions import ApiException @@ -411,12 +1501,12 @@ configuration = ClientConfiguration( with Fireblocks(configuration) as fireblocks: try: - # Travel Rule - View Screening Policy - api_response = fireblocks.compliance.get_screening_policy().result() - print("The response of ComplianceApi->get_screening_policy:\n") + # Remove all vault-level address registry opt-outs for the workspace + api_response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs().result() + print("The response of ComplianceApi->remove_all_address_registry_vault_opt_outs:\n") pprint(api_response) except Exception as e: - print("Exception when calling ComplianceApi->get_screening_policy: %s\n" % e) + print("Exception when calling ComplianceApi->remove_all_address_registry_vault_opt_outs: %s\n" % e) ``` @@ -427,7 +1517,7 @@ This endpoint does not need any parameter. ### Return type -[**ScreeningProviderRulesConfigurationResponse**](ScreeningProviderRulesConfigurationResponse.md) +[**AddressRegistryRemoveAllVaultOptOutsResponse**](AddressRegistryRemoveAllVaultOptOutsResponse.md) ### Authorization @@ -442,7 +1532,8 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Screening policy retrieved successfully. | - | +**200** | All opt-outs cleared; response body includes `removedCount`. | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -675,6 +1766,88 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **update_legal_entity** +> LegalEntityRegistration update_legal_entity(legal_entity_id, update_legal_entity_request, idempotency_key=idempotency_key) + +Update legal entity + +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. + +### Example + + +```python +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from fireblocks.models.update_legal_entity_request import UpdateLegalEntityRequest +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + legal_entity_id = 'legal_entity_id_example' # str | The unique ID of the legal entity registration + update_legal_entity_request = fireblocks.UpdateLegalEntityRequest() # UpdateLegalEntityRequest | + idempotency_key = 'idempotency_key_example' # str | 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) + + try: + # Update legal entity + api_response = fireblocks.compliance.update_legal_entity(legal_entity_id, update_legal_entity_request, idempotency_key=idempotency_key).result() + print("The response of ComplianceApi->update_legal_entity:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling ComplianceApi->update_legal_entity: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **legal_entity_id** | **str**| The unique ID of the legal entity registration | + **update_legal_entity_request** | [**UpdateLegalEntityRequest**](UpdateLegalEntityRequest.md)| | + **idempotency_key** | **str**| 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 + +[**LegalEntityRegistration**](LegalEntityRegistration.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Updated legal entity registration | * X-Request-ID -
| +**400** | Registration is not in APPROVED status | * X-Request-ID -
| +**404** | Legal entity registration not found | * X-Request-ID -
| +**0** | Error Response | * X-Request-ID -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **update_screening_configuration** > ScreeningUpdateConfigurations update_screening_configuration(screening_update_configurations, idempotency_key=idempotency_key) diff --git a/docs/ComplianceScreeningResult.md b/docs/ComplianceScreeningResult.md index 9f1ba3de..c28f2d1b 100644 --- a/docs/ComplianceScreeningResult.md +++ b/docs/ComplianceScreeningResult.md @@ -6,26 +6,26 @@ The result of the AML/Travel Rule screening. This unified schema contains all fi Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**provider** | **str** | The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, SCORECHAIN, MERKLE_SCIENCE, etc. For Travel Rule: NOTABENE, SYGNA, or any TRLink provider name | [optional] +**provider** | **str** | The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, etc. For Travel Rule: NOTABENE, SUMSUB, GTR, or any TRLink provider name. | [optional] **payload** | **object** | The raw payload of the screening result from the provider. The payload is a JSON object that contains the screening result. The payload structure is different for each screening provider. This field contains the complete, unmodified response from the screening service. | [optional] **timestamp** | **float** | Unix timestamp in milliseconds when the screening result was generated | [optional] **screening_status** | **str** | Current status of the screening process | [optional] -**bypass_reason** | **str** | Reason for bypassing the screening, if applicable. For AML: SANCTIONS_SCREENING_BYPASS, SANCTIONS_RECIPIENT_BYPASS, etc. For Travel Rule: BELOW_THRESHOLD, NO_TRM_AVAILABLE, etc. | [optional] +**bypass_reason** | **str** | Reason for bypassing the screening, if applicable. For AML: UNSUPPORTED_ASSET, PASSED_BY_POLICY. For Travel Rule: UNSUPPORTED_ASSET, NO_TRAVEL_RULE_MESSAGE, TRANSACTION_ZERO_AMOUNT. | [optional] **status** | [**AmlStatusEnum**](AmlStatusEnum.md) | | [optional] **prev_status** | [**AmlStatusEnum**](AmlStatusEnum.md) | | [optional] -**prev_bypass_reason** | **str** | Previous bypass reason before the current bypass reason change | [optional] +**prev_bypass_reason** | **str** | Deprecated: This field is not currently returned in the API response. Previous bypass reason before the current bypass reason change. | [optional] **verdict** | [**ScreeningVerdictEnum**](ScreeningVerdictEnum.md) | | [optional] -**risk** | [**ScreeningRiskLevelEnum**](ScreeningRiskLevelEnum.md) | | [optional] -**extended_risk** | [**ScreeningRiskLevelEnum**](ScreeningRiskLevelEnum.md) | | [optional] +**risk** | **str** | Risk level assessment for screening results. Values vary by provider and are not managed by this service. Known values by provider: - Chainalysis: severeRisk, highRisk, mediumRisk, lowRisk, noRiskInfo - Elliptic: noRiskDetected Legacy values (SCREAMING_SNAKE_CASE, may appear in old transactions): VERY_HIGH, SEVERE, HIGH, MEDIUM, LOW, NO_RISK_INFO, UNKNOWN | [optional] +**extended_risk** | **str** | Deprecated: This field is not currently returned in the API response. Use risk instead. | [optional] **external_id** | **str** | External identifier for the screening (provider-specific) | [optional] **customer_ref_id** | **str** | Customer-provided reference identifier for tracking | [optional] -**ref_id** | **str** | Internal reference identifier | [optional] +**ref_id** | **str** | Deprecated: This field is not currently returned in the API response. Internal reference identifier. | [optional] **category** | **str** | Risk category classification. Examples: EXCHANGE, GAMBLING, MIXER, DARKNET_SERVICE, SANCTIONED_ENTITY | [optional] **category_id** | **float** | Numeric identifier for the risk category | [optional] **dest_address** | **str** | The destination blockchain address associated with the screening | [optional] **dest_tag** | **str** | Destination tag or memo (for chains that support it like XRP, XLM) | [optional] -**dest_record_id** | **str** | The destination record identifier used by the screening provider | [optional] -**address_resolution_signature** | **str** | Cryptographic signature for address resolution verification | [optional] +**dest_record_id** | **str** | Deprecated: This field is not currently returned in the API response. The destination record identifier used by the screening provider. | [optional] +**address_resolution_signature** | **str** | Deprecated: This field is not currently returned in the API response. Cryptographic signature for address resolution verification. | [optional] **aml_result** | [**AmlResult**](AmlResult.md) | | [optional] **result** | [**TravelRuleResult**](TravelRuleResult.md) | | [optional] **details_message** | **str** | Additional human-readable details or message about the screening result | [optional] @@ -36,6 +36,7 @@ Name | Type | Description | Notes **customer_integration_id** | **str** | Customer integration identifier used by Travel Rule providers | [optional] **customer_short_name** | **str** | Customer short name registered with Travel Rule providers | [optional] **travel_rule_message_id** | **str** | Travel rule message identifier for linking and tracking across providers | [optional] +**provider_response** | **Dict[str, object]** | Complete response from the screening provider. This is a dynamic object that varies significantly between different providers (Chainalysis, Elliptic, NOTABENE, etc.). Each provider has their own proprietary response format and schema. For AML providers: Contains risk scores, alerts, entity information For Travel Rule providers: Contains VASP information, PII data, protocol-specific fields The structure is provider-dependent and cannot be standardized as each vendor implements their own proprietary data models and response formats. | [optional] ## Example diff --git a/docs/ComplianceScreeningResultFullPayload.md b/docs/ComplianceScreeningResultFullPayload.md index 0b6b97f3..33286561 100644 --- a/docs/ComplianceScreeningResultFullPayload.md +++ b/docs/ComplianceScreeningResultFullPayload.md @@ -6,26 +6,26 @@ The result of the AML/Travel Rule screening. This unified schema contains all fi Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**provider** | **str** | The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, etc. For Travel Rule: NOTABENE, SUMSUB, or any TRLink provider name | [optional] +**provider** | **str** | The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, etc. For Travel Rule: NOTABENE, SUMSUB, GTR, or any TRLink provider name | [optional] **payload** | **object** | The raw payload of the screening result from the provider. The payload is a JSON object that contains the screening result. The payload structure is different for each screening provider. This field contains the complete, unmodified response from the screening service. | [optional] **timestamp** | **float** | Unix timestamp in milliseconds when the screening result was generated | [optional] **screening_status** | **str** | Current status of the screening process | [optional] -**bypass_reason** | **str** | Reason for bypassing the screening, if applicable. For AML: SANCTIONS_SCREENING_BYPASS, SANCTIONS_RECIPIENT_BYPASS, etc. For Travel Rule: BELOW_THRESHOLD, NO_TRM_AVAILABLE, etc. | [optional] +**bypass_reason** | **str** | Reason for bypassing the screening, if applicable. For AML: UNSUPPORTED_ASSET, PASSED_BY_POLICY. For Travel Rule: UNSUPPORTED_ASSET, NO_TRAVEL_RULE_MESSAGE, TRANSACTION_ZERO_AMOUNT. | [optional] **status** | [**AmlStatusEnum**](AmlStatusEnum.md) | | [optional] **prev_status** | [**AmlStatusEnum**](AmlStatusEnum.md) | | [optional] -**prev_bypass_reason** | **str** | Previous bypass reason before the current bypass reason change | [optional] +**prev_bypass_reason** | **str** | Deprecated: This field is not currently returned in the API response. Previous bypass reason before the current bypass reason change. | [optional] **verdict** | [**ScreeningVerdictEnum**](ScreeningVerdictEnum.md) | | [optional] -**risk** | [**ScreeningRiskLevelEnum**](ScreeningRiskLevelEnum.md) | | [optional] -**extended_risk** | [**ScreeningRiskLevelEnum**](ScreeningRiskLevelEnum.md) | | [optional] +**risk** | **str** | Risk level assessment for screening results. Values vary by provider and are not managed by this service. Known values by provider: - Chainalysis: severeRisk, highRisk, mediumRisk, lowRisk, noRiskInfo - Elliptic: noRiskDetected Legacy values (SCREAMING_SNAKE_CASE, may appear in old transactions): VERY_HIGH, SEVERE, HIGH, MEDIUM, LOW, NO_RISK_INFO, UNKNOWN | [optional] +**extended_risk** | **str** | Deprecated: This field is not currently returned in the API response. Use risk instead. | [optional] **external_id** | **str** | External identifier for the screening (provider-specific) | [optional] **customer_ref_id** | **str** | Customer-provided reference identifier for tracking | [optional] -**ref_id** | **str** | Internal reference identifier | [optional] +**ref_id** | **str** | Deprecated: This field is not currently returned in the API response. Internal reference identifier. | [optional] **category** | **str** | Risk category classification. Examples: EXCHANGE, GAMBLING, MIXER, DARKNET_SERVICE, SANCTIONED_ENTITY | [optional] **category_id** | **float** | Numeric identifier for the risk category | [optional] **dest_address** | **str** | The destination blockchain address associated with the screening | [optional] **dest_tag** | **str** | Destination tag or memo (for chains that support it like XRP, XLM) | [optional] -**dest_record_id** | **str** | The destination record identifier used by the screening provider | [optional] -**address_resolution_signature** | **str** | Cryptographic signature for address resolution verification | [optional] +**dest_record_id** | **str** | Deprecated: This field is not currently returned in the API response. The destination record identifier used by the screening provider. | [optional] +**address_resolution_signature** | **str** | Deprecated: This field is not currently returned in the API response. Cryptographic signature for address resolution verification. | [optional] **aml_result** | [**ScreeningAmlResult**](ScreeningAmlResult.md) | | [optional] **result** | [**ScreeningTravelRuleResult**](ScreeningTravelRuleResult.md) | | [optional] **details_message** | **str** | Additional human-readable details or message about the screening result | [optional] @@ -36,6 +36,7 @@ Name | Type | Description | Notes **customer_integration_id** | **str** | Customer integration identifier used by Travel Rule providers | [optional] **customer_short_name** | **str** | Customer short name registered with Travel Rule providers | [optional] **travel_rule_message_id** | **str** | Travel rule message identifier for linking and tracking across providers | [optional] +**provider_response** | **Dict[str, object]** | Complete response from the screening provider. This is a dynamic object that varies significantly between different providers (Chainalysis, Elliptic, NOTABENE, etc.). Each provider has their own proprietary response format and schema. For AML providers: Contains risk scores, alerts, entity information For Travel Rule providers: Contains VASP information, PII data, protocol-specific fields The structure is provider-dependent and cannot be standardized as each vendor implements their own proprietary data models and response formats. | [optional] ## Example diff --git a/docs/CreateMultipleAccountsRequest.md b/docs/CreateMultipleAccountsRequest.md index f416113f..5db265d4 100644 --- a/docs/CreateMultipleAccountsRequest.md +++ b/docs/CreateMultipleAccountsRequest.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **names** | **List[str]** | Names to assign to vault accounts. if vaultAccountNamesStartingIndex or prefix is used it'll fail | [optional] **vault_account_names_starting_index** | **int** | Copy vault accounts names starting from this index. If names array is used it'll fail | [optional] **prefix** | **str** | When copying from existing vault accounts (vaultAccountNamesStartingIndex) then adding a prefix to the names. If names array is used it'll fail | [optional] +**tag_ids** | **List[str]** | Optional list of tag IDs to attach to all created vault accounts | [optional] ## Example diff --git a/docs/DirectAccessProvider.md b/docs/DirectAccessProvider.md index 8c8a1240..9480ad01 100644 --- a/docs/DirectAccessProvider.md +++ b/docs/DirectAccessProvider.md @@ -9,9 +9,11 @@ Name | Type | Description | Notes **name** | **str** | Display name of the provider | **logo** | **str** | URL to the logo image of the provider | [optional] **account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | +**manifest** | [**Manifest**](Manifest.md) | | **approved** | **bool** | Whether the provider was approved for use | [optional] **has_terms_of_service** | **bool** | Whether the provider has terms of service | **terms_of_service_url** | **str** | URL to the terms of service document | [optional] +**privacy_policy_url** | **str** | URL to the privacy policy document | [optional] ## Example diff --git a/docs/DirectAccessProviderDetails.md b/docs/DirectAccessProviderInfo.md similarity index 52% rename from docs/DirectAccessProviderDetails.md rename to docs/DirectAccessProviderInfo.md index b8849694..4883c65e 100644 --- a/docs/DirectAccessProviderDetails.md +++ b/docs/DirectAccessProviderInfo.md @@ -1,4 +1,4 @@ -# DirectAccessProviderDetails +# DirectAccessProviderInfo ## Properties @@ -8,23 +8,24 @@ Name | Type | Description | Notes **approved** | **bool** | Whether the provider was approved for use | [optional] **has_terms_of_service** | **bool** | Whether the provider has terms of service | **terms_of_service_url** | **str** | URL to the terms of service document | [optional] +**privacy_policy_url** | **str** | URL to the privacy policy document | [optional] ## Example ```python -from fireblocks.models.direct_access_provider_details import DirectAccessProviderDetails +from fireblocks.models.direct_access_provider_info import DirectAccessProviderInfo # TODO update the JSON string below json = "{}" -# create an instance of DirectAccessProviderDetails from a JSON string -direct_access_provider_details_instance = DirectAccessProviderDetails.from_json(json) +# create an instance of DirectAccessProviderInfo from a JSON string +direct_access_provider_info_instance = DirectAccessProviderInfo.from_json(json) # print the JSON string representation of the object -print(DirectAccessProviderDetails.to_json()) +print(DirectAccessProviderInfo.to_json()) # convert the object into a dict -direct_access_provider_details_dict = direct_access_provider_details_instance.to_dict() -# create an instance of DirectAccessProviderDetails from a dict -direct_access_provider_details_from_dict = DirectAccessProviderDetails.from_dict(direct_access_provider_details_dict) +direct_access_provider_info_dict = direct_access_provider_info_instance.to_dict() +# create an instance of DirectAccessProviderInfo from a dict +direct_access_provider_info_from_dict = DirectAccessProviderInfo.from_dict(direct_access_provider_info_dict) ``` [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/DirectProviderDetails.md b/docs/DirectProviderDetails.md new file mode 100644 index 00000000..f0c35e38 --- /dev/null +++ b/docs/DirectProviderDetails.md @@ -0,0 +1,37 @@ +# DirectProviderDetails + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Unique identifier for the provider | +**name** | **str** | Display name of the provider | +**logo** | **str** | URL to the logo image of the provider | [optional] +**account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | +**manifest** | [**Manifest**](Manifest.md) | | +**approved** | **bool** | Whether the provider was approved for use | [optional] +**has_terms_of_service** | **bool** | Whether the provider has terms of service | +**terms_of_service_url** | **str** | URL to the terms of service document | [optional] +**privacy_policy_url** | **str** | URL to the privacy policy document | [optional] + +## Example + +```python +from fireblocks.models.direct_provider_details import DirectProviderDetails + +# TODO update the JSON string below +json = "{}" +# create an instance of DirectProviderDetails from a JSON string +direct_provider_details_instance = DirectProviderDetails.from_json(json) +# print the JSON string representation of the object +print(DirectProviderDetails.to_json()) + +# convert the object into a dict +direct_provider_details_dict = direct_provider_details_instance.to_dict() +# create an instance of DirectProviderDetails from a dict +direct_provider_details_from_dict = DirectProviderDetails.from_dict(direct_provider_details_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/Capability.md b/docs/ExecutionRequestDetailsType.md similarity index 57% rename from docs/Capability.md rename to docs/ExecutionRequestDetailsType.md index e3fec47a..24bb3e08 100644 --- a/docs/Capability.md +++ b/docs/ExecutionRequestDetailsType.md @@ -1,13 +1,12 @@ -# Capability +# ExecutionRequestDetailsType +Execution type supported by the provider ## Enum -* `WITHDRAWALS` (value: `'WITHDRAWALS'`) +* `QUOTE` (value: `'QUOTE'`) -* `DEPOSITS` (value: `'DEPOSITS'`) - -* `TRADING` (value: `'TRADING'`) +* `MARKET` (value: `'MARKET'`) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ExtraParameters.md b/docs/ExtraParameters.md index 7817a9e6..7dc34551 100644 --- a/docs/ExtraParameters.md +++ b/docs/ExtraParameters.md @@ -1,6 +1,6 @@ # ExtraParameters -Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call. +Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/getunspentinputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call. ## Properties diff --git a/docs/GetTransactionOperation.md b/docs/GetTransactionOperation.md index fb5755c3..50727db8 100644 --- a/docs/GetTransactionOperation.md +++ b/docs/GetTransactionOperation.md @@ -1,6 +1,6 @@ # GetTransactionOperation -* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address. * `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. * `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing). * `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing) * `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account. * `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. * `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. * `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name. * `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `PROGRAM_CALL` - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain. * `APPROVE` - Enables the approve function for a smart contract or wallet to withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions). +* `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address. * `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. * `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing). * `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing) * `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account. * `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. * `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `PROGRAM_CALL` - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain. * `APPROVE` - Enables the approve function for a smart contract or wallet to withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions). ## Enum @@ -20,10 +20,6 @@ * `STAKE` (value: `'STAKE'`) -* `UNSTAKE` (value: `'UNSTAKE'`) - -* `WITHDRAW` (value: `'WITHDRAW'`) - * `REDEEM_FROM_COMPOUND` (value: `'REDEEM_FROM_COMPOUND'`) * `SUPPLY_TO_COMPOUND` (value: `'SUPPLY_TO_COMPOUND'`) diff --git a/docs/GleifData.md b/docs/GleifData.md new file mode 100644 index 00000000..3ad64c78 --- /dev/null +++ b/docs/GleifData.md @@ -0,0 +1,35 @@ +# GleifData + +GLEIF (Global Legal Entity Identifier Foundation) data for a legal entity + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**lei** | **str** | Legal Entity Identifier (LEI) code | +**legal_name** | **str** | Official legal name of the entity | +**other_names** | **List[str]** | Alternative names for the entity | [optional] +**legal_address_region** | **str** | Region or state of the legal address | [optional] +**legal_address_country** | **str** | Country code of the legal address (ISO 3166-1 alpha-2) | +**next_renewal_date** | **datetime** | Date when the LEI registration must be renewed | [optional] + +## Example + +```python +from fireblocks.models.gleif_data import GleifData + +# TODO update the JSON string below +json = "{}" +# create an instance of GleifData from a JSON string +gleif_data_instance = GleifData.from_json(json) +# print the JSON string representation of the object +print(GleifData.to_json()) + +# convert the object into a dict +gleif_data_dict = gleif_data_instance.to_dict() +# create an instance of GleifData from a dict +gleif_data_from_dict = GleifData.from_dict(gleif_data_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/InteracAddress.md b/docs/InteracAddress.md index c6ad53a5..f5f98c31 100644 --- a/docs/InteracAddress.md +++ b/docs/InteracAddress.md @@ -1,5 +1,6 @@ # InteracAddress +When true, funds are deposited directly into the recipient's bank account without a security question. When false, a security question and answer are required to complete the transfer ## Properties @@ -8,6 +9,9 @@ Name | Type | Description | Notes **account_holder** | [**AccountHolderDetails**](AccountHolderDetails.md) | | **recipient_handle** | [**RecipientHandle**](RecipientHandle.md) | | **message** | **str** | The message to be sent to the recipient | [optional] +**auto_deposit** | **bool** | Whether to automatically deposit the funds into the account | +**security_question** | **str** | The security question to be used for the security answer | [optional] +**security_answer** | **str** | The security answer to be used for the security question | [optional] ## Example diff --git a/docs/JobCreated.md b/docs/JobCreated.md index f3c2c445..c6c67348 100644 --- a/docs/JobCreated.md +++ b/docs/JobCreated.md @@ -6,6 +6,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **job_id** | **str** | | [optional] +**approval_request_id** | **str** | Approval request ID. Returned when a tag triggers an approval flow. | [optional] ## Example diff --git a/docs/LegalEntityRegistration.md b/docs/LegalEntityRegistration.md new file mode 100644 index 00000000..501ec71d --- /dev/null +++ b/docs/LegalEntityRegistration.md @@ -0,0 +1,38 @@ +# LegalEntityRegistration + +Legal entity registration record + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Unique registration identifier | +**lei** | **str** | Legal Entity Identifier (LEI) code | +**status** | [**LeiStatus**](LeiStatus.md) | | +**is_default** | **bool** | Whether this is the default legal entity for the workspace | +**travel_rule_providers** | [**List[TravelRuleProvider]**](TravelRuleProvider.md) | Travel rule providers configured for this registration | +**travel_rule_contact_email** | **str** | Contact email for travel rule communications | [optional] +**gleif_data** | [**GleifData**](GleifData.md) | | [optional] +**created_at** | **str** | Creation timestamp in milliseconds since epoch | +**updated_at** | **str** | Last update timestamp in milliseconds since epoch | + +## Example + +```python +from fireblocks.models.legal_entity_registration import LegalEntityRegistration + +# TODO update the JSON string below +json = "{}" +# create an instance of LegalEntityRegistration from a JSON string +legal_entity_registration_instance = LegalEntityRegistration.from_json(json) +# print the JSON string representation of the object +print(LegalEntityRegistration.to_json()) + +# convert the object into a dict +legal_entity_registration_dict = legal_entity_registration_instance.to_dict() +# create an instance of LegalEntityRegistration from a dict +legal_entity_registration_from_dict = LegalEntityRegistration.from_dict(legal_entity_registration_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/LeiStatus.md b/docs/LeiStatus.md new file mode 100644 index 00000000..a7d94708 --- /dev/null +++ b/docs/LeiStatus.md @@ -0,0 +1,17 @@ +# LeiStatus + +Approval status of a legal entity registration + +## Enum + +* `PENDING` (value: `'PENDING'`) + +* `APPROVED` (value: `'APPROVED'`) + +* `DENIED` (value: `'DENIED'`) + +* `REVOKED` (value: `'REVOKED'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ListLegalEntitiesResponse.md b/docs/ListLegalEntitiesResponse.md new file mode 100644 index 00000000..01d00c90 --- /dev/null +++ b/docs/ListLegalEntitiesResponse.md @@ -0,0 +1,33 @@ +# ListLegalEntitiesResponse + +Paginated response containing a list of legal entity registrations + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | Total number of legal entity registrations (optional) | [optional] +**data** | [**List[LegalEntityRegistration]**](LegalEntityRegistration.md) | Legal entity registrations for the current page | +**next** | **str** | Cursor to pass as `pageCursor` to retrieve the next page | [optional] +**prev** | **str** | Cursor to pass as `pageCursor` to retrieve the previous page | [optional] + +## Example + +```python +from fireblocks.models.list_legal_entities_response import ListLegalEntitiesResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListLegalEntitiesResponse from a JSON string +list_legal_entities_response_instance = ListLegalEntitiesResponse.from_json(json) +# print the JSON string representation of the object +print(ListLegalEntitiesResponse.to_json()) + +# convert the object into a dict +list_legal_entities_response_dict = list_legal_entities_response_instance.to_dict() +# create an instance of ListLegalEntitiesResponse from a dict +list_legal_entities_response_from_dict = ListLegalEntitiesResponse.from_dict(list_legal_entities_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ListVaultsForRegistrationResponse.md b/docs/ListVaultsForRegistrationResponse.md new file mode 100644 index 00000000..c60cd4c6 --- /dev/null +++ b/docs/ListVaultsForRegistrationResponse.md @@ -0,0 +1,33 @@ +# ListVaultsForRegistrationResponse + +Response containing vault account IDs assigned to a legal entity registration + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**total** | **int** | Total number of legal entity registrations (optional) | [optional] +**data** | **List[str]** | List of vault account IDs assigned to the legal entity registration | +**next** | **str** | Cursor to pass as `pageCursor` to retrieve the next page | [optional] +**prev** | **str** | Cursor to pass as `pageCursor` to retrieve the previous page | [optional] + +## Example + +```python +from fireblocks.models.list_vaults_for_registration_response import ListVaultsForRegistrationResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of ListVaultsForRegistrationResponse from a JSON string +list_vaults_for_registration_response_instance = ListVaultsForRegistrationResponse.from_json(json) +# print the JSON string representation of the object +print(ListVaultsForRegistrationResponse.to_json()) + +# convert the object into a dict +list_vaults_for_registration_response_dict = list_vaults_for_registration_response_instance.to_dict() +# create an instance of ListVaultsForRegistrationResponse from a dict +list_vaults_for_registration_response_from_dict = ListVaultsForRegistrationResponse.from_dict(list_vaults_for_registration_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/Manifest.md b/docs/Manifest.md index ed5df2f2..f2a38ee7 100644 --- a/docs/Manifest.md +++ b/docs/Manifest.md @@ -1,12 +1,14 @@ # Manifest +The manifest of the provider, describing its supported order, quote, and rate requirements. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**asset_types** | [**List[AssetTypeEnum]**](AssetTypeEnum.md) | | -**capabilities** | [**List[Capability]**](Capability.md) | | +**order** | [**ManifestOrder**](ManifestOrder.md) | | +**quote** | [**ManifestQuote**](ManifestQuote.md) | | +**rate** | [**ManifestBase**](ManifestBase.md) | | ## Example diff --git a/docs/ManifestBase.md b/docs/ManifestBase.md new file mode 100644 index 00000000..9f4aa394 --- /dev/null +++ b/docs/ManifestBase.md @@ -0,0 +1,30 @@ +# ManifestBase + +Base manifest schema with common properties + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**supported** | **bool** | Indicates whether the endpoint is supported by the provider | + +## Example + +```python +from fireblocks.models.manifest_base import ManifestBase + +# TODO update the JSON string below +json = "{}" +# create an instance of ManifestBase from a JSON string +manifest_base_instance = ManifestBase.from_json(json) +# print the JSON string representation of the object +print(ManifestBase.to_json()) + +# convert the object into a dict +manifest_base_dict = manifest_base_instance.to_dict() +# create an instance of ManifestBase from a dict +manifest_base_from_dict = ManifestBase.from_dict(manifest_base_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ManifestOrder.md b/docs/ManifestOrder.md new file mode 100644 index 00000000..6495d192 --- /dev/null +++ b/docs/ManifestOrder.md @@ -0,0 +1,31 @@ +# ManifestOrder + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**supported** | **bool** | Indicates whether the endpoint is supported by the provider | +**settlement_types** | [**List[SettlementTypeEnum]**](SettlementTypeEnum.md) | Supported settlement types when creating an order. If present - settlement is required. If absent - no need to provide settlement. | [optional] +**execution_types** | [**List[ExecutionRequestDetailsType]**](ExecutionRequestDetailsType.md) | Supported execution types when creating an order. | + +## Example + +```python +from fireblocks.models.manifest_order import ManifestOrder + +# TODO update the JSON string below +json = "{}" +# create an instance of ManifestOrder from a JSON string +manifest_order_instance = ManifestOrder.from_json(json) +# print the JSON string representation of the object +print(ManifestOrder.to_json()) + +# convert the object into a dict +manifest_order_dict = manifest_order_instance.to_dict() +# create an instance of ManifestOrder from a dict +manifest_order_from_dict = ManifestOrder.from_dict(manifest_order_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ManifestOrderInfo.md b/docs/ManifestOrderInfo.md new file mode 100644 index 00000000..d42c9801 --- /dev/null +++ b/docs/ManifestOrderInfo.md @@ -0,0 +1,31 @@ +# ManifestOrderInfo + +Defines requirements for the POST /orders endpoint. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**settlement_types** | [**List[SettlementTypeEnum]**](SettlementTypeEnum.md) | Supported settlement types when creating an order. If present - settlement is required. If absent - no need to provide settlement. | [optional] +**execution_types** | [**List[ExecutionRequestDetailsType]**](ExecutionRequestDetailsType.md) | Supported execution types when creating an order. | + +## Example + +```python +from fireblocks.models.manifest_order_info import ManifestOrderInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of ManifestOrderInfo from a JSON string +manifest_order_info_instance = ManifestOrderInfo.from_json(json) +# print the JSON string representation of the object +print(ManifestOrderInfo.to_json()) + +# convert the object into a dict +manifest_order_info_dict = manifest_order_info_instance.to_dict() +# create an instance of ManifestOrderInfo from a dict +manifest_order_info_from_dict = ManifestOrderInfo.from_dict(manifest_order_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ManifestQuote.md b/docs/ManifestQuote.md new file mode 100644 index 00000000..847c6818 --- /dev/null +++ b/docs/ManifestQuote.md @@ -0,0 +1,30 @@ +# ManifestQuote + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**supported** | **bool** | Indicates whether the endpoint is supported by the provider | +**settlement_types** | [**List[DVPSettlementType]**](DVPSettlementType.md) | Supported settlement types when requesting a quote. If present - settlement is required. If absent - no need to provide settlement. | [optional] + +## Example + +```python +from fireblocks.models.manifest_quote import ManifestQuote + +# TODO update the JSON string below +json = "{}" +# create an instance of ManifestQuote from a JSON string +manifest_quote_instance = ManifestQuote.from_json(json) +# print the JSON string representation of the object +print(ManifestQuote.to_json()) + +# convert the object into a dict +manifest_quote_dict = manifest_quote_instance.to_dict() +# create an instance of ManifestQuote from a dict +manifest_quote_from_dict = ManifestQuote.from_dict(manifest_quote_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ManifestQuoteInfo.md b/docs/ManifestQuoteInfo.md new file mode 100644 index 00000000..176cb11a --- /dev/null +++ b/docs/ManifestQuoteInfo.md @@ -0,0 +1,30 @@ +# ManifestQuoteInfo + +Defines requirements for the POST /quotes endpoint. + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**settlement_types** | [**List[DVPSettlementType]**](DVPSettlementType.md) | Supported settlement types when requesting a quote. If present - settlement is required. If absent - no need to provide settlement. | [optional] + +## Example + +```python +from fireblocks.models.manifest_quote_info import ManifestQuoteInfo + +# TODO update the JSON string below +json = "{}" +# create an instance of ManifestQuoteInfo from a JSON string +manifest_quote_info_instance = ManifestQuoteInfo.from_json(json) +# print the JSON string representation of the object +print(ManifestQuoteInfo.to_json()) + +# convert the object into a dict +manifest_quote_info_dict = manifest_quote_info_instance.to_dict() +# create an instance of ManifestQuoteInfo from a dict +manifest_quote_info_from_dict = ManifestQuoteInfo.from_dict(manifest_quote_info_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/Position.md b/docs/Position.md new file mode 100644 index 00000000..d476300d --- /dev/null +++ b/docs/Position.md @@ -0,0 +1,44 @@ +# Position + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | The unique identifier of the staking position | +**vault_account_id** | **str** | The source vault account to stake from | +**validator_name** | **str** | The destination validator address name | +**provider_name** | **str** | The destination validator provider name | +**chain_descriptor** | **str** | The protocol identifier (e.g. \"ETH\"/ \"SOL\") to use | +**amount** | **str** | Total value of the staking position. For Solana, Lido and Ethereum (compounding validator): includes the original stake plus accumulated rewards. For MATIC, Cosmos and Ethereum (legacy validator): refers to the amount currently staked. | +**rewards_amount** | **str** | The amount staked in the position, measured in the staked asset unit. | +**date_created** | **datetime** | When was the request made (ISO Date). | +**date_updated** | **datetime** | When has the position last changed (ISO Date). | +**status** | **str** | The current status. | +**validator_address** | **str** | The destination address of the staking transaction. | +**provider_id** | [**StakingProvider**](StakingProvider.md) | | +**available_actions** | **List[str]** | An array of available actions that can be performed. for example, actions like \"UNSTAKE\" or \"WITHDRAW\". | +**in_progress** | **bool** | Indicates whether there is an ongoing action for this position related to this request | +**in_progress_tx_id** | **str** | The transaction ID of the initial stake position request only. Only present when there is an active initial stake transaction. | [optional] +**blockchain_position_info** | [**DelegationBlockchainPositionInfo**](DelegationBlockchainPositionInfo.md) | | + +## Example + +```python +from fireblocks.models.position import Position + +# TODO update the JSON string below +json = "{}" +# create an instance of Position from a JSON string +position_instance = Position.from_json(json) +# print the JSON string representation of the object +print(Position.to_json()) + +# convert the object into a dict +position_dict = position_instance.to_dict() +# create an instance of Position from a dict +position_from_dict = Position.from_dict(position_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/RegisterLegalEntityRequest.md b/docs/RegisterLegalEntityRequest.md new file mode 100644 index 00000000..33ee3f4e --- /dev/null +++ b/docs/RegisterLegalEntityRequest.md @@ -0,0 +1,32 @@ +# RegisterLegalEntityRequest + +Request body to register a new legal entity + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**lei** | **str** | Legal Entity Identifier (LEI) code to register. Must be a valid 20-character LEI present in the GLEIF registry. | +**travel_rule_providers** | [**List[TravelRuleProvider]**](TravelRuleProvider.md) | Travel rule providers to associate with this registration | [optional] +**travel_rule_contact_email** | **str** | Contact email for travel rule communications | [optional] + +## Example + +```python +from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of RegisterLegalEntityRequest from a JSON string +register_legal_entity_request_instance = RegisterLegalEntityRequest.from_json(json) +# print the JSON string representation of the object +print(RegisterLegalEntityRequest.to_json()) + +# convert the object into a dict +register_legal_entity_request_dict = register_legal_entity_request_instance.to_dict() +# create an instance of RegisterLegalEntityRequest from a dict +register_legal_entity_request_from_dict = RegisterLegalEntityRequest.from_dict(register_legal_entity_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/ScreeningAmlResult.md b/docs/ScreeningAmlResult.md index ea61c52d..8996bf7c 100644 --- a/docs/ScreeningAmlResult.md +++ b/docs/ScreeningAmlResult.md @@ -1,6 +1,6 @@ # ScreeningAmlResult -Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. +Deprecated: This field is not currently returned in the API response. Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. ## Properties diff --git a/docs/ScreeningRiskLevelEnum.md b/docs/ScreeningRiskLevelEnum.md deleted file mode 100644 index c8294e56..00000000 --- a/docs/ScreeningRiskLevelEnum.md +++ /dev/null @@ -1,21 +0,0 @@ -# ScreeningRiskLevelEnum - -Risk level assessment for screening results. Possible values vary by provider and context. - -## Enum - -* `VERY_HIGH` (value: `'VERY_HIGH'`) - -* `SEVERE` (value: `'SEVERE'`) - -* `HIGH` (value: `'HIGH'`) - -* `MEDIUM` (value: `'MEDIUM'`) - -* `LOW` (value: `'LOW'`) - -* `UNKNOWN` (value: `'UNKNOWN'`) - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/docs/ScreeningTravelRuleResult.md b/docs/ScreeningTravelRuleResult.md index 5da79c13..d0648c6a 100644 --- a/docs/ScreeningTravelRuleResult.md +++ b/docs/ScreeningTravelRuleResult.md @@ -1,6 +1,6 @@ # ScreeningTravelRuleResult -Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. +Deprecated: This field is not currently returned in the API response. Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. ## Properties diff --git a/docs/AssetTypeEnum.md b/docs/SettlementTypeEnum.md similarity index 58% rename from docs/AssetTypeEnum.md rename to docs/SettlementTypeEnum.md index 8d3dc8cb..4820431e 100644 --- a/docs/AssetTypeEnum.md +++ b/docs/SettlementTypeEnum.md @@ -1,11 +1,12 @@ -# AssetTypeEnum +# SettlementTypeEnum +Settlement type supported by the provider ## Enum -* `DIGITAL` (value: `'DIGITAL'`) +* `DVP` (value: `'DVP'`) -* `FIAT` (value: `'FIAT'`) +* `PREFUNDED` (value: `'PREFUNDED'`) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/StakingApi.md b/docs/StakingApi.md index de0371ea..c0eb660e 100644 --- a/docs/StakingApi.md +++ b/docs/StakingApi.md @@ -11,6 +11,7 @@ Method | HTTP request | Description [**get_chain_info**](StakingApi.md#get_chain_info) | **GET** /staking/chains/{chainDescriptor}/chainInfo | Get chain-level staking parameters [**get_chains**](StakingApi.md#get_chains) | **GET** /staking/chains | List supported staking chains [**get_delegation_by_id**](StakingApi.md#get_delegation_by_id) | **GET** /staking/positions/{id} | Get position details +[**get_positions**](StakingApi.md#get_positions) | **GET** /staking/positions_paginated | List staking positions (Paginated) [**get_providers**](StakingApi.md#get_providers) | **GET** /staking/providers | List staking providers [**get_summary**](StakingApi.md#get_summary) | **GET** /staking/positions/summary | Get positions summary [**get_summary_by_vault**](StakingApi.md#get_summary_by_vault) | **GET** /staking/positions/summary/vaults | Get positions summary by vault @@ -184,8 +185,9 @@ No authorization required Consolidate staking positions (ETH validator consolidation) -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 validator provider and same vault account. On chain, this translates into a consolidation transaction, where the source validator is consolidated into the destination validator. Supported chains: Ethereum (ETH) only. +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 funding vaults account (i.e. same withdrawals 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. ### Example @@ -265,7 +267,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **get_all_delegations** -> List[Delegation] get_all_delegations(chain_descriptor=chain_descriptor) +> List[Delegation] get_all_delegations(chain_descriptor=chain_descriptor, vault_account_id=vault_account_id) List staking positions @@ -299,10 +301,11 @@ configuration = ClientConfiguration( # Enter a context with an instance of the API client with Fireblocks(configuration) as fireblocks: chain_descriptor = fireblocks.ChainDescriptor() # ChainDescriptor | Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned. (optional) + vault_account_id = '1' # str | Filter positions by vault account ID. (optional) try: # List staking positions - api_response = fireblocks.staking.get_all_delegations(chain_descriptor=chain_descriptor).result() + api_response = fireblocks.staking.get_all_delegations(chain_descriptor=chain_descriptor, vault_account_id=vault_account_id).result() print("The response of StakingApi->get_all_delegations:\n") pprint(api_response) except Exception as e: @@ -317,6 +320,7 @@ with Fireblocks(configuration) as fireblocks: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **chain_descriptor** | [**ChainDescriptor**](.md)| Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned. | [optional] + **vault_account_id** | **str**| Filter positions by vault account ID. | [optional] ### Return type @@ -579,6 +583,95 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **get_positions** +> StakingPositionsPaginatedResponse get_positions(page_size, chain_descriptor=chain_descriptor, vault_account_id=vault_account_id, page_cursor=page_cursor, order=order) + +List staking positions (Paginated) + +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. + +### Example + + +```python +from fireblocks.models.chain_descriptor import ChainDescriptor +from fireblocks.models.staking_positions_paginated_response import StakingPositionsPaginatedResponse +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + page_size = 10 # int | 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. (default to 10) + chain_descriptor = fireblocks.ChainDescriptor() # ChainDescriptor | Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned. (optional) + vault_account_id = '10' # str | Filter positions by Fireblocks vault account ID. If omitted, positions across all vault accounts are returned. (optional) + page_cursor = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9' # str | Cursor for the next page of results. Use the value from the 'next' field in the previous response. (optional) + order = DESC # str | ASC / DESC ordering (default DESC) (optional) (default to DESC) + + try: + # List staking positions (Paginated) + api_response = fireblocks.staking.get_positions(page_size, chain_descriptor=chain_descriptor, vault_account_id=vault_account_id, page_cursor=page_cursor, order=order).result() + print("The response of StakingApi->get_positions:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling StakingApi->get_positions: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **page_size** | **int**| 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. | [default to 10] + **chain_descriptor** | [**ChainDescriptor**](.md)| Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned. | [optional] + **vault_account_id** | **str**| Filter positions by Fireblocks vault account ID. If omitted, positions across all vault accounts are returned. | [optional] + **page_cursor** | **str**| Cursor for the next page of results. Use the value from the 'next' field in the previous response. | [optional] + **order** | **str**| ASC / DESC ordering (default DESC) | [optional] [default to DESC] + +### Return type + +[**StakingPositionsPaginatedResponse**](StakingPositionsPaginatedResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Positions retrieved successfully with pagination. | * 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 -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **get_providers** > List[Provider] get_providers() diff --git a/docs/StakingPositionsPaginatedResponse.md b/docs/StakingPositionsPaginatedResponse.md new file mode 100644 index 00000000..bc0d5165 --- /dev/null +++ b/docs/StakingPositionsPaginatedResponse.md @@ -0,0 +1,30 @@ +# StakingPositionsPaginatedResponse + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**List[Position]**](Position.md) | The data of the current page of staking positions | +**next** | **str** | The cursor for the next page | [optional] + +## Example + +```python +from fireblocks.models.staking_positions_paginated_response import StakingPositionsPaginatedResponse + +# TODO update the JSON string below +json = "{}" +# create an instance of StakingPositionsPaginatedResponse from a JSON string +staking_positions_paginated_response_instance = StakingPositionsPaginatedResponse.from_json(json) +# print the JSON string representation of the object +print(StakingPositionsPaginatedResponse.to_json()) + +# convert the object into a dict +staking_positions_paginated_response_dict = staking_positions_paginated_response_instance.to_dict() +# create an instance of StakingPositionsPaginatedResponse from a dict +staking_positions_paginated_response_from_dict = StakingPositionsPaginatedResponse.from_dict(staking_positions_paginated_response_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/TRLinkApi.md b/docs/TRLinkApi.md index 2c714e99..9afefc1f 100644 --- a/docs/TRLinkApi.md +++ b/docs/TRLinkApi.md @@ -105,7 +105,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Travel rule assessment completed | - | +**200** | Travel rule assessment completed | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -186,7 +186,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**202** | Transaction cancellation request accepted | - | +**202** | Transaction cancellation request accepted | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -265,7 +265,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Customer integration connected successfully | - | +**200** | Customer integration connected successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -342,7 +342,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**201** | Customer created successfully | - | +**201** | Customer created successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -352,7 +352,7 @@ No authorization required Create customer integration -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. +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. ### Example @@ -419,7 +419,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**201** | Customer integration created successfully | - | +**201** | Customer integration created successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -498,7 +498,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**201** | TRM created successfully | - | +**201** | TRM created successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -568,7 +568,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**204** | Customer deleted successfully | - | +**204** | Customer deleted successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -578,7 +578,7 @@ No authorization required Disconnect customer integration -Disconnects a customer integration by removing stored credentials. The integration record is deleted and cannot be recovered. +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. ### Example @@ -638,7 +638,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**204** | Customer integration disconnected successfully | - | +**204** | Customer integration disconnected successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -712,7 +712,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Customer retrieved successfully | - | +**200** | Customer retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -788,7 +788,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Customer integration retrieved successfully | - | +**200** | Customer integration retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -862,7 +862,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Customer integrations retrieved successfully | - | +**200** | Customer integrations retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -932,7 +932,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Customers retrieved successfully | - | +**200** | Customers retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1006,7 +1006,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Public key retrieved successfully | - | +**200** | Public key retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1076,7 +1076,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | List of partners retrieved successfully | - | +**200** | List of partners retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1146,7 +1146,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Policy retrieved successfully | - | +**200** | Policy retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1222,7 +1222,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Asset retrieved successfully | - | +**200** | Asset retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1298,7 +1298,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | TRM retrieved successfully | - | +**200** | TRM retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1374,7 +1374,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | VASP retrieved successfully | - | +**200** | VASP retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1452,7 +1452,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Supported assets retrieved successfully | - | +**200** | Supported assets retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1530,7 +1530,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | VASPs retrieved successfully | - | +**200** | VASPs retrieved successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1611,7 +1611,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**202** | Transaction redirect request accepted | - | +**202** | Transaction redirect request accepted | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1690,7 +1690,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Destination travel rule message ID set successfully | - | +**200** | Destination travel rule message ID set successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1769,7 +1769,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Travel rule message ID set successfully | - | +**200** | Travel rule message ID set successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1845,7 +1845,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Connection test completed (success or failure details in response body) | - | +**200** | Connection test completed (success or failure details in response body) | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -1924,7 +1924,7 @@ No authorization required | Status code | Description | Response headers | |-------------|-------------|------------------| -**200** | Customer updated successfully | - | +**200** | Customer updated successfully | * X-Request-ID -
| **0** | Error Response | * X-Request-ID -
| [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/docs/TRLinkCreateIntegrationRequest.md b/docs/TRLinkCreateIntegrationRequest.md index 18e9b890..1402c704 100644 --- a/docs/TRLinkCreateIntegrationRequest.md +++ b/docs/TRLinkCreateIntegrationRequest.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **customer_id** | **str** | Customer unique identifier | **partner_ident** | **str** | Partner identification code (e.g., \"sumsub\", \"notabene\") | +**customer_integration_id** | **str** | Optional. When supplied and permitted for the tenant (feature flag / CSM arrangement), this value is used as the TRLink integration identifier instead of a server-generated UUID. If omitted, the API generates a UUID. If supplied when the tenant is not permitted to set a custom id, the request fails with 400. Contact your CSM if you need a custom integration id. | [optional] ## Example diff --git a/docs/TradingBetaApi.md b/docs/TradingBetaApi.md index 56b0fced..6ebc329c 100644 --- a/docs/TradingBetaApi.md +++ b/docs/TradingBetaApi.md @@ -8,6 +8,7 @@ Method | HTTP request | Description [**create_quote**](TradingBetaApi.md#create_quote) | **POST** /trading/quotes | Create a quote [**get_order**](TradingBetaApi.md#get_order) | **GET** /trading/orders/{orderId} | Get order details [**get_orders**](TradingBetaApi.md#get_orders) | **GET** /trading/orders | Get orders +[**get_trading_provider_by_id**](TradingBetaApi.md#get_trading_provider_by_id) | **GET** /trading/providers/{providerId} | Get trading provider by ID [**get_trading_providers**](TradingBetaApi.md#get_trading_providers) | **GET** /trading/providers | Get providers @@ -381,6 +382,92 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **get_trading_provider_by_id** +> TradingProviderDetails get_trading_provider_by_id(provider_id) + +Get trading provider by ID + +Retrieve detailed information about a specific provider including its full manifest with order/quote requirements. + +**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 + + +```python +from fireblocks.models.trading_provider_details import TradingProviderDetails +from fireblocks.client import Fireblocks +from fireblocks.client_configuration import ClientConfiguration +from fireblocks.exceptions import ApiException +from fireblocks.base_path import BasePath +from pprint import pprint + +# load the secret key content from a file +with open('your_secret_key_file_path', 'r') as file: + secret_key_value = file.read() + +# build the configuration +configuration = ClientConfiguration( + api_key="your_api_key", + secret_key=secret_key_value, + base_path=BasePath.Sandbox, # or set it directly to a string "https://sandbox-api.fireblocks.io/v1" +) + + +# Enter a context with an instance of the API client +with Fireblocks(configuration) as fireblocks: + provider_id = 'provider_id_example' # str | The unique identifier of the provider. + + try: + # Get trading provider by ID + api_response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id).result() + print("The response of TradingBetaApi->get_trading_provider_by_id:\n") + pprint(api_response) + except Exception as e: + print("Exception when calling TradingBetaApi->get_trading_provider_by_id: %s\n" % e) +``` + + + +### Parameters + + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **provider_id** | **str**| The unique identifier of the provider. | + +### Return type + +[**TradingProviderDetails**](TradingProviderDetails.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | Provider 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** | Provider not found. | * 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 -
| + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **get_trading_providers** > ProvidersListResponse get_trading_providers(page_size=page_size, page_cursor=page_cursor) diff --git a/docs/TradingProvider.md b/docs/TradingProvider.md index bc61aef1..9fdab4fd 100644 --- a/docs/TradingProvider.md +++ b/docs/TradingProvider.md @@ -11,10 +11,11 @@ Name | Type | Description | Notes **account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | **manifest** | [**Manifest**](Manifest.md) | | **connected** | **bool** | Whether the provider is currently connected | -**accounts** | [**List[AccountBase]**](AccountBase.md) | | [optional] +**accounts** | [**List[AccountBase]**](AccountBase.md) | | **approved** | **bool** | Whether the provider was approved for use | [optional] **has_terms_of_service** | **bool** | Whether the provider has terms of service | **terms_of_service_url** | **str** | URL to the terms of service document | [optional] +**privacy_policy_url** | **str** | URL to the privacy policy document | [optional] ## Example diff --git a/docs/TradingProviderDetails.md b/docs/TradingProviderDetails.md new file mode 100644 index 00000000..cf1f32a3 --- /dev/null +++ b/docs/TradingProviderDetails.md @@ -0,0 +1,39 @@ +# TradingProviderDetails + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | Unique identifier for the provider | +**name** | **str** | Display name of the provider | +**logo** | **str** | URL to the logo image of the provider | [optional] +**account_based** | **bool** | Indicates whether the provider access model is through accounts or directly | +**manifest** | [**Manifest**](Manifest.md) | | +**connected** | **bool** | Whether the provider is currently connected | +**accounts** | [**List[AccountBase]**](AccountBase.md) | | +**approved** | **bool** | Whether the provider was approved for use | [optional] +**has_terms_of_service** | **bool** | Whether the provider has terms of service | +**terms_of_service_url** | **str** | URL to the terms of service document | [optional] +**privacy_policy_url** | **str** | URL to the privacy policy document | [optional] + +## Example + +```python +from fireblocks.models.trading_provider_details import TradingProviderDetails + +# TODO update the JSON string below +json = "{}" +# create an instance of TradingProviderDetails from a JSON string +trading_provider_details_instance = TradingProviderDetails.from_json(json) +# print the JSON string representation of the object +print(TradingProviderDetails.to_json()) + +# convert the object into a dict +trading_provider_details_dict = trading_provider_details_instance.to_dict() +# create an instance of TradingProviderDetails from a dict +trading_provider_details_from_dict = TradingProviderDetails.from_dict(trading_provider_details_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/TransactionResponse.md b/docs/TransactionResponse.md index 201a8708..722db0d6 100644 --- a/docs/TransactionResponse.md +++ b/docs/TransactionResponse.md @@ -12,7 +12,7 @@ Name | Type | Description | Notes **tx_hash** | **str** | The hash of the transaction on the blockchain. * This parameter exists if at least one of the following conditions is met: 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`. 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well. 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`. * In addition, the following conditions must be met: 1. The asset is a crypto asset (not fiat). 2. The transaction operation is not RAW or `TYPED_MESSAGE`. | [optional] **operation** | [**GetTransactionOperation**](GetTransactionOperation.md) | | [optional] **note** | **str** | Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace. | [optional] -**asset_id** | **str** | The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets) | [optional] +**asset_id** | **str** | The ID of the asset to transfer for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`, or `STAKE` operations. [See the list of supported assets and their IDs on Fireblocks](https://developers.fireblocks.com/reference/get_supported-assets). | [optional] **asset_type** | **str** | Type classification of the asset | [optional] **source** | [**SourceTransferPeerPathResponse**](SourceTransferPeerPathResponse.md) | | [optional] **source_address** | **str** | For account based assets only, the source address of the transaction. **Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty. | [optional] diff --git a/docs/TravelRuleActionEnum.md b/docs/TravelRuleActionEnum.md index 01e82b18..79274904 100644 --- a/docs/TravelRuleActionEnum.md +++ b/docs/TravelRuleActionEnum.md @@ -10,6 +10,10 @@ Travel rule action * `BLOCK` (value: `'BLOCK'`) +* `PASS` (value: `'PASS'`) + +* `FREEZE` (value: `'FREEZE'`) + [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/TravelRuleOwnershipProof.md b/docs/TravelRuleOwnershipProof.md index 753ae5b0..461bf371 100644 --- a/docs/TravelRuleOwnershipProof.md +++ b/docs/TravelRuleOwnershipProof.md @@ -12,6 +12,8 @@ Name | Type | Description | Notes **address** | **str** | The wallet address being verified. Examples: - For Ethereum: `0x896B...0b9b` - For Bitcoin: `1442...dxhsQ` | [optional] **wallet_provider** | **str** | The wallet provider or method used for verification. Examples: - For Metamask: `Metamask` - For manual signature: `manual` | [optional] **url** | **str** | The URL for the uploaded screenshot (for `screenshot` proof types only). Example: `https://example.com/uploaded_image.png` | [optional] +**did** | **str** | The Decentralized Identifier (DID) associated with the ownership proof. | [optional] +**status** | **str** | The status of the ownership proof verification. | [optional] **confirmed** | **bool** | Whether the user confirmed ownership of the wallet (for `self-declaration` proofs). Example: `true` | [optional] ## Example diff --git a/docs/TravelRuleProvider.md b/docs/TravelRuleProvider.md new file mode 100644 index 00000000..df880d58 --- /dev/null +++ b/docs/TravelRuleProvider.md @@ -0,0 +1,29 @@ +# TravelRuleProvider + +Travel rule compliance provider + +## Enum + +* `CODE` (value: `'CODE'`) + +* `GTR` (value: `'GTR'`) + +* `MY_OWN` (value: `'MY_OWN'`) + +* `NOTABENE` (value: `'NOTABENE'`) + +* `SYGNA` (value: `'SYGNA'`) + +* `SUMSUB` (value: `'SUMSUB'`) + +* `TRISA` (value: `'TRISA'`) + +* `TRUST` (value: `'TRUST'`) + +* `TWENTY_ONE_ANALYTICS` (value: `'TWENTY_ONE_ANALYTICS'`) + +* `VERIFY_VASP` (value: `'VERIFY_VASP'`) + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/TravelRuleResult.md b/docs/TravelRuleResult.md index 6f1566c7..49096088 100644 --- a/docs/TravelRuleResult.md +++ b/docs/TravelRuleResult.md @@ -1,6 +1,6 @@ # TravelRuleResult -Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. +Deprecated: This field is not currently returned in the API response. Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. ## Properties diff --git a/docs/TravelRuleStatusEnum.md b/docs/TravelRuleStatusEnum.md index e69a93f1..31eede0d 100644 --- a/docs/TravelRuleStatusEnum.md +++ b/docs/TravelRuleStatusEnum.md @@ -14,6 +14,12 @@ Travel rule status * `FROZEN` (value: `'FROZEN'`) +* `REJECTED` (value: `'REJECTED'`) + +* `CANCELED` (value: `'CANCELED'`) + +* `BLOCKING_TIME_EXPIRED` (value: `'BLOCKING_TIME_EXPIRED'`) + [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/TravelRuleVerdictEnum.md b/docs/TravelRuleVerdictEnum.md index 14df8de8..8bf81780 100644 --- a/docs/TravelRuleVerdictEnum.md +++ b/docs/TravelRuleVerdictEnum.md @@ -12,6 +12,12 @@ The final verdict of the travel rule screening * `REVIEW` (value: `'REVIEW'`) +* `WAIT` (value: `'WAIT'`) + +* `FREEZE` (value: `'FREEZE'`) + +* `CANCEL` (value: `'CANCEL'`) + [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UpdateLegalEntityRequest.md b/docs/UpdateLegalEntityRequest.md new file mode 100644 index 00000000..17b15f36 --- /dev/null +++ b/docs/UpdateLegalEntityRequest.md @@ -0,0 +1,29 @@ +# UpdateLegalEntityRequest + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**is_default** | **bool** | Whether to set this registration as the workspace default | + +## Example + +```python +from fireblocks.models.update_legal_entity_request import UpdateLegalEntityRequest + +# TODO update the JSON string below +json = "{}" +# create an instance of UpdateLegalEntityRequest from a JSON string +update_legal_entity_request_instance = UpdateLegalEntityRequest.from_json(json) +# print the JSON string representation of the object +print(UpdateLegalEntityRequest.to_json()) + +# convert the object into a dict +update_legal_entity_request_dict = update_legal_entity_request_instance.to_dict() +# create an instance of UpdateLegalEntityRequest from a dict +update_legal_entity_request_from_dict = UpdateLegalEntityRequest.from_dict(update_legal_entity_request_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/UserRole.md b/docs/UserRole.md index 5c2827ad..7ad8befb 100644 --- a/docs/UserRole.md +++ b/docs/UserRole.md @@ -26,6 +26,10 @@ The role of the user * `NCW_SIGNER` (value: `'NCW_SIGNER'`) +* `SECURITY_ADMIN` (value: `'SECURITY_ADMIN'`) + +* `SECURITY_AUDITOR` (value: `'SECURITY_AUDITOR'`) + [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/fireblocks/__init__.py b/fireblocks/__init__.py index cfa6d369..9be80403 100644 --- a/fireblocks/__init__.py +++ b/fireblocks/__init__.py @@ -15,7 +15,7 @@ """ # noqa: E501 -__version__ = "15.0.0" +__version__ = "0.0.0" # import apis into sdk package from fireblocks.api.api_user_api import ApiUserApi @@ -96,9 +96,10 @@ from fireblocks.models.account_access import AccountAccess from fireblocks.models.account_base import AccountBase from fireblocks.models.account_based_access_provider import AccountBasedAccessProvider -from fireblocks.models.account_based_access_provider_details import ( - AccountBasedAccessProviderDetails, +from fireblocks.models.account_based_access_provider_info import ( + AccountBasedAccessProviderInfo, ) +from fireblocks.models.account_based_provider_details import AccountBasedProviderDetails from fireblocks.models.account_config import AccountConfig from fireblocks.models.account_holder_details import AccountHolderDetails from fireblocks.models.account_identifier import AccountIdentifier @@ -128,8 +129,44 @@ from fireblocks.models.address_balance_item_dto import AddressBalanceItemDto from fireblocks.models.address_balance_paged_response import AddressBalancePagedResponse from fireblocks.models.address_not_available_error import AddressNotAvailableError +from fireblocks.models.address_registry_add_vault_opt_outs_request import ( + AddressRegistryAddVaultOptOutsRequest, +) +from fireblocks.models.address_registry_add_vault_opt_outs_request_vault_account_ids_inner import ( + AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner, +) +from fireblocks.models.address_registry_add_vault_opt_outs_response import ( + AddressRegistryAddVaultOptOutsResponse, +) from fireblocks.models.address_registry_error import AddressRegistryError +from fireblocks.models.address_registry_get_vault_opt_out_response import ( + AddressRegistryGetVaultOptOutResponse, +) from fireblocks.models.address_registry_legal_entity import AddressRegistryLegalEntity +from fireblocks.models.address_registry_legal_entity_legacy import ( + AddressRegistryLegalEntityLegacy, +) +from fireblocks.models.address_registry_list_vault_opt_outs_response import ( + AddressRegistryListVaultOptOutsResponse, +) +from fireblocks.models.address_registry_remove_all_vault_opt_outs_response import ( + AddressRegistryRemoveAllVaultOptOutsResponse, +) +from fireblocks.models.address_registry_remove_vault_opt_out_response import ( + AddressRegistryRemoveVaultOptOutResponse, +) +from fireblocks.models.address_registry_tenant_registry_response import ( + AddressRegistryTenantRegistryResponse, +) +from fireblocks.models.address_registry_travel_rule_provider import ( + AddressRegistryTravelRuleProvider, +) +from fireblocks.models.address_registry_vault_list_order import ( + AddressRegistryVaultListOrder, +) +from fireblocks.models.address_registry_vault_opt_out_item import ( + AddressRegistryVaultOptOutItem, +) from fireblocks.models.alert_exposure_type_enum import AlertExposureTypeEnum from fireblocks.models.alert_level_enum import AlertLevelEnum from fireblocks.models.aml_alert import AmlAlert @@ -192,10 +229,15 @@ from fireblocks.models.asset_price_response import AssetPriceResponse from fireblocks.models.asset_response import AssetResponse from fireblocks.models.asset_scope import AssetScope -from fireblocks.models.asset_type_enum import AssetTypeEnum from fireblocks.models.asset_type_response import AssetTypeResponse from fireblocks.models.asset_types_config_inner import AssetTypesConfigInner from fireblocks.models.asset_wallet import AssetWallet +from fireblocks.models.assign_vaults_to_legal_entity_request import ( + AssignVaultsToLegalEntityRequest, +) +from fireblocks.models.assign_vaults_to_legal_entity_response import ( + AssignVaultsToLegalEntityResponse, +) from fireblocks.models.audit_log_data import AuditLogData from fireblocks.models.auditor_data import AuditorData from fireblocks.models.authorization_groups import AuthorizationGroups @@ -223,7 +265,6 @@ from fireblocks.models.callback_handler import CallbackHandler from fireblocks.models.callback_handler_request import CallbackHandlerRequest from fireblocks.models.cancel_transaction_response import CancelTransactionResponse -from fireblocks.models.capability import Capability from fireblocks.models.chain_descriptor import ChainDescriptor from fireblocks.models.chain_info_response import ChainInfoResponse from fireblocks.models.channel_dvn_config_with_confirmations import ( @@ -476,7 +517,8 @@ ) from fireblocks.models.direct_access import DirectAccess from fireblocks.models.direct_access_provider import DirectAccessProvider -from fireblocks.models.direct_access_provider_details import DirectAccessProviderDetails +from fireblocks.models.direct_access_provider_info import DirectAccessProviderInfo +from fireblocks.models.direct_provider_details import DirectProviderDetails from fireblocks.models.disbursement_amount_instruction import ( DisbursementAmountInstruction, ) @@ -602,6 +644,7 @@ from fireblocks.models.execution_operation_status import ExecutionOperationStatus from fireblocks.models.execution_request_base_details import ExecutionRequestBaseDetails from fireblocks.models.execution_request_details import ExecutionRequestDetails +from fireblocks.models.execution_request_details_type import ExecutionRequestDetailsType from fireblocks.models.execution_response_base_details import ( ExecutionResponseBaseDetails, ) @@ -702,6 +745,7 @@ GetWhitelistIpAddressesResponse, ) from fireblocks.models.get_workspace_status_response import GetWorkspaceStatusResponse +from fireblocks.models.gleif_data import GleifData from fireblocks.models.http_contract_does_not_exist_error import ( HttpContractDoesNotExistError, ) @@ -785,13 +829,19 @@ from fireblocks.models.legacy_src_or_dest_attributes_inner import ( LegacySrcOrDestAttributesInner, ) +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from fireblocks.models.lei_status import LeiStatus from fireblocks.models.linked_tokens_count import LinkedTokensCount from fireblocks.models.list_assets_response import ListAssetsResponse from fireblocks.models.list_blockchains_response import ListBlockchainsResponse +from fireblocks.models.list_legal_entities_response import ListLegalEntitiesResponse from fireblocks.models.list_owned_collections_response import ( ListOwnedCollectionsResponse, ) from fireblocks.models.list_owned_tokens_response import ListOwnedTokensResponse +from fireblocks.models.list_vaults_for_registration_response import ( + ListVaultsForRegistrationResponse, +) from fireblocks.models.local_bank_transfer_africa_address import ( LocalBankTransferAfricaAddress, ) @@ -799,6 +849,11 @@ LocalBankTransferAfricaDestination, ) from fireblocks.models.manifest import Manifest +from fireblocks.models.manifest_base import ManifestBase +from fireblocks.models.manifest_order import ManifestOrder +from fireblocks.models.manifest_order_info import ManifestOrderInfo +from fireblocks.models.manifest_quote import ManifestQuote +from fireblocks.models.manifest_quote_info import ManifestQuoteInfo from fireblocks.models.market_execution_request_details import ( MarketExecutionRequestDetails, ) @@ -929,6 +984,7 @@ from fireblocks.models.policy_validation import PolicyValidation from fireblocks.models.policy_verdict_action_enum import PolicyVerdictActionEnum from fireblocks.models.policy_verdict_action_enum2 import PolicyVerdictActionEnum2 +from fireblocks.models.position import Position from fireblocks.models.postal_address import PostalAddress from fireblocks.models.pre_screening import PreScreening from fireblocks.models.prefunded_settlement import PrefundedSettlement @@ -966,6 +1022,7 @@ from fireblocks.models.redeem_funds_to_linked_dda_response import ( RedeemFundsToLinkedDDAResponse, ) +from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest from fireblocks.models.register_new_asset_request import RegisterNewAssetRequest from fireblocks.models.reissue_multichain_token_request import ( ReissueMultichainTokenRequest, @@ -1047,7 +1104,6 @@ from fireblocks.models.screening_provider_rules_configuration_response import ( ScreeningProviderRulesConfigurationResponse, ) -from fireblocks.models.screening_risk_level_enum import ScreeningRiskLevelEnum from fireblocks.models.screening_tr_link_amount import ScreeningTRLinkAmount from fireblocks.models.screening_tr_link_missing_trm_decision import ( ScreeningTRLinkMissingTrmDecision, @@ -1123,6 +1179,7 @@ from fireblocks.models.settlement_request_body import SettlementRequestBody from fireblocks.models.settlement_response import SettlementResponse from fireblocks.models.settlement_source_account import SettlementSourceAccount +from fireblocks.models.settlement_type_enum import SettlementTypeEnum from fireblocks.models.side import Side from fireblocks.models.signed_message import SignedMessage from fireblocks.models.signed_message_signature import SignedMessageSignature @@ -1201,6 +1258,9 @@ from fireblocks.models.st_eth_blockchain_data import StEthBlockchainData from fireblocks.models.stake_request import StakeRequest from fireblocks.models.stake_response import StakeResponse +from fireblocks.models.staking_positions_paginated_response import ( + StakingPositionsPaginatedResponse, +) from fireblocks.models.staking_provider import StakingProvider from fireblocks.models.status import Status from fireblocks.models.stellar_ripple_create_params_dto import ( @@ -1383,6 +1443,7 @@ from fireblocks.models.trading_account_type import TradingAccountType from fireblocks.models.trading_error_schema import TradingErrorSchema from fireblocks.models.trading_provider import TradingProvider +from fireblocks.models.trading_provider_details import TradingProviderDetails from fireblocks.models.transaction import Transaction from fireblocks.models.transaction_direction import TransactionDirection from fireblocks.models.transaction_fee import TransactionFee @@ -1480,6 +1541,7 @@ TravelRulePolicyRuleResponse, ) from fireblocks.models.travel_rule_prescreening_rule import TravelRulePrescreeningRule +from fireblocks.models.travel_rule_provider import TravelRuleProvider from fireblocks.models.travel_rule_result import TravelRuleResult from fireblocks.models.travel_rule_status_enum import TravelRuleStatusEnum from fireblocks.models.travel_rule_transaction_blockchain_info import ( @@ -1554,6 +1616,7 @@ UpdateCallbackHandlerResponse, ) from fireblocks.models.update_draft_request import UpdateDraftRequest +from fireblocks.models.update_legal_entity_request import UpdateLegalEntityRequest from fireblocks.models.update_tag_request import UpdateTagRequest from fireblocks.models.update_token_ownership_status_dto import ( UpdateTokenOwnershipStatusDto, diff --git a/fireblocks/api/compliance_api.py b/fireblocks/api/compliance_api.py index 942e2c17..2c46130c 100644 --- a/fireblocks/api/compliance_api.py +++ b/fireblocks/api/compliance_api.py @@ -18,18 +18,34 @@ from typing import Any, Dict, List, Optional, Tuple, Union from typing_extensions import Annotated -from pydantic import Field, StrictStr +from pydantic import Field, StrictStr, field_validator from typing import Optional from typing_extensions import Annotated +from fireblocks.models.address_registry_add_vault_opt_outs_request import AddressRegistryAddVaultOptOutsRequest +from fireblocks.models.address_registry_add_vault_opt_outs_response import AddressRegistryAddVaultOptOutsResponse +from fireblocks.models.address_registry_get_vault_opt_out_response import AddressRegistryGetVaultOptOutResponse from fireblocks.models.address_registry_legal_entity import AddressRegistryLegalEntity +from fireblocks.models.address_registry_legal_entity_legacy import AddressRegistryLegalEntityLegacy +from fireblocks.models.address_registry_list_vault_opt_outs_response import AddressRegistryListVaultOptOutsResponse +from fireblocks.models.address_registry_remove_all_vault_opt_outs_response import AddressRegistryRemoveAllVaultOptOutsResponse +from fireblocks.models.address_registry_remove_vault_opt_out_response import AddressRegistryRemoveVaultOptOutResponse +from fireblocks.models.address_registry_tenant_registry_response import AddressRegistryTenantRegistryResponse +from fireblocks.models.address_registry_vault_list_order import AddressRegistryVaultListOrder from fireblocks.models.aml_verdict_manual_request import AmlVerdictManualRequest from fireblocks.models.aml_verdict_manual_response import AmlVerdictManualResponse +from fireblocks.models.assign_vaults_to_legal_entity_request import AssignVaultsToLegalEntityRequest +from fireblocks.models.assign_vaults_to_legal_entity_response import AssignVaultsToLegalEntityResponse from fireblocks.models.compliance_result_full_payload import ComplianceResultFullPayload from fireblocks.models.create_transaction_response import CreateTransactionResponse +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from fireblocks.models.list_legal_entities_response import ListLegalEntitiesResponse +from fireblocks.models.list_vaults_for_registration_response import ListVaultsForRegistrationResponse +from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest from fireblocks.models.screening_configurations_request import ScreeningConfigurationsRequest from fireblocks.models.screening_policy_response import ScreeningPolicyResponse from fireblocks.models.screening_provider_rules_configuration_response import ScreeningProviderRulesConfigurationResponse from fireblocks.models.screening_update_configurations import ScreeningUpdateConfigurations +from fireblocks.models.update_legal_entity_request import UpdateLegalEntityRequest from fireblocks.api_client import ApiClient, RequestSerialized from fireblocks.api_response import ApiResponse @@ -50,6 +66,562 @@ def __init__(self, api_client=None) -> None: self.api_client = api_client + @validate_call + def add_address_registry_vault_opt_outs( + self, + address_registry_add_vault_opt_outs_request: AddressRegistryAddVaultOptOutsRequest, + idempotency_key: Annotated[Optional[StrictStr], Field(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.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AddressRegistryAddVaultOptOutsResponse]]: + """Add vault accounts to the address registry opt-out list + + Adds one or more vault account ids to the workspace opt-out list for the address registry. + + :param address_registry_add_vault_opt_outs_request: (required) + :type address_registry_add_vault_opt_outs_request: AddressRegistryAddVaultOptOutsRequest + :param idempotency_key: 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. + :type idempotency_key: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._add_address_registry_vault_opt_outs_serialize( + address_registry_add_vault_opt_outs_request=address_registry_add_vault_opt_outs_request, + idempotency_key=idempotency_key, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AddressRegistryAddVaultOptOutsResponse", + '400': "AddressRegistryError", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _add_address_registry_vault_opt_outs_serialize( + self, + address_registry_add_vault_opt_outs_request, + idempotency_key, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + if idempotency_key is not None: + _header_params['Idempotency-Key'] = idempotency_key + # process the form parameters + # process the body parameter + if address_registry_add_vault_opt_outs_request is not None: + _body_params = address_registry_add_vault_opt_outs_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/address_registry/vaults', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def assign_vaults_to_legal_entity( + self, + legal_entity_id: Annotated[StrictStr, Field(description="The unique ID of the legal entity registration")], + assign_vaults_to_legal_entity_request: AssignVaultsToLegalEntityRequest, + idempotency_key: Annotated[Optional[StrictStr], Field(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.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AssignVaultsToLegalEntityResponse]]: + """Assign vault accounts to a legal entity + + 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. + + :param legal_entity_id: The unique ID of the legal entity registration (required) + :type legal_entity_id: str + :param assign_vaults_to_legal_entity_request: (required) + :type assign_vaults_to_legal_entity_request: AssignVaultsToLegalEntityRequest + :param idempotency_key: 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. + :type idempotency_key: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + validate_not_empty_string(function_name="assign_vaults_to_legal_entity", param_name="legal_entity_id", param_value=legal_entity_id) + + _param = self._assign_vaults_to_legal_entity_serialize( + legal_entity_id=legal_entity_id, + assign_vaults_to_legal_entity_request=assign_vaults_to_legal_entity_request, + idempotency_key=idempotency_key, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '201': "AssignVaultsToLegalEntityResponse", + '404': "ErrorSchema", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _assign_vaults_to_legal_entity_serialize( + self, + legal_entity_id, + assign_vaults_to_legal_entity_request, + idempotency_key, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if legal_entity_id is not None: + _path_params['legalEntityId'] = legal_entity_id + # process the query parameters + # process the header parameters + if idempotency_key is not None: + _header_params['Idempotency-Key'] = idempotency_key + # process the form parameters + # process the body parameter + if assign_vaults_to_legal_entity_request is not None: + _body_params = assign_vaults_to_legal_entity_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/legal_entities/{legalEntityId}/vaults', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_address_registry_tenant_participation_status( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AddressRegistryTenantRegistryResponse]]: + """Get address registry participation status for the authenticated workspace + + Returns whether the workspace is `OPTED_IN` or `OPTED_OUT` of the address registry. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_address_registry_tenant_participation_status_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AddressRegistryTenantRegistryResponse", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_address_registry_tenant_participation_status_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/address_registry/tenant', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_address_registry_vault_opt_out( + self, + vault_account_id: Annotated[int, Field(strict=True, ge=0, description="Vault account id (non-negative integer).")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AddressRegistryGetVaultOptOutResponse]]: + """Get whether a vault account is opted out of the address registry + + 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. + + :param vault_account_id: Vault account id (non-negative integer). (required) + :type vault_account_id: int + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_address_registry_vault_opt_out_serialize( + vault_account_id=vault_account_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AddressRegistryGetVaultOptOutResponse", + '400': "AddressRegistryError", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_address_registry_vault_opt_out_serialize( + self, + vault_account_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if vault_account_id is not None: + _path_params['vaultAccountId'] = vault_account_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/address_registry/vaults/{vaultAccountId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + @validate_call def get_aml_post_screening_policy( self, @@ -65,11 +637,1350 @@ def get_aml_post_screening_policy( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> Future[ApiResponse[ScreeningPolicyResponse]]: - """AML - View Post-Screening Policy + ) -> Future[ApiResponse[ScreeningPolicyResponse]]: + """AML - View Post-Screening Policy + + Get the post-screening policy for AML. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_aml_post_screening_policy_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "ScreeningPolicyResponse", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_aml_post_screening_policy_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/screening/aml/post_screening_policy', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_aml_screening_policy( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[ScreeningProviderRulesConfigurationResponse]]: + """AML - View Screening Policy + + Get the screening policy for AML. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_aml_screening_policy_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "ScreeningProviderRulesConfigurationResponse", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_aml_screening_policy_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/screening/aml/screening_policy', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_legal_entity( + self, + legal_entity_id: Annotated[StrictStr, Field(description="The unique ID of the legal entity registration")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[LegalEntityRegistration]]: + """Get a legal entity + + Returns details of a specific legal entity registration, including GLEIF data when available.
Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer. + + :param legal_entity_id: The unique ID of the legal entity registration (required) + :type legal_entity_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + validate_not_empty_string(function_name="get_legal_entity", param_name="legal_entity_id", param_value=legal_entity_id) + + _param = self._get_legal_entity_serialize( + legal_entity_id=legal_entity_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "LegalEntityRegistration", + '404': "ErrorSchema", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_legal_entity_serialize( + self, + legal_entity_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if legal_entity_id is not None: + _path_params['legalEntityId'] = legal_entity_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/legal_entities/{legalEntityId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_legal_entity_by_address( + self, + address: Annotated[StrictStr, Field(description="Blockchain address to look up")], + asset: Annotated[Optional[StrictStr], Field(description="Optional asset identifier (this deprecated operation only).")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AddressRegistryLegalEntityLegacy]]: + """(Deprecated) [Deprecated] Look up legal entity by address (query parameter) + + **Deprecated** — use `GET /v1/address_registry/legal_entities/{address}` instead. Here `address` is a **query** parameter; the replacement uses a path segment. The response includes only `companyName`, `countryCode`, and `companyId`. The replacement returns additional fields documented on that operation. Optional **`asset`** is supported here only (not on the replacement path). + + :param address: Blockchain address to look up (required) + :type address: str + :param asset: Optional asset identifier (this deprecated operation only). + :type asset: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + warnings.warn("GET /address_registry/legal_entity is deprecated.", DeprecationWarning) + + validate_not_empty_string(function_name="get_legal_entity_by_address", param_name="address", param_value=address) + + _param = self._get_legal_entity_by_address_serialize( + address=address, + asset=asset, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AddressRegistryLegalEntityLegacy", + '400': "AddressRegistryError", + '403': "AddressRegistryError", + '404': "AddressRegistryError", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_legal_entity_by_address_serialize( + self, + address, + asset, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if address is not None: + + _query_params.append(('address', address)) + + if asset is not None: + + _query_params.append(('asset', asset)) + + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/address_registry/legal_entity', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_legal_entity_for_address( + self, + address: Annotated[StrictStr, Field(description="Blockchain address to look up")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AddressRegistryLegalEntity]]: + """Look up legal entity by blockchain address + + Returns legal entity information for the given blockchain address. URL-encode `{address}` when required. Prefer this operation over the deprecated `GET /v1/address_registry/legal_entity?address=…`, which returns only `companyName`, `countryCode`, and `companyId`. This operation adds verification status, LEI, Travel Rule providers, and contact email (see response properties). + + :param address: Blockchain address to look up (required) + :type address: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + validate_not_empty_string(function_name="get_legal_entity_for_address", param_name="address", param_value=address) + + _param = self._get_legal_entity_for_address_serialize( + address=address, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AddressRegistryLegalEntity", + '400': "AddressRegistryError", + '403': "AddressRegistryError", + '404': "AddressRegistryError", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_legal_entity_for_address_serialize( + self, + address, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if address is not None: + _path_params['address'] = address + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/address_registry/legal_entities/{address}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_post_screening_policy( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[ScreeningPolicyResponse]]: + """Travel Rule - View Post-Screening Policy + + Get the post-screening policy for Travel Rule. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_post_screening_policy_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "ScreeningPolicyResponse", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_post_screening_policy_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/screening/travel_rule/post_screening_policy', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_screening_full_details( + self, + tx_id: Annotated[StrictStr, Field(description="Fireblocks transaction ID of the screened transaction")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[ComplianceResultFullPayload]]: + """Provides all the compliance details for the given screened transaction. + + Provides all the compliance details for the given screened transaction. + + :param tx_id: Fireblocks transaction ID of the screened transaction (required) + :type tx_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + validate_not_empty_string(function_name="get_screening_full_details", param_name="tx_id", param_value=tx_id) + + _param = self._get_screening_full_details_serialize( + tx_id=tx_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "ComplianceResultFullPayload", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_screening_full_details_serialize( + self, + tx_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if tx_id is not None: + _path_params['txId'] = tx_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/screening/transaction/{txId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def get_screening_policy( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[ScreeningProviderRulesConfigurationResponse]]: + """Travel Rule - View Screening Policy + + Get the screening policy for Travel Rule. + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_screening_policy_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "ScreeningProviderRulesConfigurationResponse", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_screening_policy_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/screening/travel_rule/screening_policy', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def list_address_registry_vault_opt_outs( + self, + page_cursor: Annotated[Optional[StrictStr], Field(description="Opaque cursor from a previous response (`next` or `prev`). Omit for the first page.")] = None, + page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Page size. Default **50** if omitted; must be between **1** and **100**.")] = None, + order: Annotated[Optional[AddressRegistryVaultListOrder], Field(description="Sort direction by vault account id. Omit for ascending; use the enum value for descending.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[AddressRegistryListVaultOptOutsResponse]]: + """List vault-level address registry opt-outs (paginated) + + 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. + + :param page_cursor: Opaque cursor from a previous response (`next` or `prev`). Omit for the first page. + :type page_cursor: str + :param page_size: Page size. Default **50** if omitted; must be between **1** and **100**. + :type page_size: int + :param order: Sort direction by vault account id. Omit for ascending; use the enum value for descending. + :type order: AddressRegistryVaultListOrder + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._list_address_registry_vault_opt_outs_serialize( + page_cursor=page_cursor, + page_size=page_size, + order=order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "AddressRegistryListVaultOptOutsResponse", + '400': "AddressRegistryError", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _list_address_registry_vault_opt_outs_serialize( + self, + page_cursor, + page_size, + order, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if page_cursor is not None: + + _query_params.append(('pageCursor', page_cursor)) + + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if order is not None: + + _query_params.append(('order', order.value)) + + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/address_registry/vaults', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def list_legal_entities( + self, + vault_account_id: Annotated[Optional[StrictStr], Field(description="The ID of the vault account. When provided, returns the legal entity associated with that vault account and pagination parameters are ignored.")] = None, + page_cursor: Annotated[Optional[StrictStr], Field(description="Cursor string returned in `next` or `prev` of a previous response. Ignored when `vaultAccountId` is provided.")] = None, + page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Maximum number of registrations to return. Ignored when `vaultAccountId` is provided.")] = None, + sort_by: Annotated[Optional[StrictStr], Field(description="Field to sort results by. Ignored when `vaultAccountId` is provided.")] = None, + order: Annotated[Optional[StrictStr], Field(description="Sort order. Ignored when `vaultAccountId` is provided.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[ListLegalEntitiesResponse]]: + """List legal entities (Paginated) + + 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. + + :param vault_account_id: The ID of the vault account. When provided, returns the legal entity associated with that vault account and pagination parameters are ignored. + :type vault_account_id: str + :param page_cursor: Cursor string returned in `next` or `prev` of a previous response. Ignored when `vaultAccountId` is provided. + :type page_cursor: str + :param page_size: Maximum number of registrations to return. Ignored when `vaultAccountId` is provided. + :type page_size: int + :param sort_by: Field to sort results by. Ignored when `vaultAccountId` is provided. + :type sort_by: str + :param order: Sort order. Ignored when `vaultAccountId` is provided. + :type order: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._list_legal_entities_serialize( + vault_account_id=vault_account_id, + page_cursor=page_cursor, + page_size=page_size, + sort_by=sort_by, + order=order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "ListLegalEntitiesResponse", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _list_legal_entities_serialize( + self, + vault_account_id, + page_cursor, + page_size, + sort_by, + order, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if vault_account_id is not None: + + _query_params.append(('vaultAccountId', vault_account_id)) + + if page_cursor is not None: + + _query_params.append(('pageCursor', page_cursor)) + + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if sort_by is not None: + + _query_params.append(('sortBy', sort_by)) + + if order is not None: + + _query_params.append(('order', order)) + + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/legal_entities', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + def list_vaults_for_legal_entity( + self, + legal_entity_id: Annotated[StrictStr, Field(description="The unique ID of the legal entity registration")], + page_cursor: Annotated[Optional[StrictStr], Field(description="Cursor string returned in `next` or `prev` of a previous response")] = None, + page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Maximum number of registrations to return")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[ListVaultsForRegistrationResponse]]: + """List vault accounts for a legal entity (Paginated) - Get the post-screening policy for AML. + 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. + :param legal_entity_id: The unique ID of the legal entity registration (required) + :type legal_entity_id: str + :param page_cursor: Cursor string returned in `next` or `prev` of a previous response + :type page_cursor: str + :param page_size: Maximum number of registrations to return + :type page_size: int :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -92,8 +2003,12 @@ def get_aml_post_screening_policy( :return: Returns the result object. """ # noqa: E501 + validate_not_empty_string(function_name="list_vaults_for_legal_entity", param_name="legal_entity_id", param_value=legal_entity_id) - _param = self._get_aml_post_screening_policy_serialize( + _param = self._list_vaults_for_legal_entity_serialize( + legal_entity_id=legal_entity_id, + page_cursor=page_cursor, + page_size=page_size, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -101,7 +2016,9 @@ def get_aml_post_screening_policy( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "ScreeningPolicyResponse", + '200': "ListVaultsForRegistrationResponse", + '404': "ErrorSchema", + 'default': "ErrorSchema", } return self.api_client.call_api( @@ -110,8 +2027,11 @@ def get_aml_post_screening_policy( _response_types_map=_response_types_map, ) - def _get_aml_post_screening_policy_serialize( + def _list_vaults_for_legal_entity_serialize( self, + legal_entity_id, + page_cursor, + page_size, _request_auth, _content_type, _headers, @@ -133,7 +2053,17 @@ def _get_aml_post_screening_policy_serialize( _body_params: Optional[bytes] = None # process the path parameters + if legal_entity_id is not None: + _path_params['legalEntityId'] = legal_entity_id # process the query parameters + if page_cursor is not None: + + _query_params.append(('pageCursor', page_cursor)) + + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + # process the header parameters # process the form parameters # process the body parameter @@ -154,7 +2084,7 @@ def _get_aml_post_screening_policy_serialize( return self.api_client.param_serialize( method='GET', - resource_path='/screening/aml/post_screening_policy', + resource_path='/legal_entities/{legalEntityId}/vaults', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -171,8 +2101,9 @@ def _get_aml_post_screening_policy_serialize( @validate_call - def get_aml_screening_policy( + def opt_in_address_registry_tenant( self, + idempotency_key: Annotated[Optional[StrictStr], Field(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.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -185,11 +2116,13 @@ def get_aml_screening_policy( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> Future[ApiResponse[ScreeningProviderRulesConfigurationResponse]]: - """AML - View Screening Policy + ) -> Future[ApiResponse[AddressRegistryTenantRegistryResponse]]: + """Opt the workspace in to the address registry - Get the screening policy for AML. + Opts the workspace in. No request body. Response uses the same JSON shape as GET; status is OPTED_IN. + :param idempotency_key: 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. + :type idempotency_key: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -213,7 +2146,8 @@ def get_aml_screening_policy( """ # noqa: E501 - _param = self._get_aml_screening_policy_serialize( + _param = self._opt_in_address_registry_tenant_serialize( + idempotency_key=idempotency_key, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -221,7 +2155,8 @@ def get_aml_screening_policy( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "ScreeningProviderRulesConfigurationResponse", + '200': "AddressRegistryTenantRegistryResponse", + 'default': "ErrorSchema", } return self.api_client.call_api( @@ -230,8 +2165,9 @@ def get_aml_screening_policy( _response_types_map=_response_types_map, ) - def _get_aml_screening_policy_serialize( + def _opt_in_address_registry_tenant_serialize( self, + idempotency_key, _request_auth, _content_type, _headers, @@ -255,6 +2191,8 @@ def _get_aml_screening_policy_serialize( # process the path parameters # process the query parameters # process the header parameters + if idempotency_key is not None: + _header_params['Idempotency-Key'] = idempotency_key # process the form parameters # process the body parameter @@ -273,8 +2211,8 @@ def _get_aml_screening_policy_serialize( ] return self.api_client.param_serialize( - method='GET', - resource_path='/screening/aml/screening_policy', + method='POST', + resource_path='/address_registry/tenant', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -291,10 +2229,8 @@ def _get_aml_screening_policy_serialize( @validate_call - def get_legal_entity_by_address( + def opt_out_address_registry_tenant( self, - address: Annotated[StrictStr, Field(description="Blockchain address to look up")], - asset: Annotated[Optional[StrictStr], Field(description="Asset ID (e.g. ETH, BTC). Optional.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -307,15 +2243,11 @@ def get_legal_entity_by_address( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> Future[ApiResponse[AddressRegistryLegalEntity]]: - """Look up legal entity by address and asset + ) -> Future[ApiResponse[AddressRegistryTenantRegistryResponse]]: + """Opt the workspace out of the address registry - Returns the legal entity (company name, jurisdiction, companyId) for the given blockchain address and optional asset. Both the requester and the owner of the address must be opted in to the address registry. + Opts the workspace out. No request body. Response uses the same JSON shape as GET; status is OPTED_OUT. - :param address: Blockchain address to look up (required) - :type address: str - :param asset: Asset ID (e.g. ETH, BTC). Optional. - :type asset: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -338,11 +2270,8 @@ def get_legal_entity_by_address( :return: Returns the result object. """ # noqa: E501 - validate_not_empty_string(function_name="get_legal_entity_by_address", param_name="address", param_value=address) - _param = self._get_legal_entity_by_address_serialize( - address=address, - asset=asset, + _param = self._opt_out_address_registry_tenant_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -350,10 +2279,7 @@ def get_legal_entity_by_address( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "AddressRegistryLegalEntity", - '400': "AddressRegistryError", - '403': "AddressRegistryError", - '404': "AddressRegistryError", + '200': "AddressRegistryTenantRegistryResponse", 'default': "ErrorSchema", } @@ -363,10 +2289,8 @@ def get_legal_entity_by_address( _response_types_map=_response_types_map, ) - def _get_legal_entity_by_address_serialize( + def _opt_out_address_registry_tenant_serialize( self, - address, - asset, _request_auth, _content_type, _headers, @@ -389,14 +2313,6 @@ def _get_legal_entity_by_address_serialize( # process the path parameters # process the query parameters - if address is not None: - - _query_params.append(('address', address)) - - if asset is not None: - - _query_params.append(('asset', asset)) - # process the header parameters # process the form parameters # process the body parameter @@ -416,8 +2332,8 @@ def _get_legal_entity_by_address_serialize( ] return self.api_client.param_serialize( - method='GET', - resource_path='/address_registry/legal_entity', + method='DELETE', + resource_path='/address_registry/tenant', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -434,8 +2350,10 @@ def _get_legal_entity_by_address_serialize( @validate_call - def get_post_screening_policy( + def register_legal_entity( self, + register_legal_entity_request: RegisterLegalEntityRequest, + idempotency_key: Annotated[Optional[StrictStr], Field(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.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -448,11 +2366,15 @@ def get_post_screening_policy( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> Future[ApiResponse[ScreeningPolicyResponse]]: - """Travel Rule - View Post-Screening Policy + ) -> Future[ApiResponse[LegalEntityRegistration]]: + """Register a new legal entity - Get the post-screening policy for Travel Rule. + 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. + :param register_legal_entity_request: (required) + :type register_legal_entity_request: RegisterLegalEntityRequest + :param idempotency_key: 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. + :type idempotency_key: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -476,7 +2398,9 @@ def get_post_screening_policy( """ # noqa: E501 - _param = self._get_post_screening_policy_serialize( + _param = self._register_legal_entity_serialize( + register_legal_entity_request=register_legal_entity_request, + idempotency_key=idempotency_key, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -484,7 +2408,12 @@ def get_post_screening_policy( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "ScreeningPolicyResponse", + '201': "LegalEntityRegistration", + '400': "ErrorSchema", + '404': "ErrorSchema", + '409': "ErrorSchema", + '500': "ErrorSchema", + 'default': "ErrorSchema", } return self.api_client.call_api( @@ -493,8 +2422,10 @@ def get_post_screening_policy( _response_types_map=_response_types_map, ) - def _get_post_screening_policy_serialize( + def _register_legal_entity_serialize( self, + register_legal_entity_request, + idempotency_key, _request_auth, _content_type, _headers, @@ -518,8 +2449,12 @@ def _get_post_screening_policy_serialize( # process the path parameters # process the query parameters # process the header parameters + if idempotency_key is not None: + _header_params['Idempotency-Key'] = idempotency_key # process the form parameters # process the body parameter + if register_legal_entity_request is not None: + _body_params = register_legal_entity_request # set the HTTP header `Accept` @@ -530,14 +2465,27 @@ def _get_post_screening_policy_serialize( ] ) + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type # authentication setting _auth_settings: List[str] = [ ] return self.api_client.param_serialize( - method='GET', - resource_path='/screening/travel_rule/post_screening_policy', + method='POST', + resource_path='/legal_entities', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -554,9 +2502,9 @@ def _get_post_screening_policy_serialize( @validate_call - def get_screening_full_details( + def remove_address_registry_vault_opt_out( self, - tx_id: Annotated[StrictStr, Field(description="Fireblocks transaction ID of the screened transaction")], + vault_account_id: Annotated[int, Field(strict=True, ge=0, description="Vault account id (non-negative integer).")], _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -569,13 +2517,13 @@ def get_screening_full_details( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> Future[ApiResponse[ComplianceResultFullPayload]]: - """Provides all the compliance details for the given screened transaction. + ) -> Future[ApiResponse[AddressRegistryRemoveVaultOptOutResponse]]: + """Remove a single vault account from the address registry opt-out list - Provides all the compliance details for the given screened transaction. + 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`. - :param tx_id: Fireblocks transaction ID of the screened transaction (required) - :type tx_id: str + :param vault_account_id: Vault account id (non-negative integer). (required) + :type vault_account_id: int :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -598,10 +2546,9 @@ def get_screening_full_details( :return: Returns the result object. """ # noqa: E501 - validate_not_empty_string(function_name="get_screening_full_details", param_name="tx_id", param_value=tx_id) - _param = self._get_screening_full_details_serialize( - tx_id=tx_id, + _param = self._remove_address_registry_vault_opt_out_serialize( + vault_account_id=vault_account_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -609,7 +2556,8 @@ def get_screening_full_details( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "ComplianceResultFullPayload", + '200': "AddressRegistryRemoveVaultOptOutResponse", + '400': "AddressRegistryError", 'default': "ErrorSchema", } @@ -619,9 +2567,9 @@ def get_screening_full_details( _response_types_map=_response_types_map, ) - def _get_screening_full_details_serialize( + def _remove_address_registry_vault_opt_out_serialize( self, - tx_id, + vault_account_id, _request_auth, _content_type, _headers, @@ -643,8 +2591,8 @@ def _get_screening_full_details_serialize( _body_params: Optional[bytes] = None # process the path parameters - if tx_id is not None: - _path_params['txId'] = tx_id + if vault_account_id is not None: + _path_params['vaultAccountId'] = vault_account_id # process the query parameters # process the header parameters # process the form parameters @@ -665,8 +2613,8 @@ def _get_screening_full_details_serialize( ] return self.api_client.param_serialize( - method='GET', - resource_path='/screening/transaction/{txId}', + method='DELETE', + resource_path='/address_registry/vaults/{vaultAccountId}', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -683,7 +2631,7 @@ def _get_screening_full_details_serialize( @validate_call - def get_screening_policy( + def remove_all_address_registry_vault_opt_outs( self, _request_timeout: Union[ None, @@ -697,10 +2645,10 @@ def get_screening_policy( _content_type: Optional[StrictStr] = None, _headers: Optional[Dict[StrictStr, Any]] = None, _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> Future[ApiResponse[ScreeningProviderRulesConfigurationResponse]]: - """Travel Rule - View Screening Policy + ) -> Future[ApiResponse[AddressRegistryRemoveAllVaultOptOutsResponse]]: + """Remove all vault-level address registry opt-outs for the workspace - Get the screening policy for Travel Rule. + Removes all vault accounts from the workspace opt-out list. :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -725,7 +2673,7 @@ def get_screening_policy( """ # noqa: E501 - _param = self._get_screening_policy_serialize( + _param = self._remove_all_address_registry_vault_opt_outs_serialize( _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -733,7 +2681,8 @@ def get_screening_policy( ) _response_types_map: Dict[str, Optional[str]] = { - '200': "ScreeningProviderRulesConfigurationResponse", + '200': "AddressRegistryRemoveAllVaultOptOutsResponse", + 'default': "ErrorSchema", } return self.api_client.call_api( @@ -742,7 +2691,7 @@ def get_screening_policy( _response_types_map=_response_types_map, ) - def _get_screening_policy_serialize( + def _remove_all_address_registry_vault_opt_outs_serialize( self, _request_auth, _content_type, @@ -785,8 +2734,8 @@ def _get_screening_policy_serialize( ] return self.api_client.param_serialize( - method='GET', - resource_path='/screening/travel_rule/screening_policy', + method='DELETE', + resource_path='/address_registry/vaults', path_params=_path_params, query_params=_query_params, header_params=_header_params, @@ -1216,6 +3165,164 @@ def _update_aml_screening_configuration_serialize( + @validate_call + def update_legal_entity( + self, + legal_entity_id: Annotated[StrictStr, Field(description="The unique ID of the legal entity registration")], + update_legal_entity_request: UpdateLegalEntityRequest, + idempotency_key: Annotated[Optional[StrictStr], Field(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.")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[LegalEntityRegistration]]: + """Update legal entity + + 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. + + :param legal_entity_id: The unique ID of the legal entity registration (required) + :type legal_entity_id: str + :param update_legal_entity_request: (required) + :type update_legal_entity_request: UpdateLegalEntityRequest + :param idempotency_key: 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. + :type idempotency_key: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + validate_not_empty_string(function_name="update_legal_entity", param_name="legal_entity_id", param_value=legal_entity_id) + + _param = self._update_legal_entity_serialize( + legal_entity_id=legal_entity_id, + update_legal_entity_request=update_legal_entity_request, + idempotency_key=idempotency_key, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "LegalEntityRegistration", + '400': "ErrorSchema", + '404': "ErrorSchema", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _update_legal_entity_serialize( + self, + legal_entity_id, + update_legal_entity_request, + idempotency_key, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if legal_entity_id is not None: + _path_params['legalEntityId'] = legal_entity_id + # process the query parameters + # process the header parameters + if idempotency_key is not None: + _header_params['Idempotency-Key'] = idempotency_key + # process the form parameters + # process the body parameter + if update_legal_entity_request is not None: + _body_params = update_legal_entity_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='PUT', + resource_path='/legal_entities/{legalEntityId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + @validate_call def update_screening_configuration( self, diff --git a/fireblocks/api/staking_api.py b/fireblocks/api/staking_api.py index cfb1fd11..4f3f21dc 100644 --- a/fireblocks/api/staking_api.py +++ b/fireblocks/api/staking_api.py @@ -33,6 +33,7 @@ from fireblocks.models.split_response import SplitResponse from fireblocks.models.stake_request import StakeRequest from fireblocks.models.stake_response import StakeResponse +from fireblocks.models.staking_positions_paginated_response import StakingPositionsPaginatedResponse from fireblocks.models.staking_provider import StakingProvider from fireblocks.models.unstake_request import UnstakeRequest from fireblocks.models.withdraw_request import WithdrawRequest @@ -378,7 +379,7 @@ def consolidate( ) -> Future[ApiResponse[MergeStakeAccountsResponse]]: """Consolidate staking positions (ETH validator consolidation) - 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 validator provider and same vault account. 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. + 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 funding vaults account (i.e. same withdrawals 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. :param chain_descriptor: Protocol identifier for the staking operation (e.g., ETH). (required) :type chain_descriptor: str @@ -522,6 +523,7 @@ def _consolidate_serialize( def get_all_delegations( self, chain_descriptor: Annotated[Optional[ChainDescriptor], Field(description="Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned.")] = None, + vault_account_id: Annotated[Optional[StrictStr], Field(description="Filter positions by vault account ID.")] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -541,6 +543,8 @@ def get_all_delegations( :param chain_descriptor: Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned. :type chain_descriptor: ChainDescriptor + :param vault_account_id: Filter positions by vault account ID. + :type vault_account_id: str :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -566,6 +570,7 @@ def get_all_delegations( _param = self._get_all_delegations_serialize( chain_descriptor=chain_descriptor, + vault_account_id=vault_account_id, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -591,6 +596,7 @@ def get_all_delegations( def _get_all_delegations_serialize( self, chain_descriptor, + vault_account_id, _request_auth, _content_type, _headers, @@ -617,6 +623,10 @@ def _get_all_delegations_serialize( _query_params.append(('chainDescriptor', chain_descriptor.value)) + if vault_account_id is not None: + + _query_params.append(('vaultAccountId', vault_account_id)) + # process the header parameters # process the form parameters # process the body parameter @@ -1045,6 +1055,177 @@ def _get_delegation_by_id_serialize( + @validate_call + def get_positions( + self, + page_size: Annotated[int, Field(le=100, strict=True, ge=1, 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.")], + chain_descriptor: Annotated[Optional[ChainDescriptor], Field(description="Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned.")] = None, + vault_account_id: Annotated[Optional[StrictStr], Field(description="Filter positions by Fireblocks vault account ID. If omitted, positions across all vault accounts are returned.")] = None, + page_cursor: Annotated[Optional[StrictStr], Field(description="Cursor for the next page of results. Use the value from the 'next' field in the previous response.")] = None, + order: Annotated[Optional[StrictStr], Field(description="ASC / DESC ordering (default DESC)")] = None, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[StakingPositionsPaginatedResponse]]: + """List staking positions (Paginated) + + 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. + + :param page_size: 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. (required) + :type page_size: int + :param chain_descriptor: Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA}). If omitted, positions across all supported chains are returned. + :type chain_descriptor: ChainDescriptor + :param vault_account_id: Filter positions by Fireblocks vault account ID. If omitted, positions across all vault accounts are returned. + :type vault_account_id: str + :param page_cursor: Cursor for the next page of results. Use the value from the 'next' field in the previous response. + :type page_cursor: str + :param order: ASC / DESC ordering (default DESC) + :type order: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + + _param = self._get_positions_serialize( + page_size=page_size, + chain_descriptor=chain_descriptor, + vault_account_id=vault_account_id, + page_cursor=page_cursor, + order=order, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "StakingPositionsPaginatedResponse", + '400': "ErrorSchema", + '403': "ErrorSchema", + '404': "ErrorSchema", + '429': "ErrorSchema", + '500': "ErrorSchema", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_positions_serialize( + self, + page_size, + chain_descriptor, + vault_account_id, + page_cursor, + order, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + if chain_descriptor is not None: + + _query_params.append(('chainDescriptor', chain_descriptor.value)) + + if vault_account_id is not None: + + _query_params.append(('vaultAccountId', vault_account_id)) + + if page_size is not None: + + _query_params.append(('pageSize', page_size)) + + if page_cursor is not None: + + _query_params.append(('pageCursor', page_cursor)) + + if order is not None: + + _query_params.append(('order', order)) + + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/staking/positions_paginated', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + @validate_call def get_providers( self, diff --git a/fireblocks/api/tr_link_api.py b/fireblocks/api/tr_link_api.py index 115d11aa..78215b59 100644 --- a/fireblocks/api/tr_link_api.py +++ b/fireblocks/api/tr_link_api.py @@ -709,7 +709,7 @@ def create_tr_link_integration( ) -> Future[ApiResponse[TRLinkCustomerIntegrationResponse]]: """Create customer integration - 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. + 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. :param tr_link_create_integration_request: (required) :type tr_link_create_integration_request: TRLinkCreateIntegrationRequest @@ -1141,7 +1141,7 @@ def disconnect_tr_link_integration( ) -> Future[ApiResponse[None]]: """Disconnect customer integration - Disconnects a customer integration by removing stored credentials. The integration record is deleted and cannot be recovered. + 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. :param customer_integration_id: Customer integration unique identifier (required) :type customer_integration_id: str diff --git a/fireblocks/api/trading_beta_api.py b/fireblocks/api/trading_beta_api.py index 5abb1807..bd796863 100644 --- a/fireblocks/api/trading_beta_api.py +++ b/fireblocks/api/trading_beta_api.py @@ -28,6 +28,7 @@ from fireblocks.models.order_status import OrderStatus from fireblocks.models.providers_list_response import ProvidersListResponse from fireblocks.models.quotes_response import QuotesResponse +from fireblocks.models.trading_provider_details import TradingProviderDetails from fireblocks.api_client import ApiClient, RequestSerialized from fireblocks.api_response import ApiResponse @@ -697,6 +698,140 @@ def _get_orders_serialize( + @validate_call + def get_trading_provider_by_id( + self, + provider_id: Annotated[str, Field(min_length=1, strict=True, description="The unique identifier of the provider.")], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> Future[ApiResponse[TradingProviderDetails]]: + """Get trading provider by ID + + Retrieve detailed information about a specific provider including its full manifest with order/quote requirements. **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 provider_id: The unique identifier of the provider. (required) + :type provider_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + validate_not_empty_string(function_name="get_trading_provider_by_id", param_name="provider_id", param_value=provider_id) + + _param = self._get_trading_provider_by_id_serialize( + provider_id=provider_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "TradingProviderDetails", + '401': "TradingErrorSchema", + '403': "TradingErrorSchema", + '404': "TradingErrorSchema", + '429': "TradingErrorSchema", + '5XX': "TradingErrorSchema", + 'default': "ErrorSchema", + } + + return self.api_client.call_api( + *_param, + _request_timeout=_request_timeout, + _response_types_map=_response_types_map, + ) + + def _get_trading_provider_by_id_serialize( + self, + provider_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if provider_id is not None: + _path_params['providerId'] = provider_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/trading/providers/{providerId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + @validate_call def get_trading_providers( self, diff --git a/fireblocks/configuration.py b/fireblocks/configuration.py index 9ea23cd7..3f2e5962 100644 --- a/fireblocks/configuration.py +++ b/fireblocks/configuration.py @@ -552,7 +552,7 @@ def to_debug_report(self) -> str: "OS: {env}\n" "Python Version: {pyversion}\n" "Version of the API: 1.6.2\n" - "SDK Package Version: 15.0.0".format(env=sys.platform, pyversion=sys.version) + "SDK Package Version: 0.0.0".format(env=sys.platform, pyversion=sys.version) ) def get_host_settings(self) -> List[HostSetting]: diff --git a/fireblocks/models/__init__.py b/fireblocks/models/__init__.py index 1ac4e333..54a16e4e 100644 --- a/fireblocks/models/__init__.py +++ b/fireblocks/models/__init__.py @@ -26,7 +26,8 @@ from fireblocks.models.account_access import AccountAccess from fireblocks.models.account_base import AccountBase from fireblocks.models.account_based_access_provider import AccountBasedAccessProvider -from fireblocks.models.account_based_access_provider_details import AccountBasedAccessProviderDetails +from fireblocks.models.account_based_access_provider_info import AccountBasedAccessProviderInfo +from fireblocks.models.account_based_provider_details import AccountBasedProviderDetails from fireblocks.models.account_config import AccountConfig from fireblocks.models.account_holder_details import AccountHolderDetails from fireblocks.models.account_identifier import AccountIdentifier @@ -52,8 +53,20 @@ from fireblocks.models.address_balance_item_dto import AddressBalanceItemDto from fireblocks.models.address_balance_paged_response import AddressBalancePagedResponse from fireblocks.models.address_not_available_error import AddressNotAvailableError +from fireblocks.models.address_registry_add_vault_opt_outs_request import AddressRegistryAddVaultOptOutsRequest +from fireblocks.models.address_registry_add_vault_opt_outs_request_vault_account_ids_inner import AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner +from fireblocks.models.address_registry_add_vault_opt_outs_response import AddressRegistryAddVaultOptOutsResponse from fireblocks.models.address_registry_error import AddressRegistryError +from fireblocks.models.address_registry_get_vault_opt_out_response import AddressRegistryGetVaultOptOutResponse from fireblocks.models.address_registry_legal_entity import AddressRegistryLegalEntity +from fireblocks.models.address_registry_legal_entity_legacy import AddressRegistryLegalEntityLegacy +from fireblocks.models.address_registry_list_vault_opt_outs_response import AddressRegistryListVaultOptOutsResponse +from fireblocks.models.address_registry_remove_all_vault_opt_outs_response import AddressRegistryRemoveAllVaultOptOutsResponse +from fireblocks.models.address_registry_remove_vault_opt_out_response import AddressRegistryRemoveVaultOptOutResponse +from fireblocks.models.address_registry_tenant_registry_response import AddressRegistryTenantRegistryResponse +from fireblocks.models.address_registry_travel_rule_provider import AddressRegistryTravelRuleProvider +from fireblocks.models.address_registry_vault_list_order import AddressRegistryVaultListOrder +from fireblocks.models.address_registry_vault_opt_out_item import AddressRegistryVaultOptOutItem from fireblocks.models.alert_exposure_type_enum import AlertExposureTypeEnum from fireblocks.models.alert_level_enum import AlertLevelEnum from fireblocks.models.aml_alert import AmlAlert @@ -104,10 +117,11 @@ from fireblocks.models.asset_price_response import AssetPriceResponse from fireblocks.models.asset_response import AssetResponse from fireblocks.models.asset_scope import AssetScope -from fireblocks.models.asset_type_enum import AssetTypeEnum from fireblocks.models.asset_type_response import AssetTypeResponse from fireblocks.models.asset_types_config_inner import AssetTypesConfigInner from fireblocks.models.asset_wallet import AssetWallet +from fireblocks.models.assign_vaults_to_legal_entity_request import AssignVaultsToLegalEntityRequest +from fireblocks.models.assign_vaults_to_legal_entity_response import AssignVaultsToLegalEntityResponse from fireblocks.models.audit_log_data import AuditLogData from fireblocks.models.auditor_data import AuditorData from fireblocks.models.authorization_groups import AuthorizationGroups @@ -133,7 +147,6 @@ from fireblocks.models.callback_handler import CallbackHandler from fireblocks.models.callback_handler_request import CallbackHandlerRequest from fireblocks.models.cancel_transaction_response import CancelTransactionResponse -from fireblocks.models.capability import Capability from fireblocks.models.chain_descriptor import ChainDescriptor from fireblocks.models.chain_info_response import ChainInfoResponse from fireblocks.models.channel_dvn_config_with_confirmations import ChannelDvnConfigWithConfirmations @@ -286,7 +299,8 @@ from fireblocks.models.destination_transfer_peer_path_response import DestinationTransferPeerPathResponse from fireblocks.models.direct_access import DirectAccess from fireblocks.models.direct_access_provider import DirectAccessProvider -from fireblocks.models.direct_access_provider_details import DirectAccessProviderDetails +from fireblocks.models.direct_access_provider_info import DirectAccessProviderInfo +from fireblocks.models.direct_provider_details import DirectProviderDetails from fireblocks.models.disbursement_amount_instruction import DisbursementAmountInstruction from fireblocks.models.disbursement_config_operation import DisbursementConfigOperation from fireblocks.models.disbursement_instruction import DisbursementInstruction @@ -352,6 +366,7 @@ from fireblocks.models.execution_operation_status import ExecutionOperationStatus from fireblocks.models.execution_request_base_details import ExecutionRequestBaseDetails from fireblocks.models.execution_request_details import ExecutionRequestDetails +from fireblocks.models.execution_request_details_type import ExecutionRequestDetailsType from fireblocks.models.execution_response_base_details import ExecutionResponseBaseDetails from fireblocks.models.execution_response_details import ExecutionResponseDetails from fireblocks.models.execution_screening_operation import ExecutionScreeningOperation @@ -418,6 +433,7 @@ from fireblocks.models.get_validation_key_response_dto import GetValidationKeyResponseDto from fireblocks.models.get_whitelist_ip_addresses_response import GetWhitelistIpAddressesResponse from fireblocks.models.get_workspace_status_response import GetWorkspaceStatusResponse +from fireblocks.models.gleif_data import GleifData from fireblocks.models.http_contract_does_not_exist_error import HttpContractDoesNotExistError from fireblocks.models.iban_address import IbanAddress from fireblocks.models.iban_destination import IbanDestination @@ -471,14 +487,23 @@ from fireblocks.models.legacy_publish_draft_request import LegacyPublishDraftRequest from fireblocks.models.legacy_publish_result import LegacyPublishResult from fireblocks.models.legacy_src_or_dest_attributes_inner import LegacySrcOrDestAttributesInner +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from fireblocks.models.lei_status import LeiStatus from fireblocks.models.linked_tokens_count import LinkedTokensCount from fireblocks.models.list_assets_response import ListAssetsResponse from fireblocks.models.list_blockchains_response import ListBlockchainsResponse +from fireblocks.models.list_legal_entities_response import ListLegalEntitiesResponse from fireblocks.models.list_owned_collections_response import ListOwnedCollectionsResponse from fireblocks.models.list_owned_tokens_response import ListOwnedTokensResponse +from fireblocks.models.list_vaults_for_registration_response import ListVaultsForRegistrationResponse from fireblocks.models.local_bank_transfer_africa_address import LocalBankTransferAfricaAddress from fireblocks.models.local_bank_transfer_africa_destination import LocalBankTransferAfricaDestination from fireblocks.models.manifest import Manifest +from fireblocks.models.manifest_base import ManifestBase +from fireblocks.models.manifest_order import ManifestOrder +from fireblocks.models.manifest_order_info import ManifestOrderInfo +from fireblocks.models.manifest_quote import ManifestQuote +from fireblocks.models.manifest_quote_info import ManifestQuoteInfo from fireblocks.models.market_execution_request_details import MarketExecutionRequestDetails from fireblocks.models.market_execution_response_details import MarketExecutionResponseDetails from fireblocks.models.market_requote_request_details import MarketRequoteRequestDetails @@ -585,6 +610,7 @@ from fireblocks.models.policy_validation import PolicyValidation from fireblocks.models.policy_verdict_action_enum import PolicyVerdictActionEnum from fireblocks.models.policy_verdict_action_enum2 import PolicyVerdictActionEnum2 +from fireblocks.models.position import Position from fireblocks.models.postal_address import PostalAddress from fireblocks.models.pre_screening import PreScreening from fireblocks.models.prefunded_settlement import PrefundedSettlement @@ -612,6 +638,7 @@ from fireblocks.models.read_call_function_dto_abi_function import ReadCallFunctionDtoAbiFunction from fireblocks.models.recipient_handle import RecipientHandle from fireblocks.models.redeem_funds_to_linked_dda_response import RedeemFundsToLinkedDDAResponse +from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest from fireblocks.models.register_new_asset_request import RegisterNewAssetRequest from fireblocks.models.reissue_multichain_token_request import ReissueMultichainTokenRequest from fireblocks.models.related_request import RelatedRequest @@ -657,7 +684,6 @@ from fireblocks.models.screening_operation_type import ScreeningOperationType from fireblocks.models.screening_policy_response import ScreeningPolicyResponse from fireblocks.models.screening_provider_rules_configuration_response import ScreeningProviderRulesConfigurationResponse -from fireblocks.models.screening_risk_level_enum import ScreeningRiskLevelEnum from fireblocks.models.screening_tr_link_amount import ScreeningTRLinkAmount from fireblocks.models.screening_tr_link_missing_trm_decision import ScreeningTRLinkMissingTrmDecision from fireblocks.models.screening_tr_link_missing_trm_rule import ScreeningTRLinkMissingTrmRule @@ -701,6 +727,7 @@ from fireblocks.models.settlement_request_body import SettlementRequestBody from fireblocks.models.settlement_response import SettlementResponse from fireblocks.models.settlement_source_account import SettlementSourceAccount +from fireblocks.models.settlement_type_enum import SettlementTypeEnum from fireblocks.models.side import Side from fireblocks.models.signed_message import SignedMessage from fireblocks.models.signed_message_signature import SignedMessageSignature @@ -751,6 +778,7 @@ from fireblocks.models.st_eth_blockchain_data import StEthBlockchainData from fireblocks.models.stake_request import StakeRequest from fireblocks.models.stake_response import StakeResponse +from fireblocks.models.staking_positions_paginated_response import StakingPositionsPaginatedResponse from fireblocks.models.staking_provider import StakingProvider from fireblocks.models.status import Status from fireblocks.models.stellar_ripple_create_params_dto import StellarRippleCreateParamsDto @@ -867,6 +895,7 @@ from fireblocks.models.trading_account_type import TradingAccountType from fireblocks.models.trading_error_schema import TradingErrorSchema from fireblocks.models.trading_provider import TradingProvider +from fireblocks.models.trading_provider_details import TradingProviderDetails from fireblocks.models.transaction import Transaction from fireblocks.models.transaction_direction import TransactionDirection from fireblocks.models.transaction_fee import TransactionFee @@ -924,6 +953,7 @@ from fireblocks.models.travel_rule_pii_ivms import TravelRulePiiIVMS from fireblocks.models.travel_rule_policy_rule_response import TravelRulePolicyRuleResponse from fireblocks.models.travel_rule_prescreening_rule import TravelRulePrescreeningRule +from fireblocks.models.travel_rule_provider import TravelRuleProvider from fireblocks.models.travel_rule_result import TravelRuleResult from fireblocks.models.travel_rule_status_enum import TravelRuleStatusEnum from fireblocks.models.travel_rule_transaction_blockchain_info import TravelRuleTransactionBlockchainInfo @@ -960,6 +990,7 @@ from fireblocks.models.update_callback_handler_request import UpdateCallbackHandlerRequest from fireblocks.models.update_callback_handler_response import UpdateCallbackHandlerResponse from fireblocks.models.update_draft_request import UpdateDraftRequest +from fireblocks.models.update_legal_entity_request import UpdateLegalEntityRequest from fireblocks.models.update_tag_request import UpdateTagRequest from fireblocks.models.update_token_ownership_status_dto import UpdateTokenOwnershipStatusDto from fireblocks.models.update_vault_account_asset_address_request import UpdateVaultAccountAssetAddressRequest diff --git a/fireblocks/models/account_based_access_provider.py b/fireblocks/models/account_based_access_provider.py index 8f0a9b95..a14454fb 100644 --- a/fireblocks/models/account_based_access_provider.py +++ b/fireblocks/models/account_based_access_provider.py @@ -35,7 +35,7 @@ class AccountBasedAccessProvider(BaseModel): account_based: StrictBool = Field(description="Indicates whether the provider access model is through accounts or directly", alias="accountBased") manifest: Manifest connected: StrictBool = Field(description="Whether the provider is currently connected") - accounts: Optional[List[AccountBase]] = None + accounts: List[AccountBase] __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased", "manifest", "connected", "accounts"] model_config = ConfigDict( diff --git a/fireblocks/models/account_based_access_provider_details.py b/fireblocks/models/account_based_access_provider_info.py similarity index 79% rename from fireblocks/models/account_based_access_provider_details.py rename to fireblocks/models/account_based_access_provider_info.py index 9606d907..0e4e0d18 100644 --- a/fireblocks/models/account_based_access_provider_details.py +++ b/fireblocks/models/account_based_access_provider_info.py @@ -19,20 +19,18 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictBool -from typing import Any, ClassVar, Dict, List, Optional +from typing import Any, ClassVar, Dict, List from fireblocks.models.account_base import AccountBase -from fireblocks.models.manifest import Manifest from typing import Optional, Set from typing_extensions import Self -class AccountBasedAccessProviderDetails(BaseModel): +class AccountBasedAccessProviderInfo(BaseModel): """ - AccountBasedAccessProviderDetails + AccountBasedAccessProviderInfo """ # noqa: E501 - manifest: Manifest connected: StrictBool = Field(description="Whether the provider is currently connected") - accounts: Optional[List[AccountBase]] = None - __properties: ClassVar[List[str]] = ["manifest", "connected", "accounts"] + accounts: List[AccountBase] + __properties: ClassVar[List[str]] = ["connected", "accounts"] model_config = ConfigDict( populate_by_name=True, @@ -52,7 +50,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AccountBasedAccessProviderDetails from a JSON string""" + """Create an instance of AccountBasedAccessProviderInfo from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -73,9 +71,6 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) - # override the default output from pydantic by calling `to_dict()` of manifest - if self.manifest: - _dict['manifest'] = self.manifest.to_dict() # override the default output from pydantic by calling `to_dict()` of each item in accounts (list) _items = [] if self.accounts: @@ -87,7 +82,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AccountBasedAccessProviderDetails from a dict""" + """Create an instance of AccountBasedAccessProviderInfo from a dict""" if obj is None: return None @@ -95,7 +90,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "manifest": Manifest.from_dict(obj["manifest"]) if obj.get("manifest") is not None else None, "connected": obj.get("connected"), "accounts": [AccountBase.from_dict(_item) for _item in obj["accounts"]] if obj.get("accounts") is not None else None }) diff --git a/fireblocks/models/account_based_provider_details.py b/fireblocks/models/account_based_provider_details.py new file mode 100644 index 00000000..56add95c --- /dev/null +++ b/fireblocks/models/account_based_provider_details.py @@ -0,0 +1,112 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.account_base import AccountBase +from fireblocks.models.manifest import Manifest +from typing import Optional, Set +from typing_extensions import Self + +class AccountBasedProviderDetails(BaseModel): + """ + AccountBasedProviderDetails + """ # noqa: E501 + id: StrictStr = Field(description="Unique identifier for the provider") + name: StrictStr = Field(description="Display name of the provider") + logo: Optional[StrictStr] = Field(default=None, description="URL to the logo image of the provider") + account_based: StrictBool = Field(description="Indicates whether the provider access model is through accounts or directly", alias="accountBased") + manifest: Manifest + connected: StrictBool = Field(description="Whether the provider is currently connected") + accounts: List[AccountBase] + __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased", "manifest", "connected", "accounts"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AccountBasedProviderDetails from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of manifest + if self.manifest: + _dict['manifest'] = self.manifest.to_dict() + # override the default output from pydantic by calling `to_dict()` of each item in accounts (list) + _items = [] + if self.accounts: + for _item_accounts in self.accounts: + if _item_accounts: + _items.append(_item_accounts.to_dict()) + _dict['accounts'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AccountBasedProviderDetails from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": obj.get("id"), + "name": obj.get("name"), + "logo": obj.get("logo"), + "accountBased": obj.get("accountBased"), + "manifest": Manifest.from_dict(obj["manifest"]) if obj.get("manifest") is not None else None, + "connected": obj.get("connected"), + "accounts": [AccountBase.from_dict(_item) for _item in obj["accounts"]] if obj.get("accounts") is not None else None + }) + return _obj + + diff --git a/fireblocks/models/address_registry_add_vault_opt_outs_request.py b/fireblocks/models/address_registry_add_vault_opt_outs_request.py new file mode 100644 index 00000000..064a38e7 --- /dev/null +++ b/fireblocks/models/address_registry_add_vault_opt_outs_request.py @@ -0,0 +1,97 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from fireblocks.models.address_registry_add_vault_opt_outs_request_vault_account_ids_inner import AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryAddVaultOptOutsRequest(BaseModel): + """ + AddressRegistryAddVaultOptOutsRequest + """ # noqa: E501 + vault_account_ids: Annotated[List[AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner], Field(min_length=1)] = Field(description="Vault account ids to add to the opt-out list (non-empty). Each element may be a JSON number or a decimal string; both forms are accepted. ", alias="vaultAccountIds") + __properties: ClassVar[List[str]] = ["vaultAccountIds"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryAddVaultOptOutsRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in vault_account_ids (list) + _items = [] + if self.vault_account_ids: + for _item_vault_account_ids in self.vault_account_ids: + if _item_vault_account_ids: + _items.append(_item_vault_account_ids.to_dict()) + _dict['vaultAccountIds'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryAddVaultOptOutsRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "vaultAccountIds": [AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.from_dict(_item) for _item in obj["vaultAccountIds"]] if obj.get("vaultAccountIds") is not None else None + }) + return _obj + + diff --git a/fireblocks/models/address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py b/fireblocks/models/address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py new file mode 100644 index 00000000..3fd3cb5d --- /dev/null +++ b/fireblocks/models/address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py @@ -0,0 +1,144 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +ADDRESSREGISTRYADDVAULTOPTOUTSREQUESTVAULTACCOUNTIDSINNER_ONE_OF_SCHEMAS = ["int", "str"] + +class AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner(BaseModel): + """ + AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner + """ + # data type: int + oneof_schema_1_validator: Optional[StrictInt] = None + # data type: str + oneof_schema_2_validator: Optional[StrictStr] = None + actual_instance: Optional[Union[int, str]] = None + one_of_schemas: Set[str] = { "int", "str" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner.model_construct() + error_messages = [] + match = 0 + # validate data type: int + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: str + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner with oneOf schemas: int, str. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner with oneOf schemas: int, str. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into int + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into str + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner with oneOf schemas: int, str. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner with oneOf schemas: int, str. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], int, str]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) + + diff --git a/fireblocks/models/address_registry_add_vault_opt_outs_response.py b/fireblocks/models/address_registry_add_vault_opt_outs_response.py new file mode 100644 index 00000000..5b652bdd --- /dev/null +++ b/fireblocks/models/address_registry_add_vault_opt_outs_response.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryAddVaultOptOutsResponse(BaseModel): + """ + Result of adding vault account ids to the workspace opt-out list for the address registry. + """ # noqa: E501 + accepted_count: StrictInt = Field(description="Number of vault ids from the request that were processed. An empty `vaultAccountIds` list is rejected with HTTP 400, not a 200 with zero.", alias="acceptedCount") + __properties: ClassVar[List[str]] = ["acceptedCount"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryAddVaultOptOutsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryAddVaultOptOutsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "acceptedCount": obj.get("acceptedCount") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_error.py b/fireblocks/models/address_registry_error.py index 4f3a9761..37415287 100644 --- a/fireblocks/models/address_registry_error.py +++ b/fireblocks/models/address_registry_error.py @@ -25,9 +25,9 @@ class AddressRegistryError(BaseModel): """ - Error body for address-registry 4xx and 5xx. + Error body for address registry operations (4xx and 5xx). """ # noqa: E501 - code: Optional[StrictInt] = Field(default=None, description="Numeric error code (2140–2143) for 403, 404 and 5xx responses.") + code: Optional[StrictInt] = Field(default=None, description="Application error code when present. Typical values include **2140** (403 — workspace not opted in to the address registry) and **2142** (404 — not found). Other codes may appear, including on server errors. ") message: StrictStr = Field(description="Human-readable error message") __properties: ClassVar[List[str]] = ["code", "message"] diff --git a/fireblocks/models/address_registry_get_vault_opt_out_response.py b/fireblocks/models/address_registry_get_vault_opt_out_response.py new file mode 100644 index 00000000..bb084904 --- /dev/null +++ b/fireblocks/models/address_registry_get_vault_opt_out_response.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryGetVaultOptOutResponse(BaseModel): + """ + Whether the given vault account is excluded from the address registry for your workspace. + """ # noqa: E501 + opted_out: StrictBool = Field(description="`true` if this vault account is excluded from the address registry; `false` if it is not excluded. ", alias="optedOut") + __properties: ClassVar[List[str]] = ["optedOut"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryGetVaultOptOutResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryGetVaultOptOutResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "optedOut": obj.get("optedOut") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_legal_entity.py b/fireblocks/models/address_registry_legal_entity.py index 2f31e258..01c4ef5f 100644 --- a/fireblocks/models/address_registry_legal_entity.py +++ b/fireblocks/models/address_registry_legal_entity.py @@ -18,19 +18,23 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List +from fireblocks.models.address_registry_travel_rule_provider import AddressRegistryTravelRuleProvider from typing import Optional, Set from typing_extensions import Self class AddressRegistryLegalEntity(BaseModel): """ - Legal entity resolved for an address-registry lookup + Legal entity details for a blockchain address. """ # noqa: E501 - company_name: StrictStr = Field(description="Legal entity / company display name", alias="companyName") - country_code: StrictStr = Field(description="Jurisdiction country code (e.g. ISO 3166-1 alpha-2)", alias="countryCode") - company_id: StrictStr = Field(description="Company identifier for the resolved legal entity (UUID)", alias="companyId") - __properties: ClassVar[List[str]] = ["companyName", "countryCode", "companyId"] + verified: StrictBool = Field(description="Whether the entity was resolved from verified public registry data (e.g. LEI sources).") + entity_name: StrictStr = Field(description="Legal entity display name.", alias="entityName") + jurisdiction: StrictStr = Field(description="Jurisdiction (e.g. ISO 3166-1 alpha-2 country code).") + lei: StrictStr = Field(description="Legal Entity Identifier when available; may be empty when unverified.") + travel_rule_providers: List[AddressRegistryTravelRuleProvider] = Field(alias="travelRuleProviders") + email: StrictStr = Field(description="Travel Rule contact email when available.") + __properties: ClassVar[List[str]] = ["verified", "entityName", "jurisdiction", "lei", "travelRuleProviders", "email"] model_config = ConfigDict( populate_by_name=True, @@ -83,9 +87,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "companyName": obj.get("companyName"), - "countryCode": obj.get("countryCode"), - "companyId": obj.get("companyId") + "verified": obj.get("verified"), + "entityName": obj.get("entityName"), + "jurisdiction": obj.get("jurisdiction"), + "lei": obj.get("lei"), + "travelRuleProviders": obj.get("travelRuleProviders"), + "email": obj.get("email") }) return _obj diff --git a/fireblocks/models/address_registry_legal_entity_legacy.py b/fireblocks/models/address_registry_legal_entity_legacy.py new file mode 100644 index 00000000..7ba27169 --- /dev/null +++ b/fireblocks/models/address_registry_legal_entity_legacy.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryLegalEntityLegacy(BaseModel): + """ + Narrow legacy response for deprecated `GET /v1/address_registry/legal_entity?address=…`. Use `GET /v1/address_registry/legal_entities/{address}` for the full field set. + """ # noqa: E501 + company_name: StrictStr = Field(description="Legal entity / company display name", alias="companyName") + country_code: StrictStr = Field(description="Jurisdiction country code (e.g. ISO 3166-1 alpha-2)", alias="countryCode") + company_id: StrictStr = Field(description="Company identifier for the resolved legal entity (UUID)", alias="companyId") + __properties: ClassVar[List[str]] = ["companyName", "countryCode", "companyId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryLegalEntityLegacy from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryLegalEntityLegacy from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "companyName": obj.get("companyName"), + "countryCode": obj.get("countryCode"), + "companyId": obj.get("companyId") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_list_vault_opt_outs_response.py b/fireblocks/models/address_registry_list_vault_opt_outs_response.py new file mode 100644 index 00000000..22d578c0 --- /dev/null +++ b/fireblocks/models/address_registry_list_vault_opt_outs_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.address_registry_vault_opt_out_item import AddressRegistryVaultOptOutItem +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryListVaultOptOutsResponse(BaseModel): + """ + AddressRegistryListVaultOptOutsResponse + """ # noqa: E501 + total: StrictInt = Field(description="Total number of vault accounts excluded from the address registry for your workspace.") + data: List[AddressRegistryVaultOptOutItem] + next: Optional[StrictStr] = Field(default=None, description="Opaque cursor for the next page; empty when there is no next page.") + prev: Optional[StrictStr] = Field(default=None, description="Opaque cursor for the previous page; empty when there is no previous page.") + __properties: ClassVar[List[str]] = ["total", "data", "next", "prev"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryListVaultOptOutsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryListVaultOptOutsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "total": obj.get("total"), + "data": [AddressRegistryVaultOptOutItem.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "next": obj.get("next"), + "prev": obj.get("prev") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_remove_all_vault_opt_outs_response.py b/fireblocks/models/address_registry_remove_all_vault_opt_outs_response.py new file mode 100644 index 00000000..11f79545 --- /dev/null +++ b/fireblocks/models/address_registry_remove_all_vault_opt_outs_response.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryRemoveAllVaultOptOutsResponse(BaseModel): + """ + Result of clearing all vault-level opt-outs for the address registry on this workspace. + """ # noqa: E501 + removed_count: StrictInt = Field(description="Number of opt-out rows deleted (0 if none existed).", alias="removedCount") + __properties: ClassVar[List[str]] = ["removedCount"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryRemoveAllVaultOptOutsResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryRemoveAllVaultOptOutsResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "removedCount": obj.get("removedCount") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_remove_vault_opt_out_response.py b/fireblocks/models/address_registry_remove_vault_opt_out_response.py new file mode 100644 index 00000000..86715f30 --- /dev/null +++ b/fireblocks/models/address_registry_remove_vault_opt_out_response.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryRemoveVaultOptOutResponse(BaseModel): + """ + Body after removing one vault from the opt-out list; same fields as GET for that vault (`optedOut` is false). + """ # noqa: E501 + opted_out: StrictBool = Field(description="Always false after a successful remove — the vault is not on the opt-out list.", alias="optedOut") + __properties: ClassVar[List[str]] = ["optedOut"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryRemoveVaultOptOutResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryRemoveVaultOptOutResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "optedOut": obj.get("optedOut") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_tenant_registry_response.py b/fireblocks/models/address_registry_tenant_registry_response.py new file mode 100644 index 00000000..bd99849a --- /dev/null +++ b/fireblocks/models/address_registry_tenant_registry_response.py @@ -0,0 +1,95 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryTenantRegistryResponse(BaseModel): + """ + Workspace participation in the address registry. Same shape for GET, POST (opt in), and DELETE (opt out). + """ # noqa: E501 + status: StrictStr = Field(description="OPTED_IN or OPTED_OUT.") + __properties: ClassVar[List[str]] = ["status"] + + @field_validator('status') + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['OPTED_IN', 'OPTED_OUT']): + raise ValueError("must be one of enum values ('OPTED_IN', 'OPTED_OUT')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryTenantRegistryResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryTenantRegistryResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "status": obj.get("status") + }) + return _obj + + diff --git a/fireblocks/models/address_registry_travel_rule_provider.py b/fireblocks/models/address_registry_travel_rule_provider.py new file mode 100644 index 00000000..b308f5f9 --- /dev/null +++ b/fireblocks/models/address_registry_travel_rule_provider.py @@ -0,0 +1,40 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class AddressRegistryTravelRuleProvider(str, Enum): + """ + Travel Rule provider identifier (string enum value). + """ + + """ + allowed enum values + """ + TRAVEL_RULE_PROVIDER_NOTABENE = 'TRAVEL_RULE_PROVIDER_NOTABENE' + TRAVEL_RULE_PROVIDER_SYGNA = 'TRAVEL_RULE_PROVIDER_SYGNA' + TRAVEL_RULE_PROVIDER_TRISA = 'TRAVEL_RULE_PROVIDER_TRISA' + TRAVEL_RULE_PROVIDER_OPENVASP = 'TRAVEL_RULE_PROVIDER_OPENVASP' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AddressRegistryTravelRuleProvider from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/fireblocks/models/address_registry_vault_list_order.py b/fireblocks/models/address_registry_vault_list_order.py new file mode 100644 index 00000000..e2ba8ff3 --- /dev/null +++ b/fireblocks/models/address_registry_vault_list_order.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class AddressRegistryVaultListOrder(str, Enum): + """ + Sort order for the vault opt-out list by vault account id (ascending is the default when omitted). + """ + + """ + allowed enum values + """ + VAULT_OPT_OUT_LIST_ORDER_ASC = 'VAULT_OPT_OUT_LIST_ORDER_ASC' + VAULT_OPT_OUT_LIST_ORDER_DESC = 'VAULT_OPT_OUT_LIST_ORDER_DESC' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of AddressRegistryVaultListOrder from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/fireblocks/models/address_registry_vault_opt_out_item.py b/fireblocks/models/address_registry_vault_opt_out_item.py new file mode 100644 index 00000000..3fa0357e --- /dev/null +++ b/fireblocks/models/address_registry_vault_opt_out_item.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AddressRegistryVaultOptOutItem(BaseModel): + """ + A vault account excluded from the address registry for your workspace. + """ # noqa: E501 + vault_account_id: StrictInt = Field(description="Vault account ID.", alias="vaultAccountId") + __properties: ClassVar[List[str]] = ["vaultAccountId"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AddressRegistryVaultOptOutItem from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AddressRegistryVaultOptOutItem from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "vaultAccountId": obj.get("vaultAccountId") + }) + return _obj + + diff --git a/fireblocks/models/aml_result.py b/fireblocks/models/aml_result.py index eef959d7..347cc048 100644 --- a/fireblocks/models/aml_result.py +++ b/fireblocks/models/aml_result.py @@ -27,7 +27,7 @@ class AmlResult(BaseModel): """ - Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. + Deprecated: This field is not currently returned in the API response. Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. """ # noqa: E501 alerts: Optional[List[AmlAlert]] = Field(default=None, description="List of AML alerts triggered during screening") provider_response: Optional[Dict[str, Any]] = Field(default=None, description="Complete response from the AML provider. This is a dynamic object that varies significantly between different AML providers (Chainalysis, Elliptic, etc.). Each provider has their own proprietary response format and schema. Examples of provider-specific structures: - Chainalysis: Contains cluster info, risk scores, sanctions data - Elliptic: Includes risk assessment, entity types, compliance flags The structure is provider-dependent and cannot be standardized as each vendor implements their own proprietary data models and response formats. ", alias="providerResponse") diff --git a/fireblocks/models/aml_status_enum.py b/fireblocks/models/aml_status_enum.py index 3580f241..7ca4fbb2 100644 --- a/fireblocks/models/aml_status_enum.py +++ b/fireblocks/models/aml_status_enum.py @@ -21,7 +21,7 @@ class AmlStatusEnum(str, Enum): """ - AML screening status + Deprecated: Use screeningStatus instead. AML screening status. """ """ diff --git a/fireblocks/models/assign_vaults_to_legal_entity_request.py b/fireblocks/models/assign_vaults_to_legal_entity_request.py new file mode 100644 index 00000000..e9bc8492 --- /dev/null +++ b/fireblocks/models/assign_vaults_to_legal_entity_request.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + +class AssignVaultsToLegalEntityRequest(BaseModel): + """ + Request body to assign vault accounts to a legal entity + """ # noqa: E501 + vault_account_ids: Annotated[List[StrictStr], Field(min_length=1)] = Field(description="List of vault account IDs to assign to the legal entity", alias="vaultAccountIds") + __properties: ClassVar[List[str]] = ["vaultAccountIds"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AssignVaultsToLegalEntityRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AssignVaultsToLegalEntityRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "vaultAccountIds": obj.get("vaultAccountIds") + }) + return _obj + + diff --git a/fireblocks/models/assign_vaults_to_legal_entity_response.py b/fireblocks/models/assign_vaults_to_legal_entity_response.py new file mode 100644 index 00000000..ab1c92b7 --- /dev/null +++ b/fireblocks/models/assign_vaults_to_legal_entity_response.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class AssignVaultsToLegalEntityResponse(BaseModel): + """ + Response after assigning vault accounts to a legal entity + """ # noqa: E501 + assigned_count: StrictInt = Field(description="Number of vault accounts successfully assigned", alias="assignedCount") + __properties: ClassVar[List[str]] = ["assignedCount"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of AssignVaultsToLegalEntityResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of AssignVaultsToLegalEntityResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "assignedCount": obj.get("assignedCount") + }) + return _obj + + diff --git a/fireblocks/models/base_provider.py b/fireblocks/models/base_provider.py index d302dd36..7319165b 100644 --- a/fireblocks/models/base_provider.py +++ b/fireblocks/models/base_provider.py @@ -20,6 +20,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.manifest import Manifest from typing import Optional, Set from typing_extensions import Self @@ -31,7 +32,8 @@ class BaseProvider(BaseModel): name: StrictStr = Field(description="Display name of the provider") logo: Optional[StrictStr] = Field(default=None, description="URL to the logo image of the provider") account_based: StrictBool = Field(description="Indicates whether the provider access model is through accounts or directly", alias="accountBased") - __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased"] + manifest: Manifest + __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased", "manifest"] model_config = ConfigDict( populate_by_name=True, @@ -72,6 +74,9 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of manifest + if self.manifest: + _dict['manifest'] = self.manifest.to_dict() return _dict @classmethod @@ -87,7 +92,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "id": obj.get("id"), "name": obj.get("name"), "logo": obj.get("logo"), - "accountBased": obj.get("accountBased") + "accountBased": obj.get("accountBased"), + "manifest": Manifest.from_dict(obj["manifest"]) if obj.get("manifest") is not None else None }) return _obj diff --git a/fireblocks/models/collection_ownership_response.py b/fireblocks/models/collection_ownership_response.py index fb359b74..6348c992 100644 --- a/fireblocks/models/collection_ownership_response.py +++ b/fireblocks/models/collection_ownership_response.py @@ -38,8 +38,8 @@ class CollectionOwnershipResponse(BaseModel): @field_validator('blockchain_descriptor') def blockchain_descriptor_validate_enum(cls, value): """Validates the enum""" - if value not in set(['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']): - raise ValueError("must be one of enum values ('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')") + if value not in set(['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']): + raise ValueError("must be one of enum values ('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')") return value model_config = ConfigDict( diff --git a/fireblocks/models/compliance_screening_result.py b/fireblocks/models/compliance_screening_result.py index dcf3cd2b..020efe8b 100644 --- a/fireblocks/models/compliance_screening_result.py +++ b/fireblocks/models/compliance_screening_result.py @@ -22,7 +22,6 @@ from typing import Any, ClassVar, Dict, List, Optional, Union from fireblocks.models.aml_result import AmlResult from fireblocks.models.aml_status_enum import AmlStatusEnum -from fireblocks.models.screening_risk_level_enum import ScreeningRiskLevelEnum from fireblocks.models.screening_verdict_enum import ScreeningVerdictEnum from fireblocks.models.travel_rule_prescreening_rule import TravelRulePrescreeningRule from fireblocks.models.travel_rule_result import TravelRuleResult @@ -33,26 +32,26 @@ class ComplianceScreeningResult(BaseModel): """ The result of the AML/Travel Rule screening. This unified schema contains all fields that may be returned for both AML and Travel Rule screening results. Not all fields will be present in every response - the actual fields depend on the screening type and provider. """ # noqa: E501 - provider: Optional[StrictStr] = Field(default=None, description="The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, SCORECHAIN, MERKLE_SCIENCE, etc. For Travel Rule: NOTABENE, SYGNA, or any TRLink provider name ") + provider: Optional[StrictStr] = Field(default=None, description="The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, etc. For Travel Rule: NOTABENE, SUMSUB, GTR, or any TRLink provider name. ") payload: Optional[Dict[str, Any]] = Field(default=None, description="The raw payload of the screening result from the provider. The payload is a JSON object that contains the screening result. The payload structure is different for each screening provider. This field contains the complete, unmodified response from the screening service. ") timestamp: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Unix timestamp in milliseconds when the screening result was generated") screening_status: Optional[StrictStr] = Field(default=None, description="Current status of the screening process", alias="screeningStatus") - bypass_reason: Optional[StrictStr] = Field(default=None, description="Reason for bypassing the screening, if applicable. For AML: SANCTIONS_SCREENING_BYPASS, SANCTIONS_RECIPIENT_BYPASS, etc. For Travel Rule: BELOW_THRESHOLD, NO_TRM_AVAILABLE, etc. ", alias="bypassReason") + bypass_reason: Optional[StrictStr] = Field(default=None, description="Reason for bypassing the screening, if applicable. For AML: UNSUPPORTED_ASSET, PASSED_BY_POLICY. For Travel Rule: UNSUPPORTED_ASSET, NO_TRAVEL_RULE_MESSAGE, TRANSACTION_ZERO_AMOUNT. ", alias="bypassReason") status: Optional[AmlStatusEnum] = None prev_status: Optional[AmlStatusEnum] = Field(default=None, alias="prevStatus") - prev_bypass_reason: Optional[StrictStr] = Field(default=None, description="Previous bypass reason before the current bypass reason change", alias="prevBypassReason") + prev_bypass_reason: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Previous bypass reason before the current bypass reason change. ", alias="prevBypassReason") verdict: Optional[ScreeningVerdictEnum] = None - risk: Optional[ScreeningRiskLevelEnum] = None - extended_risk: Optional[ScreeningRiskLevelEnum] = Field(default=None, alias="extendedRisk") + risk: Optional[StrictStr] = Field(default=None, description="Risk level assessment for screening results. Values vary by provider and are not managed by this service. Known values by provider: - Chainalysis: severeRisk, highRisk, mediumRisk, lowRisk, noRiskInfo - Elliptic: noRiskDetected Legacy values (SCREAMING_SNAKE_CASE, may appear in old transactions): VERY_HIGH, SEVERE, HIGH, MEDIUM, LOW, NO_RISK_INFO, UNKNOWN ") + extended_risk: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Use risk instead. ", alias="extendedRisk") external_id: Optional[StrictStr] = Field(default=None, description="External identifier for the screening (provider-specific)", alias="externalId") customer_ref_id: Optional[StrictStr] = Field(default=None, description="Customer-provided reference identifier for tracking", alias="customerRefId") - ref_id: Optional[StrictStr] = Field(default=None, description="Internal reference identifier", alias="refId") + ref_id: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Internal reference identifier. ", alias="refId") category: Optional[StrictStr] = Field(default=None, description="Risk category classification. Examples: EXCHANGE, GAMBLING, MIXER, DARKNET_SERVICE, SANCTIONED_ENTITY ") category_id: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Numeric identifier for the risk category", alias="categoryId") dest_address: Optional[StrictStr] = Field(default=None, description="The destination blockchain address associated with the screening", alias="destAddress") dest_tag: Optional[StrictStr] = Field(default=None, description="Destination tag or memo (for chains that support it like XRP, XLM)", alias="destTag") - dest_record_id: Optional[StrictStr] = Field(default=None, description="The destination record identifier used by the screening provider", alias="destRecordId") - address_resolution_signature: Optional[StrictStr] = Field(default=None, description="Cryptographic signature for address resolution verification", alias="addressResolutionSignature") + dest_record_id: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. The destination record identifier used by the screening provider. ", alias="destRecordId") + address_resolution_signature: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Cryptographic signature for address resolution verification. ", alias="addressResolutionSignature") aml_result: Optional[AmlResult] = Field(default=None, alias="amlResult") result: Optional[TravelRuleResult] = None details_message: Optional[StrictStr] = Field(default=None, description="Additional human-readable details or message about the screening result", alias="detailsMessage") @@ -63,7 +62,8 @@ class ComplianceScreeningResult(BaseModel): customer_integration_id: Optional[StrictStr] = Field(default=None, description="Customer integration identifier used by Travel Rule providers", alias="customerIntegrationId") customer_short_name: Optional[StrictStr] = Field(default=None, description="Customer short name registered with Travel Rule providers", alias="customerShortName") travel_rule_message_id: Optional[StrictStr] = Field(default=None, description="Travel rule message identifier for linking and tracking across providers", alias="travelRuleMessageId") - __properties: ClassVar[List[str]] = ["provider", "payload", "timestamp", "screeningStatus", "bypassReason", "status", "prevStatus", "prevBypassReason", "verdict", "risk", "extendedRisk", "externalId", "customerRefId", "refId", "category", "categoryId", "destAddress", "destTag", "destRecordId", "addressResolutionSignature", "amlResult", "result", "detailsMessage", "matchedAlert", "matchedRule", "matchedPrescreeningRule", "matchedNoTrmScreeningRule", "customerIntegrationId", "customerShortName", "travelRuleMessageId"] + provider_response: Optional[Dict[str, Any]] = Field(default=None, description="Complete response from the screening provider. This is a dynamic object that varies significantly between different providers (Chainalysis, Elliptic, NOTABENE, etc.). Each provider has their own proprietary response format and schema. For AML providers: Contains risk scores, alerts, entity information For Travel Rule providers: Contains VASP information, PII data, protocol-specific fields The structure is provider-dependent and cannot be standardized as each vendor implements their own proprietary data models and response formats. ", alias="providerResponse") + __properties: ClassVar[List[str]] = ["provider", "payload", "timestamp", "screeningStatus", "bypassReason", "status", "prevStatus", "prevBypassReason", "verdict", "risk", "extendedRisk", "externalId", "customerRefId", "refId", "category", "categoryId", "destAddress", "destTag", "destRecordId", "addressResolutionSignature", "amlResult", "result", "detailsMessage", "matchedAlert", "matchedRule", "matchedPrescreeningRule", "matchedNoTrmScreeningRule", "customerIntegrationId", "customerShortName", "travelRuleMessageId", "providerResponse"] @field_validator('screening_status') def screening_status_validate_enum(cls, value): @@ -164,7 +164,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "matchedNoTrmScreeningRule": obj.get("matchedNoTrmScreeningRule"), "customerIntegrationId": obj.get("customerIntegrationId"), "customerShortName": obj.get("customerShortName"), - "travelRuleMessageId": obj.get("travelRuleMessageId") + "travelRuleMessageId": obj.get("travelRuleMessageId"), + "providerResponse": obj.get("providerResponse") }) return _obj diff --git a/fireblocks/models/compliance_screening_result_full_payload.py b/fireblocks/models/compliance_screening_result_full_payload.py index 62cad8b8..28ffb5d9 100644 --- a/fireblocks/models/compliance_screening_result_full_payload.py +++ b/fireblocks/models/compliance_screening_result_full_payload.py @@ -22,7 +22,6 @@ from typing import Any, ClassVar, Dict, List, Optional, Union from fireblocks.models.aml_status_enum import AmlStatusEnum from fireblocks.models.screening_aml_result import ScreeningAmlResult -from fireblocks.models.screening_risk_level_enum import ScreeningRiskLevelEnum from fireblocks.models.screening_travel_rule_prescreening_rule import ScreeningTravelRulePrescreeningRule from fireblocks.models.screening_travel_rule_result import ScreeningTravelRuleResult from fireblocks.models.screening_verdict_enum import ScreeningVerdictEnum @@ -33,26 +32,26 @@ class ComplianceScreeningResultFullPayload(BaseModel): """ The result of the AML/Travel Rule screening. This unified schema contains all fields that may be returned for both AML and Travel Rule screening results. Not all fields will be present in every response - the actual fields depend on the screening type and provider. """ # noqa: E501 - provider: Optional[StrictStr] = Field(default=None, description="The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, etc. For Travel Rule: NOTABENE, SUMSUB, or any TRLink provider name ") + provider: Optional[StrictStr] = Field(default=None, description="The AML/Travel Rule provider name. For AML: ELLIPTIC, CHAINALYSIS, etc. For Travel Rule: NOTABENE, SUMSUB, GTR, or any TRLink provider name ") payload: Optional[Dict[str, Any]] = Field(default=None, description="The raw payload of the screening result from the provider. The payload is a JSON object that contains the screening result. The payload structure is different for each screening provider. This field contains the complete, unmodified response from the screening service. ") timestamp: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Unix timestamp in milliseconds when the screening result was generated") screening_status: Optional[StrictStr] = Field(default=None, description="Current status of the screening process", alias="screeningStatus") - bypass_reason: Optional[StrictStr] = Field(default=None, description="Reason for bypassing the screening, if applicable. For AML: SANCTIONS_SCREENING_BYPASS, SANCTIONS_RECIPIENT_BYPASS, etc. For Travel Rule: BELOW_THRESHOLD, NO_TRM_AVAILABLE, etc. ", alias="bypassReason") + bypass_reason: Optional[StrictStr] = Field(default=None, description="Reason for bypassing the screening, if applicable. For AML: UNSUPPORTED_ASSET, PASSED_BY_POLICY. For Travel Rule: UNSUPPORTED_ASSET, NO_TRAVEL_RULE_MESSAGE, TRANSACTION_ZERO_AMOUNT. ", alias="bypassReason") status: Optional[AmlStatusEnum] = None prev_status: Optional[AmlStatusEnum] = Field(default=None, alias="prevStatus") - prev_bypass_reason: Optional[StrictStr] = Field(default=None, description="Previous bypass reason before the current bypass reason change", alias="prevBypassReason") + prev_bypass_reason: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Previous bypass reason before the current bypass reason change. ", alias="prevBypassReason") verdict: Optional[ScreeningVerdictEnum] = None - risk: Optional[ScreeningRiskLevelEnum] = None - extended_risk: Optional[ScreeningRiskLevelEnum] = Field(default=None, alias="extendedRisk") + risk: Optional[StrictStr] = Field(default=None, description="Risk level assessment for screening results. Values vary by provider and are not managed by this service. Known values by provider: - Chainalysis: severeRisk, highRisk, mediumRisk, lowRisk, noRiskInfo - Elliptic: noRiskDetected Legacy values (SCREAMING_SNAKE_CASE, may appear in old transactions): VERY_HIGH, SEVERE, HIGH, MEDIUM, LOW, NO_RISK_INFO, UNKNOWN ") + extended_risk: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Use risk instead. ", alias="extendedRisk") external_id: Optional[StrictStr] = Field(default=None, description="External identifier for the screening (provider-specific)", alias="externalId") customer_ref_id: Optional[StrictStr] = Field(default=None, description="Customer-provided reference identifier for tracking", alias="customerRefId") - ref_id: Optional[StrictStr] = Field(default=None, description="Internal reference identifier", alias="refId") + ref_id: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Internal reference identifier. ", alias="refId") category: Optional[StrictStr] = Field(default=None, description="Risk category classification. Examples: EXCHANGE, GAMBLING, MIXER, DARKNET_SERVICE, SANCTIONED_ENTITY ") category_id: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Numeric identifier for the risk category", alias="categoryId") dest_address: Optional[StrictStr] = Field(default=None, description="The destination blockchain address associated with the screening", alias="destAddress") dest_tag: Optional[StrictStr] = Field(default=None, description="Destination tag or memo (for chains that support it like XRP, XLM)", alias="destTag") - dest_record_id: Optional[StrictStr] = Field(default=None, description="The destination record identifier used by the screening provider", alias="destRecordId") - address_resolution_signature: Optional[StrictStr] = Field(default=None, description="Cryptographic signature for address resolution verification", alias="addressResolutionSignature") + dest_record_id: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. The destination record identifier used by the screening provider. ", alias="destRecordId") + address_resolution_signature: Optional[StrictStr] = Field(default=None, description="Deprecated: This field is not currently returned in the API response. Cryptographic signature for address resolution verification. ", alias="addressResolutionSignature") aml_result: Optional[ScreeningAmlResult] = Field(default=None, alias="amlResult") result: Optional[ScreeningTravelRuleResult] = None details_message: Optional[StrictStr] = Field(default=None, description="Additional human-readable details or message about the screening result", alias="detailsMessage") @@ -63,7 +62,8 @@ class ComplianceScreeningResultFullPayload(BaseModel): customer_integration_id: Optional[StrictStr] = Field(default=None, description="Customer integration identifier used by Travel Rule providers", alias="customerIntegrationId") customer_short_name: Optional[StrictStr] = Field(default=None, description="Customer short name registered with Travel Rule providers", alias="customerShortName") travel_rule_message_id: Optional[StrictStr] = Field(default=None, description="Travel rule message identifier for linking and tracking across providers", alias="travelRuleMessageId") - __properties: ClassVar[List[str]] = ["provider", "payload", "timestamp", "screeningStatus", "bypassReason", "status", "prevStatus", "prevBypassReason", "verdict", "risk", "extendedRisk", "externalId", "customerRefId", "refId", "category", "categoryId", "destAddress", "destTag", "destRecordId", "addressResolutionSignature", "amlResult", "result", "detailsMessage", "matchedAlert", "matchedRule", "matchedPrescreeningRule", "matchedNoTrmScreeningRule", "customerIntegrationId", "customerShortName", "travelRuleMessageId"] + provider_response: Optional[Dict[str, Any]] = Field(default=None, description="Complete response from the screening provider. This is a dynamic object that varies significantly between different providers (Chainalysis, Elliptic, NOTABENE, etc.). Each provider has their own proprietary response format and schema. For AML providers: Contains risk scores, alerts, entity information For Travel Rule providers: Contains VASP information, PII data, protocol-specific fields The structure is provider-dependent and cannot be standardized as each vendor implements their own proprietary data models and response formats. ", alias="providerResponse") + __properties: ClassVar[List[str]] = ["provider", "payload", "timestamp", "screeningStatus", "bypassReason", "status", "prevStatus", "prevBypassReason", "verdict", "risk", "extendedRisk", "externalId", "customerRefId", "refId", "category", "categoryId", "destAddress", "destTag", "destRecordId", "addressResolutionSignature", "amlResult", "result", "detailsMessage", "matchedAlert", "matchedRule", "matchedPrescreeningRule", "matchedNoTrmScreeningRule", "customerIntegrationId", "customerShortName", "travelRuleMessageId", "providerResponse"] @field_validator('screening_status') def screening_status_validate_enum(cls, value): @@ -164,7 +164,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "matchedNoTrmScreeningRule": obj.get("matchedNoTrmScreeningRule"), "customerIntegrationId": obj.get("customerIntegrationId"), "customerShortName": obj.get("customerShortName"), - "travelRuleMessageId": obj.get("travelRuleMessageId") + "travelRuleMessageId": obj.get("travelRuleMessageId"), + "providerResponse": obj.get("providerResponse") }) return _obj diff --git a/fireblocks/models/create_multiple_accounts_request.py b/fireblocks/models/create_multiple_accounts_request.py index bdfc678a..0a365cc6 100644 --- a/fireblocks/models/create_multiple_accounts_request.py +++ b/fireblocks/models/create_multiple_accounts_request.py @@ -20,6 +20,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated from typing import Optional, Set from typing_extensions import Self @@ -32,7 +33,8 @@ class CreateMultipleAccountsRequest(BaseModel): names: Optional[List[StrictStr]] = Field(default=None, description="Names to assign to vault accounts. if vaultAccountNamesStartingIndex or prefix is used it'll fail") vault_account_names_starting_index: Optional[StrictInt] = Field(default=None, description="Copy vault accounts names starting from this index. If names array is used it'll fail", alias="vaultAccountNamesStartingIndex") prefix: Optional[StrictStr] = Field(default=None, description="When copying from existing vault accounts (vaultAccountNamesStartingIndex) then adding a prefix to the names. If names array is used it'll fail") - __properties: ClassVar[List[str]] = ["count", "baseAssetIds", "names", "vaultAccountNamesStartingIndex", "prefix"] + tag_ids: Optional[Annotated[List[StrictStr], Field(max_length=20)]] = Field(default=None, description="Optional list of tag IDs to attach to all created vault accounts", alias="tagIds") + __properties: ClassVar[List[str]] = ["count", "baseAssetIds", "names", "vaultAccountNamesStartingIndex", "prefix", "tagIds"] model_config = ConfigDict( populate_by_name=True, @@ -89,7 +91,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "baseAssetIds": obj.get("baseAssetIds"), "names": obj.get("names"), "vaultAccountNamesStartingIndex": obj.get("vaultAccountNamesStartingIndex"), - "prefix": obj.get("prefix") + "prefix": obj.get("prefix"), + "tagIds": obj.get("tagIds") }) return _obj diff --git a/fireblocks/models/direct_access_provider.py b/fireblocks/models/direct_access_provider.py index 8ef16c8d..9b6166f7 100644 --- a/fireblocks/models/direct_access_provider.py +++ b/fireblocks/models/direct_access_provider.py @@ -20,6 +20,7 @@ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.manifest import Manifest from typing import Optional, Set from typing_extensions import Self @@ -31,10 +32,12 @@ class DirectAccessProvider(BaseModel): name: StrictStr = Field(description="Display name of the provider") logo: Optional[StrictStr] = Field(default=None, description="URL to the logo image of the provider") account_based: StrictBool = Field(description="Indicates whether the provider access model is through accounts or directly", alias="accountBased") + manifest: Manifest approved: Optional[StrictBool] = Field(default=None, description="Whether the provider was approved for use") has_terms_of_service: StrictBool = Field(description="Whether the provider has terms of service", alias="hasTermsOfService") terms_of_service_url: Optional[StrictStr] = Field(default=None, description="URL to the terms of service document", alias="termsOfServiceUrl") - __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased", "approved", "hasTermsOfService", "termsOfServiceUrl"] + privacy_policy_url: Optional[StrictStr] = Field(default=None, description="URL to the privacy policy document", alias="privacyPolicyUrl") + __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased", "manifest", "approved", "hasTermsOfService", "termsOfServiceUrl", "privacyPolicyUrl"] model_config = ConfigDict( populate_by_name=True, @@ -75,6 +78,9 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of manifest + if self.manifest: + _dict['manifest'] = self.manifest.to_dict() return _dict @classmethod @@ -91,9 +97,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "name": obj.get("name"), "logo": obj.get("logo"), "accountBased": obj.get("accountBased"), + "manifest": Manifest.from_dict(obj["manifest"]) if obj.get("manifest") is not None else None, "approved": obj.get("approved"), "hasTermsOfService": obj.get("hasTermsOfService"), - "termsOfServiceUrl": obj.get("termsOfServiceUrl") + "termsOfServiceUrl": obj.get("termsOfServiceUrl"), + "privacyPolicyUrl": obj.get("privacyPolicyUrl") }) return _obj diff --git a/fireblocks/models/direct_access_provider_details.py b/fireblocks/models/direct_access_provider_info.py similarity index 84% rename from fireblocks/models/direct_access_provider_details.py rename to fireblocks/models/direct_access_provider_info.py index 5fad7e08..e6ff2268 100644 --- a/fireblocks/models/direct_access_provider_details.py +++ b/fireblocks/models/direct_access_provider_info.py @@ -23,14 +23,15 @@ from typing import Optional, Set from typing_extensions import Self -class DirectAccessProviderDetails(BaseModel): +class DirectAccessProviderInfo(BaseModel): """ - DirectAccessProviderDetails + DirectAccessProviderInfo """ # noqa: E501 approved: Optional[StrictBool] = Field(default=None, description="Whether the provider was approved for use") has_terms_of_service: StrictBool = Field(description="Whether the provider has terms of service", alias="hasTermsOfService") terms_of_service_url: Optional[StrictStr] = Field(default=None, description="URL to the terms of service document", alias="termsOfServiceUrl") - __properties: ClassVar[List[str]] = ["approved", "hasTermsOfService", "termsOfServiceUrl"] + privacy_policy_url: Optional[StrictStr] = Field(default=None, description="URL to the privacy policy document", alias="privacyPolicyUrl") + __properties: ClassVar[List[str]] = ["approved", "hasTermsOfService", "termsOfServiceUrl", "privacyPolicyUrl"] model_config = ConfigDict( populate_by_name=True, @@ -50,7 +51,7 @@ def to_json(self) -> str: @classmethod def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DirectAccessProviderDetails from a JSON string""" + """Create an instance of DirectAccessProviderInfo from a JSON string""" return cls.from_dict(json.loads(json_str)) def to_dict(self) -> Dict[str, Any]: @@ -75,7 +76,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DirectAccessProviderDetails from a dict""" + """Create an instance of DirectAccessProviderInfo from a dict""" if obj is None: return None @@ -85,7 +86,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "approved": obj.get("approved"), "hasTermsOfService": obj.get("hasTermsOfService"), - "termsOfServiceUrl": obj.get("termsOfServiceUrl") + "termsOfServiceUrl": obj.get("termsOfServiceUrl"), + "privacyPolicyUrl": obj.get("privacyPolicyUrl") }) return _obj diff --git a/fireblocks/models/direct_provider_details.py b/fireblocks/models/direct_provider_details.py new file mode 100644 index 00000000..085c9fca --- /dev/null +++ b/fireblocks/models/direct_provider_details.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.manifest import Manifest +from typing import Optional, Set +from typing_extensions import Self + +class DirectProviderDetails(BaseModel): + """ + DirectProviderDetails + """ # noqa: E501 + id: StrictStr = Field(description="Unique identifier for the provider") + name: StrictStr = Field(description="Display name of the provider") + logo: Optional[StrictStr] = Field(default=None, description="URL to the logo image of the provider") + account_based: StrictBool = Field(description="Indicates whether the provider access model is through accounts or directly", alias="accountBased") + manifest: Manifest + approved: Optional[StrictBool] = Field(default=None, description="Whether the provider was approved for use") + has_terms_of_service: StrictBool = Field(description="Whether the provider has terms of service", alias="hasTermsOfService") + terms_of_service_url: Optional[StrictStr] = Field(default=None, description="URL to the terms of service document", alias="termsOfServiceUrl") + privacy_policy_url: Optional[StrictStr] = Field(default=None, description="URL to the privacy policy document", alias="privacyPolicyUrl") + __properties: ClassVar[List[str]] = ["id", "name", "logo", "accountBased", "manifest", "approved", "hasTermsOfService", "termsOfServiceUrl", "privacyPolicyUrl"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DirectProviderDetails from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of manifest + if self.manifest: + _dict['manifest'] = self.manifest.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DirectProviderDetails from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": obj.get("id"), + "name": obj.get("name"), + "logo": obj.get("logo"), + "accountBased": obj.get("accountBased"), + "manifest": Manifest.from_dict(obj["manifest"]) if obj.get("manifest") is not None else None, + "approved": obj.get("approved"), + "hasTermsOfService": obj.get("hasTermsOfService"), + "termsOfServiceUrl": obj.get("termsOfServiceUrl"), + "privacyPolicyUrl": obj.get("privacyPolicyUrl") + }) + return _obj + + diff --git a/fireblocks/models/capability.py b/fireblocks/models/execution_request_details_type.py similarity index 79% rename from fireblocks/models/capability.py rename to fireblocks/models/execution_request_details_type.py index 1308fe94..390d3c65 100644 --- a/fireblocks/models/capability.py +++ b/fireblocks/models/execution_request_details_type.py @@ -19,21 +19,20 @@ from typing_extensions import Self -class Capability(str, Enum): +class ExecutionRequestDetailsType(str, Enum): """ - Capability + Execution type supported by the provider """ """ allowed enum values """ - WITHDRAWALS = 'WITHDRAWALS' - DEPOSITS = 'DEPOSITS' - TRADING = 'TRADING' + QUOTE = 'QUOTE' + MARKET = 'MARKET' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of Capability from a JSON string""" + """Create an instance of ExecutionRequestDetailsType from a JSON string""" return cls(json.loads(json_str)) diff --git a/fireblocks/models/extra_parameters.py b/fireblocks/models/extra_parameters.py index 1a481e0e..40259ee1 100644 --- a/fireblocks/models/extra_parameters.py +++ b/fireblocks/models/extra_parameters.py @@ -25,7 +25,7 @@ class ExtraParameters(BaseModel): """ - Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call. + Additional protocol / operation specific key-value parameters: For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/getunspentinputs) For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata) For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks) **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call. """ # noqa: E501 node_controls: Optional[Dict[str, Any]] = Field(default=None, alias="nodeControls") raw_message_data: Optional[Dict[str, Any]] = Field(default=None, alias="rawMessageData") diff --git a/fireblocks/models/get_transaction_operation.py b/fireblocks/models/get_transaction_operation.py index 089a58eb..a212de16 100644 --- a/fireblocks/models/get_transaction_operation.py +++ b/fireblocks/models/get_transaction_operation.py @@ -21,7 +21,7 @@ class GetTransactionOperation(str, Enum): """ - * `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address. * `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. * `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing). * `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing) * `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account. * `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. * `UNSTAKE` - Remove assets from a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. * `WITHDRAW` - Transfer assets from a dedicated staking vault account to another address. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. **Note:** Fireblocks will rename this type from `WITHDRAW` to a different type name soon. There will be a 7-day notice regarding the new type name. * `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `PROGRAM_CALL` - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain. * `APPROVE` - Enables the approve function for a smart contract or wallet to withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions). + * `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address. * `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains. * `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions. * `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing). * `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing) * `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account. * `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations. * `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol. * `PROGRAM_CALL` - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain. * `APPROVE` - Enables the approve function for a smart contract or wallet to withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions). """ """ @@ -35,8 +35,6 @@ class GetTransactionOperation(str, Enum): TYPED_MESSAGE = 'TYPED_MESSAGE' ENABLE_ASSET = 'ENABLE_ASSET' STAKE = 'STAKE' - UNSTAKE = 'UNSTAKE' - WITHDRAW = 'WITHDRAW' REDEEM_FROM_COMPOUND = 'REDEEM_FROM_COMPOUND' SUPPLY_TO_COMPOUND = 'SUPPLY_TO_COMPOUND' PROGRAM_CALL = 'PROGRAM_CALL' diff --git a/fireblocks/models/gleif_data.py b/fireblocks/models/gleif_data.py new file mode 100644 index 00000000..b651d5dd --- /dev/null +++ b/fireblocks/models/gleif_data.py @@ -0,0 +1,100 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from typing import Optional, Set +from typing_extensions import Self + +class GleifData(BaseModel): + """ + GLEIF (Global Legal Entity Identifier Foundation) data for a legal entity + """ # noqa: E501 + lei: StrictStr = Field(description="Legal Entity Identifier (LEI) code") + legal_name: StrictStr = Field(description="Official legal name of the entity", alias="legalName") + other_names: Optional[Annotated[List[StrictStr], Field(min_length=0, max_length=20)]] = Field(default=None, description="Alternative names for the entity", alias="otherNames") + legal_address_region: Optional[StrictStr] = Field(default=None, description="Region or state of the legal address", alias="legalAddressRegion") + legal_address_country: StrictStr = Field(description="Country code of the legal address (ISO 3166-1 alpha-2)", alias="legalAddressCountry") + next_renewal_date: Optional[datetime] = Field(default=None, description="Date when the LEI registration must be renewed", alias="nextRenewalDate") + __properties: ClassVar[List[str]] = ["lei", "legalName", "otherNames", "legalAddressRegion", "legalAddressCountry", "nextRenewalDate"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of GleifData from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of GleifData from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "lei": obj.get("lei"), + "legalName": obj.get("legalName"), + "otherNames": obj.get("otherNames"), + "legalAddressRegion": obj.get("legalAddressRegion"), + "legalAddressCountry": obj.get("legalAddressCountry"), + "nextRenewalDate": obj.get("nextRenewalDate") + }) + return _obj + + diff --git a/fireblocks/models/interac_address.py b/fireblocks/models/interac_address.py index 32f07a2a..3cb905d5 100644 --- a/fireblocks/models/interac_address.py +++ b/fireblocks/models/interac_address.py @@ -18,7 +18,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing import Any, ClassVar, Dict, List, Optional from fireblocks.models.account_holder_details import AccountHolderDetails from fireblocks.models.recipient_handle import RecipientHandle @@ -27,12 +27,15 @@ class InteracAddress(BaseModel): """ - InteracAddress + When true, funds are deposited directly into the recipient's bank account without a security question. When false, a security question and answer are required to complete the transfer """ # noqa: E501 account_holder: AccountHolderDetails = Field(alias="accountHolder") recipient_handle: RecipientHandle = Field(alias="recipientHandle") message: Optional[StrictStr] = Field(default=None, description="The message to be sent to the recipient") - __properties: ClassVar[List[str]] = ["accountHolder", "recipientHandle", "message"] + auto_deposit: StrictBool = Field(description="Whether to automatically deposit the funds into the account", alias="autoDeposit") + security_question: Optional[StrictStr] = Field(default=None, description="The security question to be used for the security answer", alias="securityQuestion") + security_answer: Optional[StrictStr] = Field(default=None, description="The security answer to be used for the security question", alias="securityAnswer") + __properties: ClassVar[List[str]] = ["accountHolder", "recipientHandle", "message", "autoDeposit", "securityQuestion", "securityAnswer"] model_config = ConfigDict( populate_by_name=True, @@ -93,7 +96,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "accountHolder": AccountHolderDetails.from_dict(obj["accountHolder"]) if obj.get("accountHolder") is not None else None, "recipientHandle": RecipientHandle.from_dict(obj["recipientHandle"]) if obj.get("recipientHandle") is not None else None, - "message": obj.get("message") + "message": obj.get("message"), + "autoDeposit": obj.get("autoDeposit"), + "securityQuestion": obj.get("securityQuestion"), + "securityAnswer": obj.get("securityAnswer") }) return _obj diff --git a/fireblocks/models/job_created.py b/fireblocks/models/job_created.py index 9dbb741b..62ff1dcb 100644 --- a/fireblocks/models/job_created.py +++ b/fireblocks/models/job_created.py @@ -28,7 +28,8 @@ class JobCreated(BaseModel): JobCreated """ # noqa: E501 job_id: Optional[StrictStr] = Field(default=None, alias="jobId") - __properties: ClassVar[List[str]] = ["jobId"] + approval_request_id: Optional[StrictStr] = Field(default=None, description="Approval request ID. Returned when a tag triggers an approval flow.", alias="approvalRequestId") + __properties: ClassVar[List[str]] = ["jobId", "approvalRequestId"] model_config = ConfigDict( populate_by_name=True, @@ -81,7 +82,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "jobId": obj.get("jobId") + "jobId": obj.get("jobId"), + "approvalRequestId": obj.get("approvalRequestId") }) return _obj diff --git a/fireblocks/models/legal_entity_registration.py b/fireblocks/models/legal_entity_registration.py new file mode 100644 index 00000000..2bf7880b --- /dev/null +++ b/fireblocks/models/legal_entity_registration.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing_extensions import Annotated +from fireblocks.models.gleif_data import GleifData +from fireblocks.models.lei_status import LeiStatus +from fireblocks.models.travel_rule_provider import TravelRuleProvider +from typing import Optional, Set +from typing_extensions import Self + +class LegalEntityRegistration(BaseModel): + """ + Legal entity registration record + """ # noqa: E501 + id: StrictStr = Field(description="Unique registration identifier") + lei: StrictStr = Field(description="Legal Entity Identifier (LEI) code") + status: LeiStatus + is_default: StrictBool = Field(description="Whether this is the default legal entity for the workspace", alias="isDefault") + travel_rule_providers: Annotated[List[TravelRuleProvider], Field(min_length=0, max_length=20)] = Field(description="Travel rule providers configured for this registration", alias="travelRuleProviders") + travel_rule_contact_email: Optional[StrictStr] = Field(default=None, description="Contact email for travel rule communications", alias="travelRuleContactEmail") + gleif_data: Optional[GleifData] = Field(default=None, alias="gleifData") + created_at: StrictStr = Field(description="Creation timestamp in milliseconds since epoch", alias="createdAt") + updated_at: StrictStr = Field(description="Last update timestamp in milliseconds since epoch", alias="updatedAt") + __properties: ClassVar[List[str]] = ["id", "lei", "status", "isDefault", "travelRuleProviders", "travelRuleContactEmail", "gleifData", "createdAt", "updatedAt"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of LegalEntityRegistration from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of gleif_data + if self.gleif_data: + _dict['gleifData'] = self.gleif_data.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of LegalEntityRegistration from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": obj.get("id"), + "lei": obj.get("lei"), + "status": obj.get("status"), + "isDefault": obj.get("isDefault"), + "travelRuleProviders": obj.get("travelRuleProviders"), + "travelRuleContactEmail": obj.get("travelRuleContactEmail"), + "gleifData": GleifData.from_dict(obj["gleifData"]) if obj.get("gleifData") is not None else None, + "createdAt": obj.get("createdAt"), + "updatedAt": obj.get("updatedAt") + }) + return _obj + + diff --git a/fireblocks/models/screening_risk_level_enum.py b/fireblocks/models/lei_status.py similarity index 71% rename from fireblocks/models/screening_risk_level_enum.py rename to fireblocks/models/lei_status.py index 24510d4f..629e957b 100644 --- a/fireblocks/models/screening_risk_level_enum.py +++ b/fireblocks/models/lei_status.py @@ -19,24 +19,22 @@ from typing_extensions import Self -class ScreeningRiskLevelEnum(str, Enum): +class LeiStatus(str, Enum): """ - Risk level assessment for screening results. Possible values vary by provider and context. + Approval status of a legal entity registration """ """ allowed enum values """ - VERY_HIGH = 'VERY_HIGH' - SEVERE = 'SEVERE' - HIGH = 'HIGH' - MEDIUM = 'MEDIUM' - LOW = 'LOW' - UNKNOWN = 'UNKNOWN' + PENDING = 'PENDING' + APPROVED = 'APPROVED' + DENIED = 'DENIED' + REVOKED = 'REVOKED' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of ScreeningRiskLevelEnum from a JSON string""" + """Create an instance of LeiStatus from a JSON string""" return cls(json.loads(json_str)) diff --git a/fireblocks/models/list_legal_entities_response.py b/fireblocks/models/list_legal_entities_response.py new file mode 100644 index 00000000..e14ce05f --- /dev/null +++ b/fireblocks/models/list_legal_entities_response.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.legal_entity_registration import LegalEntityRegistration +from typing import Optional, Set +from typing_extensions import Self + +class ListLegalEntitiesResponse(BaseModel): + """ + Paginated response containing a list of legal entity registrations + """ # noqa: E501 + total: Optional[StrictInt] = Field(default=None, description="Total number of legal entity registrations (optional)") + data: List[LegalEntityRegistration] = Field(description="Legal entity registrations for the current page") + next: Optional[StrictStr] = Field(default=None, description="Cursor to pass as `pageCursor` to retrieve the next page") + prev: Optional[StrictStr] = Field(default=None, description="Cursor to pass as `pageCursor` to retrieve the previous page") + __properties: ClassVar[List[str]] = ["total", "data", "next", "prev"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListLegalEntitiesResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListLegalEntitiesResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "total": obj.get("total"), + "data": [LegalEntityRegistration.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "next": obj.get("next"), + "prev": obj.get("prev") + }) + return _obj + + diff --git a/fireblocks/models/list_vaults_for_registration_response.py b/fireblocks/models/list_vaults_for_registration_response.py new file mode 100644 index 00000000..1a8de26c --- /dev/null +++ b/fireblocks/models/list_vaults_for_registration_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class ListVaultsForRegistrationResponse(BaseModel): + """ + Response containing vault account IDs assigned to a legal entity registration + """ # noqa: E501 + total: Optional[StrictInt] = Field(default=None, description="Total number of legal entity registrations (optional)") + data: List[StrictStr] = Field(description="List of vault account IDs assigned to the legal entity registration") + next: Optional[StrictStr] = Field(default=None, description="Cursor to pass as `pageCursor` to retrieve the next page") + prev: Optional[StrictStr] = Field(default=None, description="Cursor to pass as `pageCursor` to retrieve the previous page") + __properties: ClassVar[List[str]] = ["total", "data", "next", "prev"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ListVaultsForRegistrationResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ListVaultsForRegistrationResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "total": obj.get("total"), + "data": obj.get("data"), + "next": obj.get("next"), + "prev": obj.get("prev") + }) + return _obj + + diff --git a/fireblocks/models/manifest.py b/fireblocks/models/manifest.py index 46d0a635..ccd661e6 100644 --- a/fireblocks/models/manifest.py +++ b/fireblocks/models/manifest.py @@ -18,20 +18,22 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict from typing import Any, ClassVar, Dict, List -from fireblocks.models.asset_type_enum import AssetTypeEnum -from fireblocks.models.capability import Capability +from fireblocks.models.manifest_base import ManifestBase +from fireblocks.models.manifest_order import ManifestOrder +from fireblocks.models.manifest_quote import ManifestQuote from typing import Optional, Set from typing_extensions import Self class Manifest(BaseModel): """ - Manifest + The manifest of the provider, describing its supported order, quote, and rate requirements. """ # noqa: E501 - asset_types: List[AssetTypeEnum] = Field(alias="assetTypes") - capabilities: List[Capability] - __properties: ClassVar[List[str]] = ["assetTypes", "capabilities"] + order: ManifestOrder + quote: ManifestQuote + rate: ManifestBase + __properties: ClassVar[List[str]] = ["order", "quote", "rate"] model_config = ConfigDict( populate_by_name=True, @@ -72,6 +74,15 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of order + if self.order: + _dict['order'] = self.order.to_dict() + # override the default output from pydantic by calling `to_dict()` of quote + if self.quote: + _dict['quote'] = self.quote.to_dict() + # override the default output from pydantic by calling `to_dict()` of rate + if self.rate: + _dict['rate'] = self.rate.to_dict() return _dict @classmethod @@ -84,8 +95,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: return cls.model_validate(obj) _obj = cls.model_validate({ - "assetTypes": obj.get("assetTypes"), - "capabilities": obj.get("capabilities") + "order": ManifestOrder.from_dict(obj["order"]) if obj.get("order") is not None else None, + "quote": ManifestQuote.from_dict(obj["quote"]) if obj.get("quote") is not None else None, + "rate": ManifestBase.from_dict(obj["rate"]) if obj.get("rate") is not None else None }) return _obj diff --git a/fireblocks/models/manifest_base.py b/fireblocks/models/manifest_base.py new file mode 100644 index 00000000..d2cac6e0 --- /dev/null +++ b/fireblocks/models/manifest_base.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class ManifestBase(BaseModel): + """ + Base manifest schema with common properties + """ # noqa: E501 + supported: StrictBool = Field(description="Indicates whether the endpoint is supported by the provider") + __properties: ClassVar[List[str]] = ["supported"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ManifestBase from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ManifestBase from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "supported": obj.get("supported") + }) + return _obj + + diff --git a/fireblocks/models/manifest_order.py b/fireblocks/models/manifest_order.py new file mode 100644 index 00000000..b6d81796 --- /dev/null +++ b/fireblocks/models/manifest_order.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.execution_request_details_type import ExecutionRequestDetailsType +from fireblocks.models.settlement_type_enum import SettlementTypeEnum +from typing import Optional, Set +from typing_extensions import Self + +class ManifestOrder(BaseModel): + """ + ManifestOrder + """ # noqa: E501 + supported: StrictBool = Field(description="Indicates whether the endpoint is supported by the provider") + settlement_types: Optional[List[SettlementTypeEnum]] = Field(default=None, description="Supported settlement types when creating an order. If present - settlement is required. If absent - no need to provide settlement. ", alias="settlementTypes") + execution_types: List[ExecutionRequestDetailsType] = Field(description="Supported execution types when creating an order.", alias="executionTypes") + __properties: ClassVar[List[str]] = ["supported", "settlementTypes", "executionTypes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ManifestOrder from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ManifestOrder from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "supported": obj.get("supported"), + "settlementTypes": obj.get("settlementTypes"), + "executionTypes": obj.get("executionTypes") + }) + return _obj + + diff --git a/fireblocks/models/manifest_order_info.py b/fireblocks/models/manifest_order_info.py new file mode 100644 index 00000000..97c3cd66 --- /dev/null +++ b/fireblocks/models/manifest_order_info.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.execution_request_details_type import ExecutionRequestDetailsType +from fireblocks.models.settlement_type_enum import SettlementTypeEnum +from typing import Optional, Set +from typing_extensions import Self + +class ManifestOrderInfo(BaseModel): + """ + Defines requirements for the POST /orders endpoint. + """ # noqa: E501 + settlement_types: Optional[List[SettlementTypeEnum]] = Field(default=None, description="Supported settlement types when creating an order. If present - settlement is required. If absent - no need to provide settlement. ", alias="settlementTypes") + execution_types: List[ExecutionRequestDetailsType] = Field(description="Supported execution types when creating an order.", alias="executionTypes") + __properties: ClassVar[List[str]] = ["settlementTypes", "executionTypes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ManifestOrderInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ManifestOrderInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "settlementTypes": obj.get("settlementTypes"), + "executionTypes": obj.get("executionTypes") + }) + return _obj + + diff --git a/fireblocks/models/manifest_quote.py b/fireblocks/models/manifest_quote.py new file mode 100644 index 00000000..9ea22d23 --- /dev/null +++ b/fireblocks/models/manifest_quote.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.dvp_settlement_type import DVPSettlementType +from typing import Optional, Set +from typing_extensions import Self + +class ManifestQuote(BaseModel): + """ + ManifestQuote + """ # noqa: E501 + supported: StrictBool = Field(description="Indicates whether the endpoint is supported by the provider") + settlement_types: Optional[List[DVPSettlementType]] = Field(default=None, description="Supported settlement types when requesting a quote. If present - settlement is required. If absent - no need to provide settlement. ", alias="settlementTypes") + __properties: ClassVar[List[str]] = ["supported", "settlementTypes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ManifestQuote from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ManifestQuote from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "supported": obj.get("supported"), + "settlementTypes": obj.get("settlementTypes") + }) + return _obj + + diff --git a/fireblocks/models/manifest_quote_info.py b/fireblocks/models/manifest_quote_info.py new file mode 100644 index 00000000..5059da4d --- /dev/null +++ b/fireblocks/models/manifest_quote_info.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.dvp_settlement_type import DVPSettlementType +from typing import Optional, Set +from typing_extensions import Self + +class ManifestQuoteInfo(BaseModel): + """ + Defines requirements for the POST /quotes endpoint. + """ # noqa: E501 + settlement_types: Optional[List[DVPSettlementType]] = Field(default=None, description="Supported settlement types when requesting a quote. If present - settlement is required. If absent - no need to provide settlement. ", alias="settlementTypes") + __properties: ClassVar[List[str]] = ["settlementTypes"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ManifestQuoteInfo from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ManifestQuoteInfo from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "settlementTypes": obj.get("settlementTypes") + }) + return _obj + + diff --git a/fireblocks/models/position.py b/fireblocks/models/position.py new file mode 100644 index 00000000..f4808c30 --- /dev/null +++ b/fireblocks/models/position.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.delegation_blockchain_position_info import DelegationBlockchainPositionInfo +from fireblocks.models.staking_provider import StakingProvider +from typing import Optional, Set +from typing_extensions import Self + +class Position(BaseModel): + """ + Position + """ # noqa: E501 + id: StrictStr = Field(description="The unique identifier of the staking position") + vault_account_id: StrictStr = Field(description="The source vault account to stake from", alias="vaultAccountId") + validator_name: StrictStr = Field(description="The destination validator address name", alias="validatorName") + provider_name: StrictStr = Field(description="The destination validator provider name", alias="providerName") + chain_descriptor: StrictStr = Field(description="The protocol identifier (e.g. \"ETH\"/ \"SOL\") to use", alias="chainDescriptor") + amount: StrictStr = Field(description="Total value of the staking position. For Solana, Lido and Ethereum (compounding validator): includes the original stake plus accumulated rewards. For MATIC, Cosmos and Ethereum (legacy validator): refers to the amount currently staked.") + rewards_amount: StrictStr = Field(description="The amount staked in the position, measured in the staked asset unit.", alias="rewardsAmount") + date_created: datetime = Field(description="When was the request made (ISO Date).", alias="dateCreated") + date_updated: datetime = Field(description="When has the position last changed (ISO Date).", alias="dateUpdated") + status: StrictStr = Field(description="The current status.") + validator_address: StrictStr = Field(description="The destination address of the staking transaction.", alias="validatorAddress") + provider_id: StakingProvider = Field(alias="providerId") + available_actions: List[StrictStr] = Field(description="An array of available actions that can be performed. for example, actions like \"UNSTAKE\" or \"WITHDRAW\".", alias="availableActions") + in_progress: StrictBool = Field(description="Indicates whether there is an ongoing action for this position related to this request", alias="inProgress") + in_progress_tx_id: Optional[StrictStr] = Field(default=None, description="The transaction ID of the initial stake position request only. Only present when there is an active initial stake transaction.", alias="inProgressTxId") + blockchain_position_info: DelegationBlockchainPositionInfo = Field(alias="blockchainPositionInfo") + __properties: ClassVar[List[str]] = ["id", "vaultAccountId", "validatorName", "providerName", "chainDescriptor", "amount", "rewardsAmount", "dateCreated", "dateUpdated", "status", "validatorAddress", "providerId", "availableActions", "inProgress", "inProgressTxId", "blockchainPositionInfo"] + + @field_validator('status') + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['CREATING', 'PENDING', 'ACTIVATING', 'ACTIVE', 'DEACTIVATING', 'DEACTIVATED', 'WITHDRAWING', 'WITHDRAWN', 'MERGED', 'CONSOLIDATED', 'CANCELED', 'FAILED']): + raise ValueError("must be one of enum values ('CREATING', 'PENDING', 'ACTIVATING', 'ACTIVE', 'DEACTIVATING', 'DEACTIVATED', 'WITHDRAWING', 'WITHDRAWN', 'MERGED', 'CONSOLIDATED', 'CANCELED', 'FAILED')") + return value + + @field_validator('available_actions') + def available_actions_validate_enum(cls, value): + """Validates the enum""" + for i in value: + if i not in set(['UNSTAKE', 'WITHDRAW', 'ADD_TO_STAKE', 'SPLIT', 'MERGE', 'CLAIM_REWARDS', 'CONSOLIDATE']): + raise ValueError("each list item must be one of ('UNSTAKE', 'WITHDRAW', 'ADD_TO_STAKE', 'SPLIT', 'MERGE', 'CLAIM_REWARDS', 'CONSOLIDATE')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Position from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of blockchain_position_info + if self.blockchain_position_info: + _dict['blockchainPositionInfo'] = self.blockchain_position_info.to_dict() + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Position from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "id": obj.get("id"), + "vaultAccountId": obj.get("vaultAccountId"), + "validatorName": obj.get("validatorName"), + "providerName": obj.get("providerName"), + "chainDescriptor": obj.get("chainDescriptor"), + "amount": obj.get("amount"), + "rewardsAmount": obj.get("rewardsAmount"), + "dateCreated": obj.get("dateCreated"), + "dateUpdated": obj.get("dateUpdated"), + "status": obj.get("status"), + "validatorAddress": obj.get("validatorAddress"), + "providerId": obj.get("providerId"), + "availableActions": obj.get("availableActions"), + "inProgress": obj.get("inProgress"), + "inProgressTxId": obj.get("inProgressTxId"), + "blockchainPositionInfo": DelegationBlockchainPositionInfo.from_dict(obj["blockchainPositionInfo"]) if obj.get("blockchainPositionInfo") is not None else None + }) + return _obj + + diff --git a/fireblocks/models/register_legal_entity_request.py b/fireblocks/models/register_legal_entity_request.py new file mode 100644 index 00000000..47ac186c --- /dev/null +++ b/fireblocks/models/register_legal_entity_request.py @@ -0,0 +1,93 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.travel_rule_provider import TravelRuleProvider +from typing import Optional, Set +from typing_extensions import Self + +class RegisterLegalEntityRequest(BaseModel): + """ + Request body to register a new legal entity + """ # noqa: E501 + lei: StrictStr = Field(description="Legal Entity Identifier (LEI) code to register. Must be a valid 20-character LEI present in the GLEIF registry.") + travel_rule_providers: Optional[List[TravelRuleProvider]] = Field(default=None, description="Travel rule providers to associate with this registration", alias="travelRuleProviders") + travel_rule_contact_email: Optional[StrictStr] = Field(default=None, description="Contact email for travel rule communications", alias="travelRuleContactEmail") + __properties: ClassVar[List[str]] = ["lei", "travelRuleProviders", "travelRuleContactEmail"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of RegisterLegalEntityRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of RegisterLegalEntityRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "lei": obj.get("lei"), + "travelRuleProviders": obj.get("travelRuleProviders"), + "travelRuleContactEmail": obj.get("travelRuleContactEmail") + }) + return _obj + + diff --git a/fireblocks/models/screening_aml_result.py b/fireblocks/models/screening_aml_result.py index fe32ca10..eb7328bf 100644 --- a/fireblocks/models/screening_aml_result.py +++ b/fireblocks/models/screening_aml_result.py @@ -27,7 +27,7 @@ class ScreeningAmlResult(BaseModel): """ - Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. + Deprecated: This field is not currently returned in the API response. Detailed AML screening result information. Contains alerts, risk scores, and other AML-specific data from provider-specific responses. """ # noqa: E501 alerts: Optional[List[ScreeningAmlAlert]] = Field(default=None, description="List of AML alerts triggered during screening") provider_response: Optional[Dict[str, Any]] = Field(default=None, description="Complete response from the AML provider. This is a dynamic object that varies significantly between different AML providers (Chainalysis, Elliptic, etc.). Each provider has their own proprietary response format and schema. Examples of provider-specific structures: - Chainalysis: Contains cluster info, risk scores, sanctions data - Elliptic: Includes risk assessment, entity types, compliance flags The structure is provider-dependent and cannot be standardized as each vendor implements their own proprietary data models and response formats. ", alias="providerResponse") diff --git a/fireblocks/models/screening_travel_rule_result.py b/fireblocks/models/screening_travel_rule_result.py index 8f6543e8..f5777f32 100644 --- a/fireblocks/models/screening_travel_rule_result.py +++ b/fireblocks/models/screening_travel_rule_result.py @@ -28,7 +28,7 @@ class ScreeningTravelRuleResult(BaseModel): """ - Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. + Deprecated: This field is not currently returned in the API response. Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. """ # noqa: E501 direction: Optional[TravelRuleDirectionEnum] = None is_verified: Optional[StrictBool] = Field(default=None, description="Whether the travel rule information was verified", alias="isVerified") diff --git a/fireblocks/models/asset_type_enum.py b/fireblocks/models/settlement_type_enum.py similarity index 81% rename from fireblocks/models/asset_type_enum.py rename to fireblocks/models/settlement_type_enum.py index a35f0a92..bfaeb469 100644 --- a/fireblocks/models/asset_type_enum.py +++ b/fireblocks/models/settlement_type_enum.py @@ -19,20 +19,20 @@ from typing_extensions import Self -class AssetTypeEnum(str, Enum): +class SettlementTypeEnum(str, Enum): """ - AssetTypeEnum + Settlement type supported by the provider """ """ allowed enum values """ - DIGITAL = 'DIGITAL' - FIAT = 'FIAT' + DVP = 'DVP' + PREFUNDED = 'PREFUNDED' @classmethod def from_json(cls, json_str: str) -> Self: - """Create an instance of AssetTypeEnum from a JSON string""" + """Create an instance of SettlementTypeEnum from a JSON string""" return cls(json.loads(json_str)) diff --git a/fireblocks/models/staking_positions_paginated_response.py b/fireblocks/models/staking_positions_paginated_response.py new file mode 100644 index 00000000..feee1e06 --- /dev/null +++ b/fireblocks/models/staking_positions_paginated_response.py @@ -0,0 +1,103 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from fireblocks.models.position import Position +from typing import Optional, Set +from typing_extensions import Self + +class StakingPositionsPaginatedResponse(BaseModel): + """ + StakingPositionsPaginatedResponse + """ # noqa: E501 + data: List[Position] = Field(description="The data of the current page of staking positions") + next: Optional[StrictStr] = Field(default=None, description="The cursor for the next page") + __properties: ClassVar[List[str]] = ["data", "next"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of StakingPositionsPaginatedResponse from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in data (list) + _items = [] + if self.data: + for _item_data in self.data: + if _item_data: + _items.append(_item_data.to_dict()) + _dict['data'] = _items + # set to None if next (nullable) is None + # and model_fields_set contains the field + if self.next is None and "next" in self.model_fields_set: + _dict['next'] = None + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of StakingPositionsPaginatedResponse from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "data": [Position.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, + "next": obj.get("next") + }) + return _obj + + diff --git a/fireblocks/models/token_ownership_response.py b/fireblocks/models/token_ownership_response.py index 60c03611..20a369f3 100644 --- a/fireblocks/models/token_ownership_response.py +++ b/fireblocks/models/token_ownership_response.py @@ -53,8 +53,8 @@ class TokenOwnershipResponse(BaseModel): @field_validator('blockchain_descriptor') def blockchain_descriptor_validate_enum(cls, value): """Validates the enum""" - if value not in set(['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']): - raise ValueError("must be one of enum values ('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')") + if value not in set(['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']): + raise ValueError("must be one of enum values ('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')") return value @field_validator('status') diff --git a/fireblocks/models/token_response.py b/fireblocks/models/token_response.py index ea27b33c..75c12e9e 100644 --- a/fireblocks/models/token_response.py +++ b/fireblocks/models/token_response.py @@ -46,8 +46,8 @@ class TokenResponse(BaseModel): @field_validator('blockchain_descriptor') def blockchain_descriptor_validate_enum(cls, value): """Validates the enum""" - if value not in set(['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']): - raise ValueError("must be one of enum values ('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')") + if value not in set(['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']): + raise ValueError("must be one of enum values ('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')") return value model_config = ConfigDict( diff --git a/fireblocks/models/tr_link_create_integration_request.py b/fireblocks/models/tr_link_create_integration_request.py index ddaf69ee..1b029c9c 100644 --- a/fireblocks/models/tr_link_create_integration_request.py +++ b/fireblocks/models/tr_link_create_integration_request.py @@ -19,7 +19,7 @@ import json from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List +from typing import Any, ClassVar, Dict, List, Optional from typing import Optional, Set from typing_extensions import Self @@ -29,7 +29,8 @@ class TRLinkCreateIntegrationRequest(BaseModel): """ # noqa: E501 customer_id: StrictStr = Field(description="Customer unique identifier", alias="customerId") partner_ident: StrictStr = Field(description="Partner identification code (e.g., \"sumsub\", \"notabene\")", alias="partnerIdent") - __properties: ClassVar[List[str]] = ["customerId", "partnerIdent"] + customer_integration_id: Optional[StrictStr] = Field(default=None, description="Optional. When supplied and permitted for the tenant (feature flag / CSM arrangement), this value is used as the TRLink integration identifier instead of a server-generated UUID. If omitted, the API generates a UUID. If supplied when the tenant is not permitted to set a custom id, the request fails with 400. Contact your CSM if you need a custom integration id.", alias="customerIntegrationId") + __properties: ClassVar[List[str]] = ["customerId", "partnerIdent", "customerIntegrationId"] model_config = ConfigDict( populate_by_name=True, @@ -83,7 +84,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate({ "customerId": obj.get("customerId"), - "partnerIdent": obj.get("partnerIdent") + "partnerIdent": obj.get("partnerIdent"), + "customerIntegrationId": obj.get("customerIntegrationId") }) return _obj diff --git a/fireblocks/models/trading_provider_details.py b/fireblocks/models/trading_provider_details.py new file mode 100644 index 00000000..42f1456c --- /dev/null +++ b/fireblocks/models/trading_provider_details.py @@ -0,0 +1,138 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +import pprint +from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator +from typing import Any, List, Optional +from fireblocks.models.account_based_provider_details import AccountBasedProviderDetails +from fireblocks.models.direct_provider_details import DirectProviderDetails +from pydantic import StrictStr, Field +from typing import Union, List, Set, Optional, Dict +from typing_extensions import Literal, Self + +TRADINGPROVIDERDETAILS_ONE_OF_SCHEMAS = ["AccountBasedProviderDetails", "DirectProviderDetails"] + +class TradingProviderDetails(BaseModel): + """ + TradingProviderDetails + """ + # data type: AccountBasedProviderDetails + oneof_schema_1_validator: Optional[AccountBasedProviderDetails] = None + # data type: DirectProviderDetails + oneof_schema_2_validator: Optional[DirectProviderDetails] = None + actual_instance: Optional[Union[AccountBasedProviderDetails, DirectProviderDetails]] = None + one_of_schemas: Set[str] = { "AccountBasedProviderDetails", "DirectProviderDetails" } + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator('actual_instance') + def actual_instance_must_validate_oneof(cls, v): + instance = TradingProviderDetails.model_construct() + error_messages = [] + match = 0 + # validate data type: AccountBasedProviderDetails + if not isinstance(v, AccountBasedProviderDetails): + error_messages.append(f"Error! Input type `{type(v)}` is not `AccountBasedProviderDetails`") + else: + match += 1 + # validate data type: DirectProviderDetails + if not isinstance(v, DirectProviderDetails): + error_messages.append(f"Error! Input type `{type(v)}` is not `DirectProviderDetails`") + else: + match += 1 + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when setting `actual_instance` in TradingProviderDetails with oneOf schemas: AccountBasedProviderDetails, DirectProviderDetails. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when setting `actual_instance` in TradingProviderDetails with oneOf schemas: AccountBasedProviderDetails, DirectProviderDetails. Details: " + ", ".join(error_messages)) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into AccountBasedProviderDetails + try: + instance.actual_instance = AccountBasedProviderDetails.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into DirectProviderDetails + try: + instance.actual_instance = DirectProviderDetails.from_json(json_str) + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError("Multiple matches found when deserializing the JSON string into TradingProviderDetails with oneOf schemas: AccountBasedProviderDetails, DirectProviderDetails. Details: " + ", ".join(error_messages)) + elif match == 0: + # no match + raise ValueError("No match found when deserializing the JSON string into TradingProviderDetails with oneOf schemas: AccountBasedProviderDetails, DirectProviderDetails. Details: " + ", ".join(error_messages)) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], AccountBasedProviderDetails, DirectProviderDetails]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump()) + + diff --git a/fireblocks/models/transaction_response.py b/fireblocks/models/transaction_response.py index 007061e0..26b87e99 100644 --- a/fireblocks/models/transaction_response.py +++ b/fireblocks/models/transaction_response.py @@ -51,7 +51,7 @@ class TransactionResponse(BaseModel): tx_hash: Optional[StrictStr] = Field(default=None, description="The hash of the transaction on the blockchain. * This parameter exists if at least one of the following conditions is met: 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`. 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well. 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`. * In addition, the following conditions must be met: 1. The asset is a crypto asset (not fiat). 2. The transaction operation is not RAW or `TYPED_MESSAGE`.", alias="txHash") operation: Optional[GetTransactionOperation] = None note: Optional[StrictStr] = Field(default=None, description="Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace.") - asset_id: Optional[StrictStr] = Field(default=None, description="The ID of the asset to transfer, for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`,`STAKE` ,`UNSTAKE` or `WITHDRAW` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/get_supported-assets)", alias="assetId") + asset_id: Optional[StrictStr] = Field(default=None, description="The ID of the asset to transfer for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`, or `STAKE` operations. [See the list of supported assets and their IDs on Fireblocks](https://developers.fireblocks.com/reference/get_supported-assets).", alias="assetId") asset_type: Optional[StrictStr] = Field(default=None, description="Type classification of the asset", alias="assetType") source: Optional[SourceTransferPeerPathResponse] = None source_address: Optional[StrictStr] = Field(default=None, description="For account based assets only, the source address of the transaction. **Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty.", alias="sourceAddress") diff --git a/fireblocks/models/travel_rule_action_enum.py b/fireblocks/models/travel_rule_action_enum.py index de25f9fe..70625a1e 100644 --- a/fireblocks/models/travel_rule_action_enum.py +++ b/fireblocks/models/travel_rule_action_enum.py @@ -30,6 +30,8 @@ class TravelRuleActionEnum(str, Enum): SCREEN = 'SCREEN' BYPASS = 'BYPASS' BLOCK = 'BLOCK' + PASS = 'PASS' + FREEZE = 'FREEZE' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/fireblocks/models/travel_rule_ownership_proof.py b/fireblocks/models/travel_rule_ownership_proof.py index 0528639b..b0b6e509 100644 --- a/fireblocks/models/travel_rule_ownership_proof.py +++ b/fireblocks/models/travel_rule_ownership_proof.py @@ -33,8 +33,10 @@ class TravelRuleOwnershipProof(BaseModel): address: Optional[StrictStr] = Field(default=None, description="The wallet address being verified. Examples: - For Ethereum: `0x896B...0b9b` - For Bitcoin: `1442...dxhsQ`") wallet_provider: Optional[StrictStr] = Field(default=None, description="The wallet provider or method used for verification. Examples: - For Metamask: `Metamask` - For manual signature: `manual`") url: Optional[StrictStr] = Field(default=None, description="The URL for the uploaded screenshot (for `screenshot` proof types only). Example: `https://example.com/uploaded_image.png`") + did: Optional[StrictStr] = Field(default=None, description="The Decentralized Identifier (DID) associated with the ownership proof.") + status: Optional[StrictStr] = Field(default=None, description="The status of the ownership proof verification.") confirmed: Optional[StrictBool] = Field(default=None, description="Whether the user confirmed ownership of the wallet (for `self-declaration` proofs). Example: `true`") - __properties: ClassVar[List[str]] = ["type", "proof", "attestation", "address", "wallet_provider", "url", "confirmed"] + __properties: ClassVar[List[str]] = ["type", "proof", "attestation", "address", "wallet_provider", "url", "did", "status", "confirmed"] model_config = ConfigDict( populate_by_name=True, @@ -93,6 +95,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "address": obj.get("address"), "wallet_provider": obj.get("wallet_provider"), "url": obj.get("url"), + "did": obj.get("did"), + "status": obj.get("status"), "confirmed": obj.get("confirmed") }) return _obj diff --git a/fireblocks/models/travel_rule_provider.py b/fireblocks/models/travel_rule_provider.py new file mode 100644 index 00000000..72d0aa6d --- /dev/null +++ b/fireblocks/models/travel_rule_provider.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import json +from enum import Enum +from typing_extensions import Self + + +class TravelRuleProvider(str, Enum): + """ + Travel rule compliance provider + """ + + """ + allowed enum values + """ + CODE = 'CODE' + GTR = 'GTR' + MY_OWN = 'MY_OWN' + NOTABENE = 'NOTABENE' + SYGNA = 'SYGNA' + SUMSUB = 'SUMSUB' + TRISA = 'TRISA' + TRUST = 'TRUST' + TWENTY_ONE_ANALYTICS = 'TWENTY_ONE_ANALYTICS' + VERIFY_VASP = 'VERIFY_VASP' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of TravelRuleProvider from a JSON string""" + return cls(json.loads(json_str)) + + diff --git a/fireblocks/models/travel_rule_result.py b/fireblocks/models/travel_rule_result.py index 649887c8..97786b0e 100644 --- a/fireblocks/models/travel_rule_result.py +++ b/fireblocks/models/travel_rule_result.py @@ -28,7 +28,7 @@ class TravelRuleResult(BaseModel): """ - Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. + Deprecated: This field is not currently returned in the API response. Detailed Travel Rule screening result containing provider-specific data. Contains Travel Rule specific information like verified status, rule type, and actions. """ # noqa: E501 direction: Optional[TravelRuleDirectionEnum] = None is_verified: Optional[StrictBool] = Field(default=None, description="Whether the travel rule information was verified", alias="isVerified") diff --git a/fireblocks/models/travel_rule_status_enum.py b/fireblocks/models/travel_rule_status_enum.py index 5a01f9c9..111ed237 100644 --- a/fireblocks/models/travel_rule_status_enum.py +++ b/fireblocks/models/travel_rule_status_enum.py @@ -32,6 +32,9 @@ class TravelRuleStatusEnum(str, Enum): BYPASSED = 'BYPASSED' FAILED = 'FAILED' FROZEN = 'FROZEN' + REJECTED = 'REJECTED' + CANCELED = 'CANCELED' + BLOCKING_TIME_EXPIRED = 'BLOCKING_TIME_EXPIRED' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/fireblocks/models/travel_rule_verdict_enum.py b/fireblocks/models/travel_rule_verdict_enum.py index d85d1cdd..608248e0 100644 --- a/fireblocks/models/travel_rule_verdict_enum.py +++ b/fireblocks/models/travel_rule_verdict_enum.py @@ -31,6 +31,9 @@ class TravelRuleVerdictEnum(str, Enum): REJECT = 'REJECT' ALERT = 'ALERT' REVIEW = 'REVIEW' + WAIT = 'WAIT' + FREEZE = 'FREEZE' + CANCEL = 'CANCEL' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/fireblocks/models/update_legal_entity_request.py b/fireblocks/models/update_legal_entity_request.py new file mode 100644 index 00000000..122129df --- /dev/null +++ b/fireblocks/models/update_legal_entity_request.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +""" + 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 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class UpdateLegalEntityRequest(BaseModel): + """ + UpdateLegalEntityRequest + """ # noqa: E501 + is_default: StrictBool = Field(description="Whether to set this registration as the workspace default", alias="isDefault") + __properties: ClassVar[List[str]] = ["isDefault"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of UpdateLegalEntityRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of UpdateLegalEntityRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "isDefault": obj.get("isDefault") + }) + return _obj + + diff --git a/fireblocks/models/user_role.py b/fireblocks/models/user_role.py index 6204f495..742ccf5e 100644 --- a/fireblocks/models/user_role.py +++ b/fireblocks/models/user_role.py @@ -38,6 +38,8 @@ class UserRole(str, Enum): AUDITOR = 'AUDITOR' NCW_ADMIN = 'NCW_ADMIN' NCW_SIGNER = 'NCW_SIGNER' + SECURITY_ADMIN = 'SECURITY_ADMIN' + SECURITY_AUDITOR = 'SECURITY_AUDITOR' @classmethod def from_json(cls, json_str: str) -> Self: diff --git a/pyproject.toml b/pyproject.toml index 253ce43a..08a27f53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fireblocks" -version = "15.0.0" +version = "0.0.0" description = "Fireblocks API" authors = ["Fireblocks "] license = "MIT License" diff --git a/setup.py b/setup.py index 724a56b5..8e55f57b 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ # prerequisite: setuptools # http://pypi.python.org/pypi/setuptools NAME = "fireblocks" -VERSION = "15.0.0" +VERSION = "0.0.0" PYTHON_REQUIRES = ">= 3.8" REQUIRES = [ "urllib3 >= 2.1.0, < 3.0.0", diff --git a/test/test_account_based_access_provider.py b/test/test_account_based_access_provider.py index 8425504b..971b18ae 100644 --- a/test/test_account_based_access_provider.py +++ b/test/test_account_based_access_provider.py @@ -41,7 +41,7 @@ def make_instance(self, include_optional) -> AccountBasedAccessProvider: name = '', logo = '', account_based = True, - manifest = {"assetTypes":["DIGITAL","FIAT"],"capabilities":["SPOT_TRADING","LIMIT_ORDERS"]}, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, connected = True, accounts = [ {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} @@ -52,8 +52,11 @@ def make_instance(self, include_optional) -> AccountBasedAccessProvider: id = '', name = '', account_based = True, - manifest = {"assetTypes":["DIGITAL","FIAT"],"capabilities":["SPOT_TRADING","LIMIT_ORDERS"]}, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ], ) """ diff --git a/test/test_account_based_access_provider_details.py b/test/test_account_based_access_provider_info.py similarity index 63% rename from test/test_account_based_access_provider_details.py rename to test/test_account_based_access_provider_info.py index 1fc6ddab..0e1d6854 100644 --- a/test/test_account_based_access_provider_details.py +++ b/test/test_account_based_access_provider_info.py @@ -15,13 +15,13 @@ import unittest -from fireblocks.models.account_based_access_provider_details import ( - AccountBasedAccessProviderDetails, +from fireblocks.models.account_based_access_provider_info import ( + AccountBasedAccessProviderInfo, ) -class TestAccountBasedAccessProviderDetails(unittest.TestCase): - """AccountBasedAccessProviderDetails unit test stubs""" +class TestAccountBasedAccessProviderInfo(unittest.TestCase): + """AccountBasedAccessProviderInfo unit test stubs""" def setUp(self): pass @@ -29,31 +29,32 @@ def setUp(self): def tearDown(self): pass - def make_instance(self, include_optional) -> AccountBasedAccessProviderDetails: - """Test AccountBasedAccessProviderDetails + def make_instance(self, include_optional) -> AccountBasedAccessProviderInfo: + """Test AccountBasedAccessProviderInfo include_optional is a boolean, when False only required params are included, when True both required and optional params are included""" - # uncomment below to create an instance of `AccountBasedAccessProviderDetails` + # uncomment below to create an instance of `AccountBasedAccessProviderInfo` """ - model = AccountBasedAccessProviderDetails() + model = AccountBasedAccessProviderInfo() if include_optional: - return AccountBasedAccessProviderDetails( - manifest = {"assetTypes":["DIGITAL","FIAT"],"capabilities":["SPOT_TRADING","LIMIT_ORDERS"]}, + return AccountBasedAccessProviderInfo( connected = True, accounts = [ {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} ] ) else: - return AccountBasedAccessProviderDetails( - manifest = {"assetTypes":["DIGITAL","FIAT"],"capabilities":["SPOT_TRADING","LIMIT_ORDERS"]}, + return AccountBasedAccessProviderInfo( connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ], ) """ - def testAccountBasedAccessProviderDetails(self): - """Test AccountBasedAccessProviderDetails""" + def testAccountBasedAccessProviderInfo(self): + """Test AccountBasedAccessProviderInfo""" # inst_req_only = self.make_instance(include_optional=False) # inst_req_and_optional = self.make_instance(include_optional=True) diff --git a/test/test_account_based_provider_details.py b/test/test_account_based_provider_details.py new file mode 100644 index 00000000..725ce04c --- /dev/null +++ b/test/test_account_based_provider_details.py @@ -0,0 +1,70 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.account_based_provider_details import AccountBasedProviderDetails + + +class TestAccountBasedProviderDetails(unittest.TestCase): + """AccountBasedProviderDetails unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AccountBasedProviderDetails: + """Test AccountBasedProviderDetails + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AccountBasedProviderDetails` + """ + model = AccountBasedProviderDetails() + if include_optional: + return AccountBasedProviderDetails( + id = '', + name = '', + logo = '', + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, + connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ] + ) + else: + return AccountBasedProviderDetails( + id = '', + name = '', + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, + connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ], + ) + """ + + def testAccountBasedProviderDetails(self): + """Test AccountBasedProviderDetails""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_add_collateral_request_body.py b/test/test_add_collateral_request_body.py index 1307f68a..93705bbc 100644 --- a/test/test_add_collateral_request_body.py +++ b/test/test_add_collateral_request_body.py @@ -166,6 +166,8 @@ def make_instance(self, include_optional) -> AddCollateralRequestBody: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_proof = fireblocks.models.travel_rule_ownership_proof.TravelRuleOwnershipProof( proof = '0x3dd4a17a...ce4a2bcd1b', @@ -173,6 +175,8 @@ def make_instance(self, include_optional) -> AddCollateralRequestBody: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_did = 'did:key:z6Mkf67890Zghijkl67890', originator_did = 'did:key:z6Mkf12345Zabcdef12345', diff --git a/test/test_address_registry_add_vault_opt_outs_request.py b/test/test_address_registry_add_vault_opt_outs_request.py new file mode 100644 index 00000000..3f62486e --- /dev/null +++ b/test/test_address_registry_add_vault_opt_outs_request.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_add_vault_opt_outs_request import ( + AddressRegistryAddVaultOptOutsRequest, +) + + +class TestAddressRegistryAddVaultOptOutsRequest(unittest.TestCase): + """AddressRegistryAddVaultOptOutsRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddressRegistryAddVaultOptOutsRequest: + """Test AddressRegistryAddVaultOptOutsRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryAddVaultOptOutsRequest` + """ + model = AddressRegistryAddVaultOptOutsRequest() + if include_optional: + return AddressRegistryAddVaultOptOutsRequest( + vault_account_ids = [10001,"10002"] + ) + else: + return AddressRegistryAddVaultOptOutsRequest( + vault_account_ids = [10001,"10002"], + ) + """ + + def testAddressRegistryAddVaultOptOutsRequest(self): + """Test AddressRegistryAddVaultOptOutsRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py b/test/test_address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py new file mode 100644 index 00000000..87c366f3 --- /dev/null +++ b/test/test_address_registry_add_vault_opt_outs_request_vault_account_ids_inner.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_add_vault_opt_outs_request_vault_account_ids_inner import ( + AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner, +) + + +class TestAddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner(unittest.TestCase): + """AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance( + self, include_optional + ) -> AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner: + """Test AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner` + """ + model = AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner() + if include_optional: + return AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner( + ) + else: + return AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner( + ) + """ + + def testAddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner(self): + """Test AddressRegistryAddVaultOptOutsRequestVaultAccountIdsInner""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_add_vault_opt_outs_response.py b/test/test_address_registry_add_vault_opt_outs_response.py new file mode 100644 index 00000000..ec9614a3 --- /dev/null +++ b/test/test_address_registry_add_vault_opt_outs_response.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_add_vault_opt_outs_response import ( + AddressRegistryAddVaultOptOutsResponse, +) + + +class TestAddressRegistryAddVaultOptOutsResponse(unittest.TestCase): + """AddressRegistryAddVaultOptOutsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddressRegistryAddVaultOptOutsResponse: + """Test AddressRegistryAddVaultOptOutsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryAddVaultOptOutsResponse` + """ + model = AddressRegistryAddVaultOptOutsResponse() + if include_optional: + return AddressRegistryAddVaultOptOutsResponse( + accepted_count = 3 + ) + else: + return AddressRegistryAddVaultOptOutsResponse( + accepted_count = 3, + ) + """ + + def testAddressRegistryAddVaultOptOutsResponse(self): + """Test AddressRegistryAddVaultOptOutsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_error.py b/test/test_address_registry_error.py index 8493ee76..a0077701 100644 --- a/test/test_address_registry_error.py +++ b/test/test_address_registry_error.py @@ -37,12 +37,12 @@ def make_instance(self, include_optional) -> AddressRegistryError: model = AddressRegistryError() if include_optional: return AddressRegistryError( - code = 56, - message = '' + code = 2140, + message = 'Address registry opt-in required for this workspace.' ) else: return AddressRegistryError( - message = '', + message = 'Address registry opt-in required for this workspace.', ) """ diff --git a/test/test_address_registry_get_vault_opt_out_response.py b/test/test_address_registry_get_vault_opt_out_response.py new file mode 100644 index 00000000..d4a62122 --- /dev/null +++ b/test/test_address_registry_get_vault_opt_out_response.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_get_vault_opt_out_response import ( + AddressRegistryGetVaultOptOutResponse, +) + + +class TestAddressRegistryGetVaultOptOutResponse(unittest.TestCase): + """AddressRegistryGetVaultOptOutResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddressRegistryGetVaultOptOutResponse: + """Test AddressRegistryGetVaultOptOutResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryGetVaultOptOutResponse` + """ + model = AddressRegistryGetVaultOptOutResponse() + if include_optional: + return AddressRegistryGetVaultOptOutResponse( + opted_out = False + ) + else: + return AddressRegistryGetVaultOptOutResponse( + opted_out = False, + ) + """ + + def testAddressRegistryGetVaultOptOutResponse(self): + """Test AddressRegistryGetVaultOptOutResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_legal_entity.py b/test/test_address_registry_legal_entity.py index f34d6241..22eb8df8 100644 --- a/test/test_address_registry_legal_entity.py +++ b/test/test_address_registry_legal_entity.py @@ -37,15 +37,21 @@ def make_instance(self, include_optional) -> AddressRegistryLegalEntity: model = AddressRegistryLegalEntity() if include_optional: return AddressRegistryLegalEntity( - company_name = 'ACME Corporation', - country_code = 'US', - company_id = '550e8400-e29b-41d4-a716-446655440000' + verified = True, + entity_name = 'ACME Corporation', + jurisdiction = 'US', + lei = '254900GC33RBE6FQA817', + travel_rule_providers = ["TRAVEL_RULE_PROVIDER_NOTABENE","TRAVEL_RULE_PROVIDER_SYGNA"], + email = 'compliance@example.com' ) else: return AddressRegistryLegalEntity( - company_name = 'ACME Corporation', - country_code = 'US', - company_id = '550e8400-e29b-41d4-a716-446655440000', + verified = True, + entity_name = 'ACME Corporation', + jurisdiction = 'US', + lei = '254900GC33RBE6FQA817', + travel_rule_providers = ["TRAVEL_RULE_PROVIDER_NOTABENE","TRAVEL_RULE_PROVIDER_SYGNA"], + email = 'compliance@example.com', ) """ diff --git a/test/test_address_registry_legal_entity_legacy.py b/test/test_address_registry_legal_entity_legacy.py new file mode 100644 index 00000000..6e1f47ba --- /dev/null +++ b/test/test_address_registry_legal_entity_legacy.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_legal_entity_legacy import ( + AddressRegistryLegalEntityLegacy, +) + + +class TestAddressRegistryLegalEntityLegacy(unittest.TestCase): + """AddressRegistryLegalEntityLegacy unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddressRegistryLegalEntityLegacy: + """Test AddressRegistryLegalEntityLegacy + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryLegalEntityLegacy` + """ + model = AddressRegistryLegalEntityLegacy() + if include_optional: + return AddressRegistryLegalEntityLegacy( + company_name = 'ACME Corporation', + country_code = 'US', + company_id = '550e8400-e29b-41d4-a716-446655440000' + ) + else: + return AddressRegistryLegalEntityLegacy( + company_name = 'ACME Corporation', + country_code = 'US', + company_id = '550e8400-e29b-41d4-a716-446655440000', + ) + """ + + def testAddressRegistryLegalEntityLegacy(self): + """Test AddressRegistryLegalEntityLegacy""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_list_vault_opt_outs_response.py b/test/test_address_registry_list_vault_opt_outs_response.py new file mode 100644 index 00000000..531ddb8c --- /dev/null +++ b/test/test_address_registry_list_vault_opt_outs_response.py @@ -0,0 +1,63 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_list_vault_opt_outs_response import ( + AddressRegistryListVaultOptOutsResponse, +) + + +class TestAddressRegistryListVaultOptOutsResponse(unittest.TestCase): + """AddressRegistryListVaultOptOutsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance( + self, include_optional + ) -> AddressRegistryListVaultOptOutsResponse: + """Test AddressRegistryListVaultOptOutsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryListVaultOptOutsResponse` + """ + model = AddressRegistryListVaultOptOutsResponse() + if include_optional: + return AddressRegistryListVaultOptOutsResponse( + total = 2, + data = [{"vaultAccountId":10001},{"vaultAccountId":10002}], + next = 'eyJvZmZzZXQiOjEwLCJwYWdlU2l6ZSI6MTB9', + prev = '' + ) + else: + return AddressRegistryListVaultOptOutsResponse( + total = 2, + data = [{"vaultAccountId":10001},{"vaultAccountId":10002}], + ) + """ + + def testAddressRegistryListVaultOptOutsResponse(self): + """Test AddressRegistryListVaultOptOutsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_remove_all_vault_opt_outs_response.py b/test/test_address_registry_remove_all_vault_opt_outs_response.py new file mode 100644 index 00000000..5e1cfb98 --- /dev/null +++ b/test/test_address_registry_remove_all_vault_opt_outs_response.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_remove_all_vault_opt_outs_response import ( + AddressRegistryRemoveAllVaultOptOutsResponse, +) + + +class TestAddressRegistryRemoveAllVaultOptOutsResponse(unittest.TestCase): + """AddressRegistryRemoveAllVaultOptOutsResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance( + self, include_optional + ) -> AddressRegistryRemoveAllVaultOptOutsResponse: + """Test AddressRegistryRemoveAllVaultOptOutsResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryRemoveAllVaultOptOutsResponse` + """ + model = AddressRegistryRemoveAllVaultOptOutsResponse() + if include_optional: + return AddressRegistryRemoveAllVaultOptOutsResponse( + removed_count = 5 + ) + else: + return AddressRegistryRemoveAllVaultOptOutsResponse( + removed_count = 5, + ) + """ + + def testAddressRegistryRemoveAllVaultOptOutsResponse(self): + """Test AddressRegistryRemoveAllVaultOptOutsResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_remove_vault_opt_out_response.py b/test/test_address_registry_remove_vault_opt_out_response.py new file mode 100644 index 00000000..db97c1a7 --- /dev/null +++ b/test/test_address_registry_remove_vault_opt_out_response.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_remove_vault_opt_out_response import ( + AddressRegistryRemoveVaultOptOutResponse, +) + + +class TestAddressRegistryRemoveVaultOptOutResponse(unittest.TestCase): + """AddressRegistryRemoveVaultOptOutResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance( + self, include_optional + ) -> AddressRegistryRemoveVaultOptOutResponse: + """Test AddressRegistryRemoveVaultOptOutResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryRemoveVaultOptOutResponse` + """ + model = AddressRegistryRemoveVaultOptOutResponse() + if include_optional: + return AddressRegistryRemoveVaultOptOutResponse( + opted_out = False + ) + else: + return AddressRegistryRemoveVaultOptOutResponse( + opted_out = False, + ) + """ + + def testAddressRegistryRemoveVaultOptOutResponse(self): + """Test AddressRegistryRemoveVaultOptOutResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_tenant_registry_response.py b/test/test_address_registry_tenant_registry_response.py new file mode 100644 index 00000000..bf1c06fa --- /dev/null +++ b/test/test_address_registry_tenant_registry_response.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_tenant_registry_response import ( + AddressRegistryTenantRegistryResponse, +) + + +class TestAddressRegistryTenantRegistryResponse(unittest.TestCase): + """AddressRegistryTenantRegistryResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddressRegistryTenantRegistryResponse: + """Test AddressRegistryTenantRegistryResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryTenantRegistryResponse` + """ + model = AddressRegistryTenantRegistryResponse() + if include_optional: + return AddressRegistryTenantRegistryResponse( + status = 'OPTED_IN' + ) + else: + return AddressRegistryTenantRegistryResponse( + status = 'OPTED_IN', + ) + """ + + def testAddressRegistryTenantRegistryResponse(self): + """Test AddressRegistryTenantRegistryResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_travel_rule_provider.py b/test/test_address_registry_travel_rule_provider.py new file mode 100644 index 00000000..75aceab3 --- /dev/null +++ b/test/test_address_registry_travel_rule_provider.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_travel_rule_provider import ( + AddressRegistryTravelRuleProvider, +) + + +class TestAddressRegistryTravelRuleProvider(unittest.TestCase): + """AddressRegistryTravelRuleProvider unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAddressRegistryTravelRuleProvider(self): + """Test AddressRegistryTravelRuleProvider""" + # inst = AddressRegistryTravelRuleProvider() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_vault_list_order.py b/test/test_address_registry_vault_list_order.py new file mode 100644 index 00000000..5e63f776 --- /dev/null +++ b/test/test_address_registry_vault_list_order.py @@ -0,0 +1,38 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_vault_list_order import ( + AddressRegistryVaultListOrder, +) + + +class TestAddressRegistryVaultListOrder(unittest.TestCase): + """AddressRegistryVaultListOrder unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testAddressRegistryVaultListOrder(self): + """Test AddressRegistryVaultListOrder""" + # inst = AddressRegistryVaultListOrder() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_address_registry_vault_opt_out_item.py b/test/test_address_registry_vault_opt_out_item.py new file mode 100644 index 00000000..e4a930c0 --- /dev/null +++ b/test/test_address_registry_vault_opt_out_item.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.address_registry_vault_opt_out_item import ( + AddressRegistryVaultOptOutItem, +) + + +class TestAddressRegistryVaultOptOutItem(unittest.TestCase): + """AddressRegistryVaultOptOutItem unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AddressRegistryVaultOptOutItem: + """Test AddressRegistryVaultOptOutItem + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AddressRegistryVaultOptOutItem` + """ + model = AddressRegistryVaultOptOutItem() + if include_optional: + return AddressRegistryVaultOptOutItem( + vault_account_id = 10001 + ) + else: + return AddressRegistryVaultOptOutItem( + vault_account_id = 10001, + ) + """ + + def testAddressRegistryVaultOptOutItem(self): + """Test AddressRegistryVaultOptOutItem""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_assign_vaults_to_legal_entity_request.py b/test/test_assign_vaults_to_legal_entity_request.py new file mode 100644 index 00000000..cf2d614c --- /dev/null +++ b/test/test_assign_vaults_to_legal_entity_request.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.assign_vaults_to_legal_entity_request import ( + AssignVaultsToLegalEntityRequest, +) + + +class TestAssignVaultsToLegalEntityRequest(unittest.TestCase): + """AssignVaultsToLegalEntityRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AssignVaultsToLegalEntityRequest: + """Test AssignVaultsToLegalEntityRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AssignVaultsToLegalEntityRequest` + """ + model = AssignVaultsToLegalEntityRequest() + if include_optional: + return AssignVaultsToLegalEntityRequest( + vault_account_ids = ["0","1","2"] + ) + else: + return AssignVaultsToLegalEntityRequest( + vault_account_ids = ["0","1","2"], + ) + """ + + def testAssignVaultsToLegalEntityRequest(self): + """Test AssignVaultsToLegalEntityRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_assign_vaults_to_legal_entity_response.py b/test/test_assign_vaults_to_legal_entity_response.py new file mode 100644 index 00000000..9ce98f28 --- /dev/null +++ b/test/test_assign_vaults_to_legal_entity_response.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.assign_vaults_to_legal_entity_response import ( + AssignVaultsToLegalEntityResponse, +) + + +class TestAssignVaultsToLegalEntityResponse(unittest.TestCase): + """AssignVaultsToLegalEntityResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> AssignVaultsToLegalEntityResponse: + """Test AssignVaultsToLegalEntityResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `AssignVaultsToLegalEntityResponse` + """ + model = AssignVaultsToLegalEntityResponse() + if include_optional: + return AssignVaultsToLegalEntityResponse( + assigned_count = 3 + ) + else: + return AssignVaultsToLegalEntityResponse( + assigned_count = 3, + ) + """ + + def testAssignVaultsToLegalEntityResponse(self): + """Test AssignVaultsToLegalEntityResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_base_provider.py b/test/test_base_provider.py index 003aae7a..7ce4a5dc 100644 --- a/test/test_base_provider.py +++ b/test/test_base_provider.py @@ -40,13 +40,15 @@ def make_instance(self, include_optional) -> BaseProvider: id = '', name = '', logo = '', - account_based = True + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}} ) else: return BaseProvider( id = '', name = '', account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, ) """ diff --git a/test/test_compliance_api.py b/test/test_compliance_api.py index 91b6214d..ca80426d 100644 --- a/test/test_compliance_api.py +++ b/test/test_compliance_api.py @@ -27,6 +27,34 @@ def setUp(self) -> None: def tearDown(self) -> None: pass + def test_add_address_registry_vault_opt_outs(self) -> None: + """Test case for add_address_registry_vault_opt_outs + + Add vault accounts to the address registry opt-out list + """ + pass + + def test_assign_vaults_to_legal_entity(self) -> None: + """Test case for assign_vaults_to_legal_entity + + Assign vault accounts to a legal entity + """ + pass + + def test_get_address_registry_tenant_participation_status(self) -> None: + """Test case for get_address_registry_tenant_participation_status + + Get address registry participation status for the authenticated workspace + """ + pass + + def test_get_address_registry_vault_opt_out(self) -> None: + """Test case for get_address_registry_vault_opt_out + + Get whether a vault account is opted out of the address registry + """ + pass + def test_get_aml_post_screening_policy(self) -> None: """Test case for get_aml_post_screening_policy @@ -41,10 +69,24 @@ def test_get_aml_screening_policy(self) -> None: """ pass + def test_get_legal_entity(self) -> None: + """Test case for get_legal_entity + + Get a legal entity + """ + pass + def test_get_legal_entity_by_address(self) -> None: """Test case for get_legal_entity_by_address - Look up legal entity by address and asset + [Deprecated] Look up legal entity by address (query parameter) + """ + pass + + def test_get_legal_entity_for_address(self) -> None: + """Test case for get_legal_entity_for_address + + Look up legal entity by blockchain address """ pass @@ -69,6 +111,62 @@ def test_get_screening_policy(self) -> None: """ pass + def test_list_address_registry_vault_opt_outs(self) -> None: + """Test case for list_address_registry_vault_opt_outs + + List vault-level address registry opt-outs (paginated) + """ + pass + + def test_list_legal_entities(self) -> None: + """Test case for list_legal_entities + + List legal entities (Paginated) + """ + pass + + def test_list_vaults_for_legal_entity(self) -> None: + """Test case for list_vaults_for_legal_entity + + List vault accounts for a legal entity (Paginated) + """ + pass + + def test_opt_in_address_registry_tenant(self) -> None: + """Test case for opt_in_address_registry_tenant + + Opt the workspace in to the address registry + """ + pass + + def test_opt_out_address_registry_tenant(self) -> None: + """Test case for opt_out_address_registry_tenant + + Opt the workspace out of the address registry + """ + pass + + def test_register_legal_entity(self) -> None: + """Test case for register_legal_entity + + Register a new legal entity + """ + pass + + def test_remove_address_registry_vault_opt_out(self) -> None: + """Test case for remove_address_registry_vault_opt_out + + Remove a single vault account from the address registry opt-out list + """ + pass + + def test_remove_all_address_registry_vault_opt_outs(self) -> None: + """Test case for remove_all_address_registry_vault_opt_outs + + Remove all vault-level address registry opt-outs for the workspace + """ + pass + def test_retry_rejected_transaction_bypass_screening_checks(self) -> None: """Test case for retry_rejected_transaction_bypass_screening_checks @@ -90,6 +188,13 @@ def test_update_aml_screening_configuration(self) -> None: """ pass + def test_update_legal_entity(self) -> None: + """Test case for update_legal_entity + + Update legal entity + """ + pass + def test_update_screening_configuration(self) -> None: """Test case for update_screening_configuration diff --git a/test/test_compliance_result_full_payload.py b/test/test_compliance_result_full_payload.py index 9fd54921..933d638f 100644 --- a/test/test_compliance_result_full_payload.py +++ b/test/test_compliance_result_full_payload.py @@ -42,13 +42,13 @@ def make_instance(self, include_optional) -> ComplianceResultFullPayload: payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -112,19 +112,20 @@ def make_instance(self, include_optional) -> ComplianceResultFullPayload: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ), + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ), tr = fireblocks.models.compliance_screening_result_full_payload.ComplianceScreeningResultFullPayload( provider = 'NOTABENE', payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -188,20 +189,21 @@ def make_instance(self, include_optional) -> ComplianceResultFullPayload: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ), + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ), aml_list = [ fireblocks.models.compliance_screening_result_full_payload.ComplianceScreeningResultFullPayload( provider = 'NOTABENE', payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -265,7 +267,8 @@ def make_instance(self, include_optional) -> ComplianceResultFullPayload: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ) + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ) ], status = 'Completed', aml_registration = fireblocks.models.aml_registration_result_full_payload.AmlRegistrationResultFullPayload( diff --git a/test/test_compliance_results.py b/test/test_compliance_results.py index 39114a60..05374eb7 100644 --- a/test/test_compliance_results.py +++ b/test/test_compliance_results.py @@ -42,13 +42,13 @@ def make_instance(self, include_optional) -> ComplianceResults: payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -112,19 +112,20 @@ def make_instance(self, include_optional) -> ComplianceResults: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ), + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ), tr = fireblocks.models.compliance_screening_result.ComplianceScreeningResult( provider = 'NOTABENE', payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -188,20 +189,21 @@ def make_instance(self, include_optional) -> ComplianceResults: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ), + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ), aml_list = [ fireblocks.models.compliance_screening_result.ComplianceScreeningResult( provider = 'NOTABENE', payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -265,7 +267,8 @@ def make_instance(self, include_optional) -> ComplianceResults: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ) + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ) ], status = 'Completed', aml_registration = fireblocks.models.aml_registration_result.AmlRegistrationResult( diff --git a/test/test_compliance_screening_result.py b/test/test_compliance_screening_result.py index 9a8599b5..70d69e41 100644 --- a/test/test_compliance_screening_result.py +++ b/test/test_compliance_screening_result.py @@ -41,13 +41,13 @@ def make_instance(self, include_optional) -> ComplianceScreeningResult: payload = None, timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -119,7 +119,8 @@ def make_instance(self, include_optional) -> ComplianceScreeningResult: matched_no_trm_screening_rule = None, customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6' + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { } ) else: return ComplianceScreeningResult( diff --git a/test/test_compliance_screening_result_full_payload.py b/test/test_compliance_screening_result_full_payload.py index ed290f27..a54211da 100644 --- a/test/test_compliance_screening_result_full_payload.py +++ b/test/test_compliance_screening_result_full_payload.py @@ -43,13 +43,13 @@ def make_instance(self, include_optional) -> ComplianceScreeningResultFullPayloa payload = None, timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -121,7 +121,8 @@ def make_instance(self, include_optional) -> ComplianceScreeningResultFullPayloa matched_no_trm_screening_rule = None, customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6' + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { } ) else: return ComplianceScreeningResultFullPayload( diff --git a/test/test_create_multiple_accounts_request.py b/test/test_create_multiple_accounts_request.py index 20fcaff3..34e54ca3 100644 --- a/test/test_create_multiple_accounts_request.py +++ b/test/test_create_multiple_accounts_request.py @@ -43,7 +43,8 @@ def make_instance(self, include_optional) -> CreateMultipleAccountsRequest: base_asset_ids = ["BTC","ETH","SOL"], names = ["first va","client 65502e71-ecdf-48da-a074-c1753befc7fb"], vault_account_names_starting_index = 0, - prefix = 'Copied from: ' + prefix = 'Copied from: ', + tag_ids = ["a1b2c3d4-e5f6-7890-abcd-ef1234567890","b2c3d4e5-f6a7-8901-bcde-f12345678901"] ) else: return CreateMultipleAccountsRequest( diff --git a/test/test_direct_access_provider.py b/test/test_direct_access_provider.py index 411864f1..185e398d 100644 --- a/test/test_direct_access_provider.py +++ b/test/test_direct_access_provider.py @@ -41,15 +41,18 @@ def make_instance(self, include_optional) -> DirectAccessProvider: name = '', logo = '', account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, approved = True, has_terms_of_service = True, - terms_of_service_url = '' + terms_of_service_url = '', + privacy_policy_url = '' ) else: return DirectAccessProvider( id = '', name = '', account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, has_terms_of_service = True, ) """ diff --git a/test/test_direct_access_provider_details.py b/test/test_direct_access_provider_info.py similarity index 70% rename from test/test_direct_access_provider_details.py rename to test/test_direct_access_provider_info.py index 23b68683..7abb8349 100644 --- a/test/test_direct_access_provider_details.py +++ b/test/test_direct_access_provider_info.py @@ -15,11 +15,11 @@ import unittest -from fireblocks.models.direct_access_provider_details import DirectAccessProviderDetails +from fireblocks.models.direct_access_provider_info import DirectAccessProviderInfo -class TestDirectAccessProviderDetails(unittest.TestCase): - """DirectAccessProviderDetails unit test stubs""" +class TestDirectAccessProviderInfo(unittest.TestCase): + """DirectAccessProviderInfo unit test stubs""" def setUp(self): pass @@ -27,28 +27,29 @@ def setUp(self): def tearDown(self): pass - def make_instance(self, include_optional) -> DirectAccessProviderDetails: - """Test DirectAccessProviderDetails + def make_instance(self, include_optional) -> DirectAccessProviderInfo: + """Test DirectAccessProviderInfo include_optional is a boolean, when False only required params are included, when True both required and optional params are included""" - # uncomment below to create an instance of `DirectAccessProviderDetails` + # uncomment below to create an instance of `DirectAccessProviderInfo` """ - model = DirectAccessProviderDetails() + model = DirectAccessProviderInfo() if include_optional: - return DirectAccessProviderDetails( + return DirectAccessProviderInfo( approved = True, has_terms_of_service = True, - terms_of_service_url = '' + terms_of_service_url = '', + privacy_policy_url = '' ) else: - return DirectAccessProviderDetails( + return DirectAccessProviderInfo( has_terms_of_service = True, ) """ - def testDirectAccessProviderDetails(self): - """Test DirectAccessProviderDetails""" + def testDirectAccessProviderInfo(self): + """Test DirectAccessProviderInfo""" # inst_req_only = self.make_instance(include_optional=False) # inst_req_and_optional = self.make_instance(include_optional=True) diff --git a/test/test_direct_provider_details.py b/test/test_direct_provider_details.py new file mode 100644 index 00000000..343b21e7 --- /dev/null +++ b/test/test_direct_provider_details.py @@ -0,0 +1,67 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.direct_provider_details import DirectProviderDetails + + +class TestDirectProviderDetails(unittest.TestCase): + """DirectProviderDetails unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> DirectProviderDetails: + """Test DirectProviderDetails + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `DirectProviderDetails` + """ + model = DirectProviderDetails() + if include_optional: + return DirectProviderDetails( + id = '', + name = '', + logo = '', + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, + approved = True, + has_terms_of_service = True, + terms_of_service_url = '', + privacy_policy_url = '' + ) + else: + return DirectProviderDetails( + id = '', + name = '', + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, + has_terms_of_service = True, + ) + """ + + def testDirectProviderDetails(self): + """Test DirectProviderDetails""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_execution_request_details_type.py b/test/test_execution_request_details_type.py new file mode 100644 index 00000000..7ea547aa --- /dev/null +++ b/test/test_execution_request_details_type.py @@ -0,0 +1,36 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.execution_request_details_type import ExecutionRequestDetailsType + + +class TestExecutionRequestDetailsType(unittest.TestCase): + """ExecutionRequestDetailsType unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def testExecutionRequestDetailsType(self): + """Test ExecutionRequestDetailsType""" + # inst = ExecutionRequestDetailsType() + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_gleif_data.py b/test/test_gleif_data.py new file mode 100644 index 00000000..d8dcbff9 --- /dev/null +++ b/test/test_gleif_data.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.gleif_data import GleifData + + +class TestGleifData(unittest.TestCase): + """GleifData unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> GleifData: + """Test GleifData + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `GleifData` + """ + model = GleifData() + if include_optional: + return GleifData( + lei = '529900HNOAA1KXQJUQ27', + legal_name = 'Example Corporation Ltd.', + other_names = ["ExCorp","Example Corp"], + legal_address_region = 'NY', + legal_address_country = 'US', + next_renewal_date = '2025-12-31T00:00Z' + ) + else: + return GleifData( + lei = '529900HNOAA1KXQJUQ27', + legal_name = 'Example Corporation Ltd.', + legal_address_country = 'US', + ) + """ + + def testGleifData(self): + """Test GleifData""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_interac_address.py b/test/test_interac_address.py index 5868a8fb..559f2068 100644 --- a/test/test_interac_address.py +++ b/test/test_interac_address.py @@ -41,7 +41,10 @@ def make_instance(self, include_optional) -> InteracAddress: recipient_handle = fireblocks.models.recipient_handle.RecipientHandle( type = 'EMAIL', value = 'john.smith@email.com', ), - message = 'Please deposit the funds into the account' + message = 'Please deposit the funds into the account', + auto_deposit = True, + security_question = 'What is your mother's maiden name?', + security_answer = 'Jane Smith' ) else: return InteracAddress( @@ -49,6 +52,7 @@ def make_instance(self, include_optional) -> InteracAddress: recipient_handle = fireblocks.models.recipient_handle.RecipientHandle( type = 'EMAIL', value = 'john.smith@email.com', ), + auto_deposit = True, ) """ diff --git a/test/test_interac_destination.py b/test/test_interac_destination.py index efde37e3..720d6462 100644 --- a/test/test_interac_destination.py +++ b/test/test_interac_destination.py @@ -38,12 +38,12 @@ def make_instance(self, include_optional) -> InteracDestination: if include_optional: return InteracDestination( type = 'INTERAC', - address = {"accountHolder":{"name":"John Smith","city":"Toronto","country":"CA","subdivision":"ON","address":"123 Yonge Street","postalCode":"M5B 1M4"},"recipientHandle":{"type":"EMAIL","value":"john.smith@email.com"},"message":"Please deposit the funds into the account","securityQuestion":"What is your mother's maiden name?","securityAnswer":"Jane Smith"} + address = {"accountHolder":{"name":"John Smith","city":"Toronto","country":"CA","subdivision":"ON","address":"123 Yonge Street","postalCode":"M5B 1M4"},"recipientHandle":{"type":"EMAIL","value":"john.smith@email.com"},"message":"Please deposit the funds into the account","autoDeposit":true,"securityQuestion":"What is your mother's maiden name?","securityAnswer":"Jane Smith"} ) else: return InteracDestination( type = 'INTERAC', - address = {"accountHolder":{"name":"John Smith","city":"Toronto","country":"CA","subdivision":"ON","address":"123 Yonge Street","postalCode":"M5B 1M4"},"recipientHandle":{"type":"EMAIL","value":"john.smith@email.com"},"message":"Please deposit the funds into the account","securityQuestion":"What is your mother's maiden name?","securityAnswer":"Jane Smith"}, + address = {"accountHolder":{"name":"John Smith","city":"Toronto","country":"CA","subdivision":"ON","address":"123 Yonge Street","postalCode":"M5B 1M4"},"recipientHandle":{"type":"EMAIL","value":"john.smith@email.com"},"message":"Please deposit the funds into the account","autoDeposit":true,"securityQuestion":"What is your mother's maiden name?","securityAnswer":"Jane Smith"}, ) """ diff --git a/test/test_job_created.py b/test/test_job_created.py index 76fd92df..685aafc5 100644 --- a/test/test_job_created.py +++ b/test/test_job_created.py @@ -37,7 +37,8 @@ def make_instance(self, include_optional) -> JobCreated: model = JobCreated() if include_optional: return JobCreated( - job_id = '' + job_id = '', + approval_request_id = '' ) else: return JobCreated( diff --git a/test/test_legal_entity_registration.py b/test/test_legal_entity_registration.py new file mode 100644 index 00000000..dfc8cf6c --- /dev/null +++ b/test/test_legal_entity_registration.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.legal_entity_registration import LegalEntityRegistration + + +class TestLegalEntityRegistration(unittest.TestCase): + """LegalEntityRegistration unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> LegalEntityRegistration: + """Test LegalEntityRegistration + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `LegalEntityRegistration` + """ + model = LegalEntityRegistration() + if include_optional: + return LegalEntityRegistration( + id = '550e8400-e29b-41d4-a716-446655440000', + lei = '529900HNOAA1KXQJUQ27', + status = 'PENDING', + is_default = False, + travel_rule_providers = ["MY_OWN"], + travel_rule_contact_email = 'compliance@example.com', + gleif_data = fireblocks.models.gleif_data.GleifData( + lei = '529900HNOAA1KXQJUQ27', + legal_name = 'Example Corporation Ltd.', + other_names = ["ExCorp","Example Corp"], + legal_address_region = 'NY', + legal_address_country = 'US', + next_renewal_date = '2025-12-31T00:00Z', ), + created_at = '1700000000000', + updated_at = '1700000000000' + ) + else: + return LegalEntityRegistration( + id = '550e8400-e29b-41d4-a716-446655440000', + lei = '529900HNOAA1KXQJUQ27', + status = 'PENDING', + is_default = False, + travel_rule_providers = ["MY_OWN"], + created_at = '1700000000000', + updated_at = '1700000000000', + ) + """ + + def testLegalEntityRegistration(self): + """Test LegalEntityRegistration""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_capability.py b/test/test_lei_status.py similarity index 76% rename from test/test_capability.py rename to test/test_lei_status.py index 625cf001..e587b230 100644 --- a/test/test_capability.py +++ b/test/test_lei_status.py @@ -15,11 +15,11 @@ import unittest -from fireblocks.models.capability import Capability +from fireblocks.models.lei_status import LeiStatus -class TestCapability(unittest.TestCase): - """Capability unit test stubs""" +class TestLeiStatus(unittest.TestCase): + """LeiStatus unit test stubs""" def setUp(self): pass @@ -27,9 +27,9 @@ def setUp(self): def tearDown(self): pass - def testCapability(self): - """Test Capability""" - # inst = Capability() + def testLeiStatus(self): + """Test LeiStatus""" + # inst = LeiStatus() if __name__ == "__main__": diff --git a/test/test_list_legal_entities_response.py b/test/test_list_legal_entities_response.py new file mode 100644 index 00000000..5d7f8ac1 --- /dev/null +++ b/test/test_list_legal_entities_response.py @@ -0,0 +1,92 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.list_legal_entities_response import ListLegalEntitiesResponse + + +class TestListLegalEntitiesResponse(unittest.TestCase): + """ListLegalEntitiesResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListLegalEntitiesResponse: + """Test ListLegalEntitiesResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListLegalEntitiesResponse` + """ + model = ListLegalEntitiesResponse() + if include_optional: + return ListLegalEntitiesResponse( + total = 5, + data = [ + fireblocks.models.legal_entity_registration.LegalEntityRegistration( + id = '550e8400-e29b-41d4-a716-446655440000', + lei = '529900HNOAA1KXQJUQ27', + status = 'PENDING', + is_default = False, + travel_rule_providers = ["MY_OWN"], + travel_rule_contact_email = 'compliance@example.com', + gleif_data = fireblocks.models.gleif_data.GleifData( + lei = '529900HNOAA1KXQJUQ27', + legal_name = 'Example Corporation Ltd.', + other_names = ["ExCorp","Example Corp"], + legal_address_region = 'NY', + legal_address_country = 'US', + next_renewal_date = '2025-12-31T00:00Z', ), + created_at = '1700000000000', + updated_at = '1700000000000', ) + ], + next = 'eyJpZCI6IjEyMyJ9', + prev = 'eyJpZCI6IjEyMCJ9' + ) + else: + return ListLegalEntitiesResponse( + data = [ + fireblocks.models.legal_entity_registration.LegalEntityRegistration( + id = '550e8400-e29b-41d4-a716-446655440000', + lei = '529900HNOAA1KXQJUQ27', + status = 'PENDING', + is_default = False, + travel_rule_providers = ["MY_OWN"], + travel_rule_contact_email = 'compliance@example.com', + gleif_data = fireblocks.models.gleif_data.GleifData( + lei = '529900HNOAA1KXQJUQ27', + legal_name = 'Example Corporation Ltd.', + other_names = ["ExCorp","Example Corp"], + legal_address_region = 'NY', + legal_address_country = 'US', + next_renewal_date = '2025-12-31T00:00Z', ), + created_at = '1700000000000', + updated_at = '1700000000000', ) + ], + ) + """ + + def testListLegalEntitiesResponse(self): + """Test ListLegalEntitiesResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_list_vaults_for_registration_response.py b/test/test_list_vaults_for_registration_response.py new file mode 100644 index 00000000..15cf3a11 --- /dev/null +++ b/test/test_list_vaults_for_registration_response.py @@ -0,0 +1,60 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.list_vaults_for_registration_response import ( + ListVaultsForRegistrationResponse, +) + + +class TestListVaultsForRegistrationResponse(unittest.TestCase): + """ListVaultsForRegistrationResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ListVaultsForRegistrationResponse: + """Test ListVaultsForRegistrationResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ListVaultsForRegistrationResponse` + """ + model = ListVaultsForRegistrationResponse() + if include_optional: + return ListVaultsForRegistrationResponse( + total = 5, + data = ["23","12","1"], + next = 'eyJpZCI6IjEyMyJ9', + prev = 'eyJpZCI6IjEyMCJ9' + ) + else: + return ListVaultsForRegistrationResponse( + data = ["23","12","1"], + ) + """ + + def testListVaultsForRegistrationResponse(self): + """Test ListVaultsForRegistrationResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_manifest.py b/test/test_manifest.py index 41d99281..e1908b95 100644 --- a/test/test_manifest.py +++ b/test/test_manifest.py @@ -37,21 +37,17 @@ def make_instance(self, include_optional) -> Manifest: model = Manifest() if include_optional: return Manifest( - asset_types = [ - 'DIGITAL' - ], - capabilities = [ - 'TRADING' - ] + order = None, + quote = None, + rate = fireblocks.models.manifest_base.ManifestBase( + supported = True, ) ) else: return Manifest( - asset_types = [ - 'DIGITAL' - ], - capabilities = [ - 'TRADING' - ], + order = None, + quote = None, + rate = fireblocks.models.manifest_base.ManifestBase( + supported = True, ), ) """ diff --git a/test/test_manifest_base.py b/test/test_manifest_base.py new file mode 100644 index 00000000..aa5b2ce1 --- /dev/null +++ b/test/test_manifest_base.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.manifest_base import ManifestBase + + +class TestManifestBase(unittest.TestCase): + """ManifestBase unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ManifestBase: + """Test ManifestBase + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ManifestBase` + """ + model = ManifestBase() + if include_optional: + return ManifestBase( + supported = True + ) + else: + return ManifestBase( + supported = True, + ) + """ + + def testManifestBase(self): + """Test ManifestBase""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_manifest_order.py b/test/test_manifest_order.py new file mode 100644 index 00000000..f77b812a --- /dev/null +++ b/test/test_manifest_order.py @@ -0,0 +1,64 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.manifest_order import ManifestOrder + + +class TestManifestOrder(unittest.TestCase): + """ManifestOrder unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ManifestOrder: + """Test ManifestOrder + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ManifestOrder` + """ + model = ManifestOrder() + if include_optional: + return ManifestOrder( + supported = True, + settlement_types = [ + 'DVP' + ], + execution_types = [ + 'QUOTE' + ] + ) + else: + return ManifestOrder( + supported = True, + execution_types = [ + 'QUOTE' + ], + ) + """ + + def testManifestOrder(self): + """Test ManifestOrder""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_manifest_order_info.py b/test/test_manifest_order_info.py new file mode 100644 index 00000000..66dc68a8 --- /dev/null +++ b/test/test_manifest_order_info.py @@ -0,0 +1,62 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.manifest_order_info import ManifestOrderInfo + + +class TestManifestOrderInfo(unittest.TestCase): + """ManifestOrderInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ManifestOrderInfo: + """Test ManifestOrderInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ManifestOrderInfo` + """ + model = ManifestOrderInfo() + if include_optional: + return ManifestOrderInfo( + settlement_types = [ + 'DVP' + ], + execution_types = [ + 'QUOTE' + ] + ) + else: + return ManifestOrderInfo( + execution_types = [ + 'QUOTE' + ], + ) + """ + + def testManifestOrderInfo(self): + """Test ManifestOrderInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_manifest_quote.py b/test/test_manifest_quote.py new file mode 100644 index 00000000..72ff0dfc --- /dev/null +++ b/test/test_manifest_quote.py @@ -0,0 +1,58 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.manifest_quote import ManifestQuote + + +class TestManifestQuote(unittest.TestCase): + """ManifestQuote unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ManifestQuote: + """Test ManifestQuote + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ManifestQuote` + """ + model = ManifestQuote() + if include_optional: + return ManifestQuote( + supported = True, + settlement_types = [ + 'DVP' + ] + ) + else: + return ManifestQuote( + supported = True, + ) + """ + + def testManifestQuote(self): + """Test ManifestQuote""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_manifest_quote_info.py b/test/test_manifest_quote_info.py new file mode 100644 index 00000000..fcad2bf7 --- /dev/null +++ b/test/test_manifest_quote_info.py @@ -0,0 +1,56 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.manifest_quote_info import ManifestQuoteInfo + + +class TestManifestQuoteInfo(unittest.TestCase): + """ManifestQuoteInfo unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> ManifestQuoteInfo: + """Test ManifestQuoteInfo + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `ManifestQuoteInfo` + """ + model = ManifestQuoteInfo() + if include_optional: + return ManifestQuoteInfo( + settlement_types = [ + 'DVP' + ] + ) + else: + return ManifestQuoteInfo( + ) + """ + + def testManifestQuoteInfo(self): + """Test ManifestQuoteInfo""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_position.py b/test/test_position.py new file mode 100644 index 00000000..bfc3eb89 --- /dev/null +++ b/test/test_position.py @@ -0,0 +1,84 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.position import Position + + +class TestPosition(unittest.TestCase): + """Position unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> Position: + """Test Position + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `Position` + """ + model = Position() + if include_optional: + return Position( + id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850a', + vault_account_id = '2', + validator_name = 'FwR3P......tT59f', + provider_name = 'Kiln', + chain_descriptor = 'SOL', + amount = '0.05', + rewards_amount = '0.000856038', + date_created = '2023-07-13T15:55:34.256Z', + date_updated = '2023-07-13T15:55:34.256Z', + status = 'ACTIVE', + validator_address = 'FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f', + provider_id = 'kiln', + available_actions = ["UNSTAKE"], + in_progress = True, + in_progress_tx_id = 'c80601f4-d7b1-4795-a8ee-b09cdb5b450c', + blockchain_position_info = None + ) + else: + return Position( + id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850a', + vault_account_id = '2', + validator_name = 'FwR3P......tT59f', + provider_name = 'Kiln', + chain_descriptor = 'SOL', + amount = '0.05', + rewards_amount = '0.000856038', + date_created = '2023-07-13T15:55:34.256Z', + date_updated = '2023-07-13T15:55:34.256Z', + status = 'ACTIVE', + validator_address = 'FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f', + provider_id = 'kiln', + available_actions = ["UNSTAKE"], + in_progress = True, + blockchain_position_info = None, + ) + """ + + def testPosition(self): + """Test Position""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_register_legal_entity_request.py b/test/test_register_legal_entity_request.py new file mode 100644 index 00000000..96de0b82 --- /dev/null +++ b/test/test_register_legal_entity_request.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.register_legal_entity_request import RegisterLegalEntityRequest + + +class TestRegisterLegalEntityRequest(unittest.TestCase): + """RegisterLegalEntityRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> RegisterLegalEntityRequest: + """Test RegisterLegalEntityRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `RegisterLegalEntityRequest` + """ + model = RegisterLegalEntityRequest() + if include_optional: + return RegisterLegalEntityRequest( + lei = '529900HNOAA1KXQJUQ27', + travel_rule_providers = ["MY_OWN"], + travel_rule_contact_email = 'compliance@example.com' + ) + else: + return RegisterLegalEntityRequest( + lei = '529900HNOAA1KXQJUQ27', + ) + """ + + def testRegisterLegalEntityRequest(self): + """Test RegisterLegalEntityRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_remove_collateral_request_body.py b/test/test_remove_collateral_request_body.py index cff8bee7..ce351e05 100644 --- a/test/test_remove_collateral_request_body.py +++ b/test/test_remove_collateral_request_body.py @@ -166,6 +166,8 @@ def make_instance(self, include_optional) -> RemoveCollateralRequestBody: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_proof = fireblocks.models.travel_rule_ownership_proof.TravelRuleOwnershipProof( proof = '0x3dd4a17a...ce4a2bcd1b', @@ -173,6 +175,8 @@ def make_instance(self, include_optional) -> RemoveCollateralRequestBody: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_did = 'did:key:z6Mkf67890Zghijkl67890', originator_did = 'did:key:z6Mkf12345Zabcdef12345', diff --git a/test/test_asset_type_enum.py b/test/test_settlement_type_enum.py similarity index 71% rename from test/test_asset_type_enum.py rename to test/test_settlement_type_enum.py index 41225267..940ff287 100644 --- a/test/test_asset_type_enum.py +++ b/test/test_settlement_type_enum.py @@ -15,11 +15,11 @@ import unittest -from fireblocks.models.asset_type_enum import AssetTypeEnum +from fireblocks.models.settlement_type_enum import SettlementTypeEnum -class TestAssetTypeEnum(unittest.TestCase): - """AssetTypeEnum unit test stubs""" +class TestSettlementTypeEnum(unittest.TestCase): + """SettlementTypeEnum unit test stubs""" def setUp(self): pass @@ -27,9 +27,9 @@ def setUp(self): def tearDown(self): pass - def testAssetTypeEnum(self): - """Test AssetTypeEnum""" - # inst = AssetTypeEnum() + def testSettlementTypeEnum(self): + """Test SettlementTypeEnum""" + # inst = SettlementTypeEnum() if __name__ == "__main__": diff --git a/test/test_staking_api.py b/test/test_staking_api.py index a50c4109..ec5580f2 100644 --- a/test/test_staking_api.py +++ b/test/test_staking_api.py @@ -76,6 +76,13 @@ def test_get_delegation_by_id(self) -> None: """ pass + def test_get_positions(self) -> None: + """Test case for get_positions + + List staking positions (Paginated) + """ + pass + def test_get_providers(self) -> None: """Test case for get_providers diff --git a/test/test_staking_positions_paginated_response.py b/test/test_staking_positions_paginated_response.py new file mode 100644 index 00000000..e3969577 --- /dev/null +++ b/test/test_staking_positions_paginated_response.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.staking_positions_paginated_response import ( + StakingPositionsPaginatedResponse, +) + + +class TestStakingPositionsPaginatedResponse(unittest.TestCase): + """StakingPositionsPaginatedResponse unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> StakingPositionsPaginatedResponse: + """Test StakingPositionsPaginatedResponse + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `StakingPositionsPaginatedResponse` + """ + model = StakingPositionsPaginatedResponse() + if include_optional: + return StakingPositionsPaginatedResponse( + data = [ + fireblocks.models.position.Position( + id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850a', + vault_account_id = '2', + validator_name = 'FwR3P......tT59f', + provider_name = 'Kiln', + chain_descriptor = 'SOL', + amount = '0.05', + rewards_amount = '0.000856038', + date_created = '2023-07-13T15:55:34.256Z', + date_updated = '2023-07-13T15:55:34.256Z', + status = 'ACTIVE', + validator_address = 'FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f', + provider_id = 'kiln', + available_actions = ["UNSTAKE"], + in_progress = True, + in_progress_tx_id = 'c80601f4-d7b1-4795-a8ee-b09cdb5b450c', + blockchain_position_info = null, ) + ], + next = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9' + ) + else: + return StakingPositionsPaginatedResponse( + data = [ + fireblocks.models.position.Position( + id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850a', + vault_account_id = '2', + validator_name = 'FwR3P......tT59f', + provider_name = 'Kiln', + chain_descriptor = 'SOL', + amount = '0.05', + rewards_amount = '0.000856038', + date_created = '2023-07-13T15:55:34.256Z', + date_updated = '2023-07-13T15:55:34.256Z', + status = 'ACTIVE', + validator_address = 'FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f', + provider_id = 'kiln', + available_actions = ["UNSTAKE"], + in_progress = True, + in_progress_tx_id = 'c80601f4-d7b1-4795-a8ee-b09cdb5b450c', + blockchain_position_info = null, ) + ], + ) + """ + + def testStakingPositionsPaginatedResponse(self): + """Test StakingPositionsPaginatedResponse""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_tr_link_create_integration_request.py b/test/test_tr_link_create_integration_request.py index f30f8195..c29962a6 100644 --- a/test/test_tr_link_create_integration_request.py +++ b/test/test_tr_link_create_integration_request.py @@ -40,7 +40,8 @@ def make_instance(self, include_optional) -> TRLinkCreateIntegrationRequest: if include_optional: return TRLinkCreateIntegrationRequest( customer_id = '550e8400-e29b-41d4-a716-446655440001', - partner_ident = 'sumsub' + partner_ident = 'sumsub', + customer_integration_id = '660e8400-e29b-41d4-a716-446655440099' ) else: return TRLinkCreateIntegrationRequest( diff --git a/test/test_trading_beta_api.py b/test/test_trading_beta_api.py index f28b2541..a28a7e52 100644 --- a/test/test_trading_beta_api.py +++ b/test/test_trading_beta_api.py @@ -55,6 +55,13 @@ def test_get_orders(self) -> None: """ pass + def test_get_trading_provider_by_id(self) -> None: + """Test case for get_trading_provider_by_id + + Get trading provider by ID + """ + pass + def test_get_trading_providers(self) -> None: """Test case for get_trading_providers diff --git a/test/test_trading_provider.py b/test/test_trading_provider.py index 22e13f28..c4f17c58 100644 --- a/test/test_trading_provider.py +++ b/test/test_trading_provider.py @@ -41,22 +41,26 @@ def make_instance(self, include_optional) -> TradingProvider: name = '', logo = '', account_based = True, - manifest = {"assetTypes":["DIGITAL","FIAT"],"capabilities":["SPOT_TRADING","LIMIT_ORDERS"]}, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, connected = True, accounts = [ {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} ], approved = True, has_terms_of_service = True, - terms_of_service_url = '' + terms_of_service_url = '', + privacy_policy_url = '' ) else: return TradingProvider( id = '', name = '', account_based = True, - manifest = {"assetTypes":["DIGITAL","FIAT"],"capabilities":["SPOT_TRADING","LIMIT_ORDERS"]}, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ], has_terms_of_service = True, ) """ diff --git a/test/test_trading_provider_details.py b/test/test_trading_provider_details.py new file mode 100644 index 00000000..57142e03 --- /dev/null +++ b/test/test_trading_provider_details.py @@ -0,0 +1,75 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.trading_provider_details import TradingProviderDetails + + +class TestTradingProviderDetails(unittest.TestCase): + """TradingProviderDetails unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> TradingProviderDetails: + """Test TradingProviderDetails + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `TradingProviderDetails` + """ + model = TradingProviderDetails() + if include_optional: + return TradingProviderDetails( + id = '', + name = '', + logo = '', + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, + connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ], + approved = True, + has_terms_of_service = True, + terms_of_service_url = '', + privacy_policy_url = '' + ) + else: + return TradingProviderDetails( + id = '', + name = '', + account_based = True, + manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}}, + connected = True, + accounts = [ + {"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"} + ], + has_terms_of_service = True, + ) + """ + + def testTradingProviderDetails(self): + """Test TradingProviderDetails""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_transaction_request.py b/test/test_transaction_request.py index 7396327d..1ecc4334 100644 --- a/test/test_transaction_request.py +++ b/test/test_transaction_request.py @@ -178,6 +178,8 @@ def make_instance(self, include_optional) -> TransactionRequest: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_proof = fireblocks.models.travel_rule_ownership_proof.TravelRuleOwnershipProof( type = 'eip-191', @@ -186,6 +188,8 @@ def make_instance(self, include_optional) -> TransactionRequest: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_did = 'did:key:z6Mkf67890Zghijkl67890', originator_did = 'did:key:z6Mkf12345Zabcdef12345', diff --git a/test/test_transaction_response.py b/test/test_transaction_response.py index 5578fb18..49ffaf3d 100644 --- a/test/test_transaction_response.py +++ b/test/test_transaction_response.py @@ -171,13 +171,13 @@ def make_instance(self, include_optional) -> TransactionResponse: payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', status = 'COMPLETED', prev_status = 'COMPLETED', prev_bypass_reason = 'BELOW_THRESHOLD', verdict = 'PASS', - risk = 'LOW', - extended_risk = 'LOW', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', @@ -241,14 +241,17 @@ def make_instance(self, include_optional) -> TransactionResponse: matched_no_trm_screening_rule = fireblocks.models.matched_no_trm_screening_rule.matchedNoTrmScreeningRule(), customer_integration_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', customer_short_name = 'ACME Corp', - travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', ), + travel_rule_message_id = '3fa85f64-5717-4562-b3fc-2c963f66afa6', + provider_response = { }, ), tr = fireblocks.models.compliance_screening_result.ComplianceScreeningResult( provider = 'NOTABENE', payload = fireblocks.models.payload.payload(), timestamp = 1753459111824, screening_status = 'COMPLETED', - bypass_reason = 'BELOW_THRESHOLD', + bypass_reason = 'UNSUPPORTED_ASSET', prev_bypass_reason = 'BELOW_THRESHOLD', + risk = 'lowRisk', + extended_risk = 'lowRisk', external_id = 'aml_screening_12345', customer_ref_id = 'customer_ref_789', ref_id = 'ref_12345', diff --git a/test/test_travel_rule_create_transaction_request.py b/test/test_travel_rule_create_transaction_request.py index 6cd493de..425d9e73 100644 --- a/test/test_travel_rule_create_transaction_request.py +++ b/test/test_travel_rule_create_transaction_request.py @@ -189,6 +189,8 @@ def make_instance(self, include_optional) -> TravelRuleCreateTransactionRequest: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_proof = fireblocks.models.travel_rule_ownership_proof.TravelRuleOwnershipProof( type = 'eip-191', @@ -197,6 +199,8 @@ def make_instance(self, include_optional) -> TravelRuleCreateTransactionRequest: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_did = 'did:key:z6Mkf67890Zghijkl67890', originator_did = 'did:key:z6Mkf12345Zabcdef12345', diff --git a/test/test_travel_rule_ownership_proof.py b/test/test_travel_rule_ownership_proof.py index 263f040b..b47099b8 100644 --- a/test/test_travel_rule_ownership_proof.py +++ b/test/test_travel_rule_ownership_proof.py @@ -43,6 +43,8 @@ def make_instance(self, include_optional) -> TravelRuleOwnershipProof: address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True ) else: diff --git a/test/test_screening_risk_level_enum.py b/test/test_travel_rule_provider.py similarity index 69% rename from test/test_screening_risk_level_enum.py rename to test/test_travel_rule_provider.py index 4f0652ea..5915c1ea 100644 --- a/test/test_screening_risk_level_enum.py +++ b/test/test_travel_rule_provider.py @@ -15,11 +15,11 @@ import unittest -from fireblocks.models.screening_risk_level_enum import ScreeningRiskLevelEnum +from fireblocks.models.travel_rule_provider import TravelRuleProvider -class TestScreeningRiskLevelEnum(unittest.TestCase): - """ScreeningRiskLevelEnum unit test stubs""" +class TestTravelRuleProvider(unittest.TestCase): + """TravelRuleProvider unit test stubs""" def setUp(self): pass @@ -27,9 +27,9 @@ def setUp(self): def tearDown(self): pass - def testScreeningRiskLevelEnum(self): - """Test ScreeningRiskLevelEnum""" - # inst = ScreeningRiskLevelEnum() + def testTravelRuleProvider(self): + """Test TravelRuleProvider""" + # inst = TravelRuleProvider() if __name__ == "__main__": diff --git a/test/test_travel_rule_validate_full_transaction_request.py b/test/test_travel_rule_validate_full_transaction_request.py index 6e220bca..967c0da4 100644 --- a/test/test_travel_rule_validate_full_transaction_request.py +++ b/test/test_travel_rule_validate_full_transaction_request.py @@ -191,6 +191,8 @@ def make_instance( address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_proof = fireblocks.models.travel_rule_ownership_proof.TravelRuleOwnershipProof( type = 'eip-191', @@ -199,6 +201,8 @@ def make_instance( address = '0x896B...0b9b', wallet_provider = 'Metamask', url = 'https://example.com/uploaded_image.png', + did = 'did:key:z6Mkf12345Zabcdef12345', + status = 'verified', confirmed = True, ), beneficiary_did = 'did:key:z6Mkf67890Zghijkl67890', originator_did = 'did:key:z6Mkf12345Zabcdef12345', diff --git a/test/test_update_legal_entity_request.py b/test/test_update_legal_entity_request.py new file mode 100644 index 00000000..958f65e5 --- /dev/null +++ b/test/test_update_legal_entity_request.py @@ -0,0 +1,55 @@ +# coding: utf-8 + +""" +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 +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + + +import unittest + +from fireblocks.models.update_legal_entity_request import UpdateLegalEntityRequest + + +class TestUpdateLegalEntityRequest(unittest.TestCase): + """UpdateLegalEntityRequest unit test stubs""" + + def setUp(self): + pass + + def tearDown(self): + pass + + def make_instance(self, include_optional) -> UpdateLegalEntityRequest: + """Test UpdateLegalEntityRequest + include_optional is a boolean, when False only required + params are included, when True both required and + optional params are included""" + # uncomment below to create an instance of `UpdateLegalEntityRequest` + """ + model = UpdateLegalEntityRequest() + if include_optional: + return UpdateLegalEntityRequest( + is_default = True + ) + else: + return UpdateLegalEntityRequest( + is_default = True, + ) + """ + + def testUpdateLegalEntityRequest(self): + """Test UpdateLegalEntityRequest""" + # inst_req_only = self.make_instance(include_optional=False) + # inst_req_and_optional = self.make_instance(include_optional=True) + + +if __name__ == "__main__": + unittest.main()