diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index 51b5b359..4082812d 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -57,9 +57,11 @@ docs/AddressRegistryTravelRuleProvider.md
docs/AddressRegistryVaultListOrder.md
docs/AddressRegistryVaultOptOutItem.md
docs/AddressReverseLookupResponse.md
+docs/AddressesFilters.md
docs/AlertExposureTypeEnum.md
docs/AlertLevelEnum.md
docs/AllowlistEntry.md
+docs/AllowlistEntryResponse.md
docs/AllowlistEntryStatus.md
docs/AllowlistMetadata.md
docs/AllowlistResponse.md
@@ -255,8 +257,11 @@ docs/CounterpartyGroupsPaginatedResponse.md
docs/CreateAPIUser.md
docs/CreateAddressRequest.md
docs/CreateAddressResponse.md
+docs/CreateAddressesReportRequest.md
docs/CreateAssetsRequest.md
docs/CreateConfigOperationRequest.md
+docs/CreateConnectedAccountRequest.md
+docs/CreateConnectedAccountResponse.md
docs/CreateConnectionRequest.md
docs/CreateConnectionResponse.md
docs/CreateConsoleUser.md
@@ -281,6 +286,8 @@ docs/CreateOrderRequest.md
docs/CreatePayoutRequest.md
docs/CreateQuote.md
docs/CreateQuoteScopeInner.md
+docs/CreateReportRequest.md
+docs/CreateReportResponse.md
docs/CreateSigningKeyDto.md
docs/CreateSigningKeyDtoProofOfOwnership.md
docs/CreateTagRequest.md
@@ -297,6 +304,7 @@ docs/CreateVaultAssetResponse.md
docs/CreateWalletRequest.md
docs/CreateWebhookRequest.md
docs/CreateWorkflowExecutionRequestParamsInner.md
+docs/CreatedConnectedAccountItem.md
docs/CustomRoutingDest.md
docs/DAppAddressConfig.md
docs/DVPSettlement.md
@@ -497,6 +505,7 @@ docs/InternalTransferDestination.md
docs/InternalTransferResponse.md
docs/InternalWalletsApi.md
docs/InvalidParamaterValueError.md
+docs/IssueApiUserPairingTokenResponse.md
docs/JobCreated.md
docs/KeyLinkBetaApi.md
docs/KeysBetaApi.md
@@ -626,7 +635,6 @@ docs/ParameterWithValue.md
docs/ParticipantRelationshipType.md
docs/ParticipantsIdentification.md
docs/ParticipantsIdentificationPolicy.md
-docs/ParticipantsIdentificationSupportedEndpoint.md
docs/PayeeAccount.md
docs/PayeeAccountResponse.md
docs/PayeeAccountType.md
@@ -664,8 +672,8 @@ docs/PolicyAndValidationResponse.md
docs/PolicyCheckResult.md
docs/PolicyCurrency.md
docs/PolicyEditorBetaApi.md
-docs/PolicyEditorV2BetaApi.md
-docs/PolicyMetadata.md
+docs/PolicyEditorV2Api.md
+docs/PolicyMetadataEntry.md
docs/PolicyOperator.md
docs/PolicyResponse.md
docs/PolicyRule.md
@@ -728,6 +736,15 @@ docs/RenameConnectedAccountRequest.md
docs/RenameConnectedAccountResponse.md
docs/RenameCosigner.md
docs/RenameVaultAccountResponse.md
+docs/ReportConflictResponse.md
+docs/ReportJob.md
+docs/ReportJobLinks.md
+docs/ReportJobResponse.md
+docs/ReportListResponse.md
+docs/ReportOutputFormat.md
+docs/ReportStatus.md
+docs/ReportType.md
+docs/ReportsBetaApi.md
docs/ResendByQueryRequest.md
docs/ResendByQueryResponse.md
docs/ResendFailedNotificationsJobStatusResponse.md
@@ -847,6 +864,7 @@ docs/SolanaBlockchainData.md
docs/SolanaConfig.md
docs/SolanaInstruction.md
docs/SolanaInstructionWithValue.md
+docs/SolanaRewardsBreakdown.md
docs/SolanaSimpleCreateParams.md
docs/SourceConfig.md
docs/SourceOfFunds.md
@@ -1018,6 +1036,7 @@ docs/TransactionRequestPriorityFee.md
docs/TransactionResponse.md
docs/TransactionResponseContractCallDecodedData.md
docs/TransactionResponseDestination.md
+docs/TransactionTag.md
docs/TransactionsApi.md
docs/TransferConfigOperation.md
docs/TransferOperationConfigParams.md
@@ -1200,7 +1219,8 @@ fireblocks/api/onchain_data_api.py
fireblocks/api/ota_beta_api.py
fireblocks/api/payments_payout_api.py
fireblocks/api/policy_editor_beta_api.py
-fireblocks/api/policy_editor_v2_beta_api.py
+fireblocks/api/policy_editor_v2_api.py
+fireblocks/api/reports_beta_api.py
fireblocks/api/reset_device_api.py
fireblocks/api/smart_transfer_api.py
fireblocks/api/staking_api.py
@@ -1283,9 +1303,11 @@ 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/address_reverse_lookup_response.py
+fireblocks/models/addresses_filters.py
fireblocks/models/alert_exposure_type_enum.py
fireblocks/models/alert_level_enum.py
fireblocks/models/allowlist_entry.py
+fireblocks/models/allowlist_entry_response.py
fireblocks/models/allowlist_entry_status.py
fireblocks/models/allowlist_metadata.py
fireblocks/models/allowlist_response.py
@@ -1470,9 +1492,12 @@ fireblocks/models/counterparty_group.py
fireblocks/models/counterparty_groups_paginated_response.py
fireblocks/models/create_address_request.py
fireblocks/models/create_address_response.py
+fireblocks/models/create_addresses_report_request.py
fireblocks/models/create_api_user.py
fireblocks/models/create_assets_request.py
fireblocks/models/create_config_operation_request.py
+fireblocks/models/create_connected_account_request.py
+fireblocks/models/create_connected_account_response.py
fireblocks/models/create_connection_request.py
fireblocks/models/create_connection_response.py
fireblocks/models/create_console_user.py
@@ -1497,6 +1522,8 @@ fireblocks/models/create_order_request.py
fireblocks/models/create_payout_request.py
fireblocks/models/create_quote.py
fireblocks/models/create_quote_scope_inner.py
+fireblocks/models/create_report_request.py
+fireblocks/models/create_report_response.py
fireblocks/models/create_signing_key_dto.py
fireblocks/models/create_signing_key_dto_proof_of_ownership.py
fireblocks/models/create_tag_request.py
@@ -1513,6 +1540,7 @@ fireblocks/models/create_vault_asset_response.py
fireblocks/models/create_wallet_request.py
fireblocks/models/create_webhook_request.py
fireblocks/models/create_workflow_execution_request_params_inner.py
+fireblocks/models/created_connected_account_item.py
fireblocks/models/custom_routing_dest.py
fireblocks/models/d_app_address_config.py
fireblocks/models/decoded_log.py
@@ -1704,6 +1732,7 @@ fireblocks/models/internal_transfer_address.py
fireblocks/models/internal_transfer_destination.py
fireblocks/models/internal_transfer_response.py
fireblocks/models/invalid_paramater_value_error.py
+fireblocks/models/issue_api_user_pairing_token_response.py
fireblocks/models/job_created.py
fireblocks/models/layer_zero_adapter_create_params.py
fireblocks/models/lbt_payment_info.py
@@ -1826,7 +1855,6 @@ fireblocks/models/parameter_with_value.py
fireblocks/models/participant_relationship_type.py
fireblocks/models/participants_identification.py
fireblocks/models/participants_identification_policy.py
-fireblocks/models/participants_identification_supported_endpoint.py
fireblocks/models/payee_account.py
fireblocks/models/payee_account_response.py
fireblocks/models/payee_account_type.py
@@ -1862,7 +1890,7 @@ fireblocks/models/players.py
fireblocks/models/policy_and_validation_response.py
fireblocks/models/policy_check_result.py
fireblocks/models/policy_currency.py
-fireblocks/models/policy_metadata.py
+fireblocks/models/policy_metadata_entry.py
fireblocks/models/policy_operator.py
fireblocks/models/policy_response.py
fireblocks/models/policy_rule.py
@@ -1925,6 +1953,14 @@ fireblocks/models/rename_connected_account_request.py
fireblocks/models/rename_connected_account_response.py
fireblocks/models/rename_cosigner.py
fireblocks/models/rename_vault_account_response.py
+fireblocks/models/report_conflict_response.py
+fireblocks/models/report_job.py
+fireblocks/models/report_job_links.py
+fireblocks/models/report_job_response.py
+fireblocks/models/report_list_response.py
+fireblocks/models/report_output_format.py
+fireblocks/models/report_status.py
+fireblocks/models/report_type.py
fireblocks/models/resend_by_query_request.py
fireblocks/models/resend_by_query_response.py
fireblocks/models/resend_failed_notifications_job_status_response.py
@@ -2042,6 +2078,7 @@ fireblocks/models/solana_blockchain_data.py
fireblocks/models/solana_config.py
fireblocks/models/solana_instruction.py
fireblocks/models/solana_instruction_with_value.py
+fireblocks/models/solana_rewards_breakdown.py
fireblocks/models/solana_simple_create_params.py
fireblocks/models/source_config.py
fireblocks/models/source_of_funds.py
@@ -2208,6 +2245,7 @@ fireblocks/models/transaction_request_priority_fee.py
fireblocks/models/transaction_response.py
fireblocks/models/transaction_response_contract_call_decoded_data.py
fireblocks/models/transaction_response_destination.py
+fireblocks/models/transaction_tag.py
fireblocks/models/transfer_config_operation.py
fireblocks/models/transfer_operation_config_params.py
fireblocks/models/transfer_operation_execution.py
@@ -2423,9 +2461,11 @@ 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_address_reverse_lookup_response.py
+test/test_addresses_filters.py
test/test_alert_exposure_type_enum.py
test/test_alert_level_enum.py
test/test_allowlist_entry.py
+test/test_allowlist_entry_response.py
test/test_allowlist_entry_status.py
test/test_allowlist_metadata.py
test/test_allowlist_response.py
@@ -2621,9 +2661,12 @@ test/test_counterparty_group.py
test/test_counterparty_groups_paginated_response.py
test/test_create_address_request.py
test/test_create_address_response.py
+test/test_create_addresses_report_request.py
test/test_create_api_user.py
test/test_create_assets_request.py
test/test_create_config_operation_request.py
+test/test_create_connected_account_request.py
+test/test_create_connected_account_response.py
test/test_create_connection_request.py
test/test_create_connection_response.py
test/test_create_console_user.py
@@ -2648,6 +2691,8 @@ test/test_create_order_request.py
test/test_create_payout_request.py
test/test_create_quote.py
test/test_create_quote_scope_inner.py
+test/test_create_report_request.py
+test/test_create_report_response.py
test/test_create_signing_key_dto.py
test/test_create_signing_key_dto_proof_of_ownership.py
test/test_create_tag_request.py
@@ -2664,6 +2709,7 @@ test/test_create_vault_asset_response.py
test/test_create_wallet_request.py
test/test_create_webhook_request.py
test/test_create_workflow_execution_request_params_inner.py
+test/test_created_connected_account_item.py
test/test_custom_routing_dest.py
test/test_d_app_address_config.py
test/test_decoded_log.py
@@ -2864,6 +2910,7 @@ test/test_internal_transfer_destination.py
test/test_internal_transfer_response.py
test/test_internal_wallets_api.py
test/test_invalid_paramater_value_error.py
+test/test_issue_api_user_pairing_token_response.py
test/test_job_created.py
test/test_key_link_beta_api.py
test/test_keys_beta_api.py
@@ -2993,7 +3040,6 @@ test/test_parameter_with_value.py
test/test_participant_relationship_type.py
test/test_participants_identification.py
test/test_participants_identification_policy.py
-test/test_participants_identification_supported_endpoint.py
test/test_payee_account.py
test/test_payee_account_response.py
test/test_payee_account_type.py
@@ -3031,8 +3077,8 @@ test/test_policy_and_validation_response.py
test/test_policy_check_result.py
test/test_policy_currency.py
test/test_policy_editor_beta_api.py
-test/test_policy_editor_v2_beta_api.py
-test/test_policy_metadata.py
+test/test_policy_editor_v2_api.py
+test/test_policy_metadata_entry.py
test/test_policy_operator.py
test/test_policy_response.py
test/test_policy_rule.py
@@ -3095,6 +3141,15 @@ test/test_rename_connected_account_request.py
test/test_rename_connected_account_response.py
test/test_rename_cosigner.py
test/test_rename_vault_account_response.py
+test/test_report_conflict_response.py
+test/test_report_job.py
+test/test_report_job_links.py
+test/test_report_job_response.py
+test/test_report_list_response.py
+test/test_report_output_format.py
+test/test_report_status.py
+test/test_report_type.py
+test/test_reports_beta_api.py
test/test_resend_by_query_request.py
test/test_resend_by_query_response.py
test/test_resend_failed_notifications_job_status_response.py
@@ -3214,6 +3269,7 @@ test/test_solana_blockchain_data.py
test/test_solana_config.py
test/test_solana_instruction.py
test/test_solana_instruction_with_value.py
+test/test_solana_rewards_breakdown.py
test/test_solana_simple_create_params.py
test/test_source_config.py
test/test_source_of_funds.py
@@ -3385,6 +3441,7 @@ test/test_transaction_request_priority_fee.py
test/test_transaction_response.py
test/test_transaction_response_contract_call_decoded_data.py
test/test_transaction_response_destination.py
+test/test_transaction_tag.py
test/test_transactions_api.py
test/test_transfer_config_operation.py
test/test_transfer_operation_config_params.py
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 119d0a24..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,266 +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).
-
-## [v21.0.0](https://github.com/fireblocks/py-sdk/compare/v20.0.0...v21.0.0) - 2026-06-11
-
-### Merged
-
-- Generated SDK #5364 [`#142`](https://github.com/fireblocks/py-sdk/pull/142)
-
-## [v20.0.0](https://github.com/fireblocks/py-sdk/compare/v19.1.0...v20.0.0) - 2026-06-02
-
-### Merged
-
-- Generated SDK #2839 (major) [`#141`](https://github.com/fireblocks/py-sdk/pull/141)
-
-## [v19.1.0](https://github.com/fireblocks/py-sdk/compare/v19.0.0...v19.1.0) - 2026-05-27
-
-### Merged
-
-- Generated SDK #2710 (minor) [`#140`](https://github.com/fireblocks/py-sdk/pull/140)
-
-## [v19.0.0](https://github.com/fireblocks/py-sdk/compare/v18.0.0...v19.0.0) - 2026-05-17
-
-### Merged
-
-- Generated SDK #7742 (major) [`#139`](https://github.com/fireblocks/py-sdk/pull/139)
-
-## [v18.0.0](https://github.com/fireblocks/py-sdk/compare/v17.0.0...v18.0.0) - 2026-05-07
-
-### Merged
-
-- Generated SDK #3222 (major) [`#138`](https://github.com/fireblocks/py-sdk/pull/138)
-
-## [v17.0.0](https://github.com/fireblocks/py-sdk/compare/v16.0.0...v17.0.0) - 2026-04-20
-
-### Merged
-
-- Generated SDK #9605 (major) [`#137`](https://github.com/fireblocks/py-sdk/pull/137)
-
-## [v16.0.0](https://github.com/fireblocks/py-sdk/compare/v15.0.0...v16.0.0) - 2026-04-06
-
-### Merged
-
-- Generated SDK #3331 [`#135`](https://github.com/fireblocks/py-sdk/pull/135)
-
-## [v15.0.0](https://github.com/fireblocks/py-sdk/compare/v14.1.0...v15.0.0) - 2026-03-15
-
-### Merged
-
-- Generated SDK #3733 (major) [`#129`](https://github.com/fireblocks/py-sdk/pull/129)
-
-## [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 5c982b00..bb9f7749 100644
--- a/README.md
+++ b/README.md
@@ -235,6 +235,7 @@ Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*ApiUserApi* | [**create_api_user**](docs/ApiUserApi.md#create_api_user) | **POST** /management/api_users | Create API Key
*ApiUserApi* | [**get_api_users**](docs/ApiUserApi.md#get_api_users) | **GET** /management/api_users | Get API Keys
+*ApiUserApi* | [**issue_api_user_pairing_token**](docs/ApiUserApi.md#issue_api_user_pairing_token) | **POST** /management/api_users/{userId}/pairing_token | Issue API user pairing token
*AuditLogsApi* | [**get_audit_logs**](docs/AuditLogsApi.md#get_audit_logs) | **GET** /management/audit_logs | Get audit logs
*BlockchainsAssetsApi* | [**get_asset**](docs/BlockchainsAssetsApi.md#get_asset) | **GET** /assets/{id} | Get an asset
*BlockchainsAssetsApi* | [**get_blockchain**](docs/BlockchainsAssetsApi.md#get_blockchain) | **GET** /blockchains/{id} | Get a Blockchain by ID
@@ -252,6 +253,7 @@ Class | Method | HTTP request | Description
*ComplianceApi* | [**deactivate_ars_config**](docs/ComplianceApi.md#deactivate_ars_config) | **POST** /screening/ars/config/deactivate | Deactivate ARS (Address Registry Screening)
*ComplianceApi* | [**deactivate_byork_config**](docs/ComplianceApi.md#deactivate_byork_config) | **POST** /screening/byork/config/deactivate | Deactivate BYORK Light
*ComplianceApi* | [**delete_counterparty_group**](docs/ComplianceApi.md#delete_counterparty_group) | **DELETE** /counterparty_groups/{groupId} | Delete a counterparty group
+*ComplianceApi* | [**delete_legal_entity**](docs/ComplianceApi.md#delete_legal_entity) | **DELETE** /legal_entities/{legalEntityId} | Delete 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
@@ -284,6 +286,7 @@ Class | Method | HTTP request | Description
*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
*ComplianceScreeningConfigurationApi* | [**get_screening_configuration**](docs/ComplianceScreeningConfigurationApi.md#get_screening_configuration) | **GET** /screening/travel_rule/policy_configuration | Get Travel Rule Screening Policy Configuration
+*ConnectedAccountsBetaApi* | [**create_connected_account**](docs/ConnectedAccountsBetaApi.md#create_connected_account) | **POST** /connected_accounts | Create a connected account
*ConnectedAccountsBetaApi* | [**disconnect_connected_account**](docs/ConnectedAccountsBetaApi.md#disconnect_connected_account) | **DELETE** /connected_accounts/{accountId} | Disconnect connected account
*ConnectedAccountsBetaApi* | [**get_connected_account**](docs/ConnectedAccountsBetaApi.md#get_connected_account) | **GET** /connected_accounts/{accountId} | Get connected account
*ConnectedAccountsBetaApi* | [**get_connected_account_allowlist**](docs/ConnectedAccountsBetaApi.md#get_connected_account_allowlist) | **GET** /connected_accounts/{accountId}/allowlist | Get allowlist for connected account
@@ -449,15 +452,18 @@ Class | Method | HTTP request | Description
*PaymentsPayoutApi* | [**create_payout**](docs/PaymentsPayoutApi.md#create_payout) | **POST** /payments/payout | Create a payout instruction set
*PaymentsPayoutApi* | [**execute_payout_action**](docs/PaymentsPayoutApi.md#execute_payout_action) | **POST** /payments/payout/{payoutId}/actions/execute | Execute a payout instruction set
*PaymentsPayoutApi* | [**get_payout**](docs/PaymentsPayoutApi.md#get_payout) | **GET** /payments/payout/{payoutId} | Get the status of a payout instruction set
-*PolicyEditorV2BetaApi* | [**get_active_policy**](docs/PolicyEditorV2BetaApi.md#get_active_policy) | **GET** /policy/active_policy | Get the active policy and its validation by policy type
-*PolicyEditorV2BetaApi* | [**get_draft**](docs/PolicyEditorV2BetaApi.md#get_draft) | **GET** /policy/draft | Get the active draft by policy type
-*PolicyEditorV2BetaApi* | [**publish_draft**](docs/PolicyEditorV2BetaApi.md#publish_draft) | **POST** /policy/draft | Send publish request for a certain draft id
-*PolicyEditorV2BetaApi* | [**update_draft**](docs/PolicyEditorV2BetaApi.md#update_draft) | **PUT** /policy/draft | Update the draft with a new set of rules by policy types
+*PolicyEditorV2Api* | [**get_active_policy**](docs/PolicyEditorV2Api.md#get_active_policy) | **GET** /policy/active_policy | Get the active policy and its validation by policy type
+*PolicyEditorV2Api* | [**get_draft**](docs/PolicyEditorV2Api.md#get_draft) | **GET** /policy/draft | Get the active draft by policy type
+*PolicyEditorV2Api* | [**publish_draft**](docs/PolicyEditorV2Api.md#publish_draft) | **POST** /policy/draft | Send publish request for a certain draft id
+*PolicyEditorV2Api* | [**update_draft**](docs/PolicyEditorV2Api.md#update_draft) | **PUT** /policy/draft | Update the draft with a new set of rules by policy types
*PolicyEditorBetaApi* | [**get_active_policy_legacy**](docs/PolicyEditorBetaApi.md#get_active_policy_legacy) | **GET** /tap/active_policy | Get the active policy and its validation
*PolicyEditorBetaApi* | [**get_draft_legacy**](docs/PolicyEditorBetaApi.md#get_draft_legacy) | **GET** /tap/draft | Get the active draft
*PolicyEditorBetaApi* | [**publish_draft_legacy**](docs/PolicyEditorBetaApi.md#publish_draft_legacy) | **POST** /tap/draft | Send publish request for a certain draft id
*PolicyEditorBetaApi* | [**publish_policy_rules**](docs/PolicyEditorBetaApi.md#publish_policy_rules) | **POST** /tap/publish | Send publish request for a set of policy rules
*PolicyEditorBetaApi* | [**update_draft_legacy**](docs/PolicyEditorBetaApi.md#update_draft_legacy) | **PUT** /tap/draft | Update the draft with a new set of rules
+*ReportsBetaApi* | [**create_report**](docs/ReportsBetaApi.md#create_report) | **POST** /reports | Create a report
+*ReportsBetaApi* | [**get_report**](docs/ReportsBetaApi.md#get_report) | **GET** /reports/{reportId} | Get report status
+*ReportsBetaApi* | [**list_reports**](docs/ReportsBetaApi.md#list_reports) | **GET** /reports | List reports
*ResetDeviceApi* | [**reset_device**](docs/ResetDeviceApi.md#reset_device) | **POST** /management/users/{id}/reset_device | Resets device
*SmartTransferApi* | [**approve_dv_p_ticket_term**](docs/SmartTransferApi.md#approve_dv_p_ticket_term) | **PUT** /smart_transfers/{ticketId}/terms/{termId}/dvp/approve | Set funding source and approval
*SmartTransferApi* | [**cancel_ticket**](docs/SmartTransferApi.md#cancel_ticket) | **PUT** /smart-transfers/{ticketId}/cancel | Cancel Ticket
@@ -523,7 +529,6 @@ Class | Method | HTTP request | Description
*TRLinkApi* | [**set_tr_link_transaction_travel_rule_message_id**](docs/TRLinkApi.md#set_tr_link_transaction_travel_rule_message_id) | **POST** /screening/trlink/transaction/{txId}/travel_rule_message_id | Set transaction travel rule message ID
*TRLinkApi* | [**test_tr_link_integration_connection**](docs/TRLinkApi.md#test_tr_link_integration_connection) | **POST** /screening/trlink/customers/integration/{customerIntegrationId}/test_connection | Test connection
*TRLinkApi* | [**update_tr_link_customer**](docs/TRLinkApi.md#update_tr_link_customer) | **PUT** /screening/trlink/customers/{customerId} | Update customer
-*TagsApi* | [**cancel_approval_request**](docs/TagsApi.md#cancel_approval_request) | **POST** /tags/approval_requests/{id}/cancel | Cancel an approval request by id
*TagsApi* | [**create_tag**](docs/TagsApi.md#create_tag) | **POST** /tags | Create a new tag
*TagsApi* | [**delete_tag**](docs/TagsApi.md#delete_tag) | **DELETE** /tags/{tagId} | Delete a tag
*TagsApi* | [**get_approval_request**](docs/TagsApi.md#get_approval_request) | **GET** /tags/approval_requests/{id} | Get an approval request by id
@@ -722,9 +727,11 @@ Class | Method | HTTP request | Description
- [AddressRegistryVaultListOrder](docs/AddressRegistryVaultListOrder.md)
- [AddressRegistryVaultOptOutItem](docs/AddressRegistryVaultOptOutItem.md)
- [AddressReverseLookupResponse](docs/AddressReverseLookupResponse.md)
+ - [AddressesFilters](docs/AddressesFilters.md)
- [AlertExposureTypeEnum](docs/AlertExposureTypeEnum.md)
- [AlertLevelEnum](docs/AlertLevelEnum.md)
- [AllowlistEntry](docs/AllowlistEntry.md)
+ - [AllowlistEntryResponse](docs/AllowlistEntryResponse.md)
- [AllowlistEntryStatus](docs/AllowlistEntryStatus.md)
- [AllowlistMetadata](docs/AllowlistMetadata.md)
- [AllowlistResponse](docs/AllowlistResponse.md)
@@ -909,8 +916,11 @@ Class | Method | HTTP request | Description
- [CreateAPIUser](docs/CreateAPIUser.md)
- [CreateAddressRequest](docs/CreateAddressRequest.md)
- [CreateAddressResponse](docs/CreateAddressResponse.md)
+ - [CreateAddressesReportRequest](docs/CreateAddressesReportRequest.md)
- [CreateAssetsRequest](docs/CreateAssetsRequest.md)
- [CreateConfigOperationRequest](docs/CreateConfigOperationRequest.md)
+ - [CreateConnectedAccountRequest](docs/CreateConnectedAccountRequest.md)
+ - [CreateConnectedAccountResponse](docs/CreateConnectedAccountResponse.md)
- [CreateConnectionRequest](docs/CreateConnectionRequest.md)
- [CreateConnectionResponse](docs/CreateConnectionResponse.md)
- [CreateConsoleUser](docs/CreateConsoleUser.md)
@@ -935,6 +945,8 @@ Class | Method | HTTP request | Description
- [CreatePayoutRequest](docs/CreatePayoutRequest.md)
- [CreateQuote](docs/CreateQuote.md)
- [CreateQuoteScopeInner](docs/CreateQuoteScopeInner.md)
+ - [CreateReportRequest](docs/CreateReportRequest.md)
+ - [CreateReportResponse](docs/CreateReportResponse.md)
- [CreateSigningKeyDto](docs/CreateSigningKeyDto.md)
- [CreateSigningKeyDtoProofOfOwnership](docs/CreateSigningKeyDtoProofOfOwnership.md)
- [CreateTagRequest](docs/CreateTagRequest.md)
@@ -951,6 +963,7 @@ Class | Method | HTTP request | Description
- [CreateWalletRequest](docs/CreateWalletRequest.md)
- [CreateWebhookRequest](docs/CreateWebhookRequest.md)
- [CreateWorkflowExecutionRequestParamsInner](docs/CreateWorkflowExecutionRequestParamsInner.md)
+ - [CreatedConnectedAccountItem](docs/CreatedConnectedAccountItem.md)
- [CustomRoutingDest](docs/CustomRoutingDest.md)
- [DAppAddressConfig](docs/DAppAddressConfig.md)
- [DVPSettlement](docs/DVPSettlement.md)
@@ -1142,6 +1155,7 @@ Class | Method | HTTP request | Description
- [InternalTransferDestination](docs/InternalTransferDestination.md)
- [InternalTransferResponse](docs/InternalTransferResponse.md)
- [InvalidParamaterValueError](docs/InvalidParamaterValueError.md)
+ - [IssueApiUserPairingTokenResponse](docs/IssueApiUserPairingTokenResponse.md)
- [JobCreated](docs/JobCreated.md)
- [LayerZeroAdapterCreateParams](docs/LayerZeroAdapterCreateParams.md)
- [LbtPaymentInfo](docs/LbtPaymentInfo.md)
@@ -1264,7 +1278,6 @@ Class | Method | HTTP request | Description
- [ParticipantRelationshipType](docs/ParticipantRelationshipType.md)
- [ParticipantsIdentification](docs/ParticipantsIdentification.md)
- [ParticipantsIdentificationPolicy](docs/ParticipantsIdentificationPolicy.md)
- - [ParticipantsIdentificationSupportedEndpoint](docs/ParticipantsIdentificationSupportedEndpoint.md)
- [PayeeAccount](docs/PayeeAccount.md)
- [PayeeAccountResponse](docs/PayeeAccountResponse.md)
- [PayeeAccountType](docs/PayeeAccountType.md)
@@ -1300,7 +1313,7 @@ Class | Method | HTTP request | Description
- [PolicyAndValidationResponse](docs/PolicyAndValidationResponse.md)
- [PolicyCheckResult](docs/PolicyCheckResult.md)
- [PolicyCurrency](docs/PolicyCurrency.md)
- - [PolicyMetadata](docs/PolicyMetadata.md)
+ - [PolicyMetadataEntry](docs/PolicyMetadataEntry.md)
- [PolicyOperator](docs/PolicyOperator.md)
- [PolicyResponse](docs/PolicyResponse.md)
- [PolicyRule](docs/PolicyRule.md)
@@ -1363,6 +1376,14 @@ Class | Method | HTTP request | Description
- [RenameConnectedAccountResponse](docs/RenameConnectedAccountResponse.md)
- [RenameCosigner](docs/RenameCosigner.md)
- [RenameVaultAccountResponse](docs/RenameVaultAccountResponse.md)
+ - [ReportConflictResponse](docs/ReportConflictResponse.md)
+ - [ReportJob](docs/ReportJob.md)
+ - [ReportJobLinks](docs/ReportJobLinks.md)
+ - [ReportJobResponse](docs/ReportJobResponse.md)
+ - [ReportListResponse](docs/ReportListResponse.md)
+ - [ReportOutputFormat](docs/ReportOutputFormat.md)
+ - [ReportStatus](docs/ReportStatus.md)
+ - [ReportType](docs/ReportType.md)
- [ResendByQueryRequest](docs/ResendByQueryRequest.md)
- [ResendByQueryResponse](docs/ResendByQueryResponse.md)
- [ResendFailedNotificationsJobStatusResponse](docs/ResendFailedNotificationsJobStatusResponse.md)
@@ -1480,6 +1501,7 @@ Class | Method | HTTP request | Description
- [SolanaConfig](docs/SolanaConfig.md)
- [SolanaInstruction](docs/SolanaInstruction.md)
- [SolanaInstructionWithValue](docs/SolanaInstructionWithValue.md)
+ - [SolanaRewardsBreakdown](docs/SolanaRewardsBreakdown.md)
- [SolanaSimpleCreateParams](docs/SolanaSimpleCreateParams.md)
- [SourceConfig](docs/SourceConfig.md)
- [SourceOfFunds](docs/SourceOfFunds.md)
@@ -1646,6 +1668,7 @@ Class | Method | HTTP request | Description
- [TransactionResponse](docs/TransactionResponse.md)
- [TransactionResponseContractCallDecodedData](docs/TransactionResponseContractCallDecodedData.md)
- [TransactionResponseDestination](docs/TransactionResponseDestination.md)
+ - [TransactionTag](docs/TransactionTag.md)
- [TransferConfigOperation](docs/TransferConfigOperation.md)
- [TransferOperationConfigParams](docs/TransferOperationConfigParams.md)
- [TransferOperationExecution](docs/TransferOperationExecution.md)
diff --git a/docs/AdditionalInfoRequestAdditionalInfo.md b/docs/AdditionalInfoRequestAdditionalInfo.md
index 87916a7d..05cae4d7 100644
--- a/docs/AdditionalInfoRequestAdditionalInfo.md
+++ b/docs/AdditionalInfoRequestAdditionalInfo.md
@@ -58,7 +58,7 @@ Name | Type | Description | Notes
**message** | **str** | The message to be sent to the recipient |
**value** | **str** | The PayID identifier (email, phone, ABN, or organization ID) |
**type** | **str** | The type of PayID being used |
-**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) | [optional]
+**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) |
**sort_code** | **str** | UK bank sort code (format XX-XX-XX) |
**bank_account_country** | **str** | CHAPS bank account holder name |
**bank_account_holder_name** | **str** | CHAPS bank account holder name |
diff --git a/docs/AddressRegistryLegalEntity.md b/docs/AddressRegistryLegalEntity.md
index 836996c4..6e2e127d 100644
--- a/docs/AddressRegistryLegalEntity.md
+++ b/docs/AddressRegistryLegalEntity.md
@@ -6,10 +6,10 @@ Legal entity details for a blockchain address.
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**verified** | **bool** | Whether the entity was resolved from verified public registry data (e.g. LEI sources). |
+**lei_data** | **bool** | Indicates whether LEI (Legal Entity Identifier) data is available for this address from a verified public registry. A value of `false` means no LEI record was found. |
**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. |
+**lei** | **str** | Legal Entity Identifier when available. Empty when `leiData` is `false`. |
**travel_rule_providers** | [**List[AddressRegistryTravelRuleProvider]**](AddressRegistryTravelRuleProvider.md) | |
**email** | **str** | Travel Rule contact email when available. |
diff --git a/docs/AddressesFilters.md b/docs/AddressesFilters.md
new file mode 100644
index 00000000..9ea859d8
--- /dev/null
+++ b/docs/AddressesFilters.md
@@ -0,0 +1,31 @@
+# AddressesFilters
+
+Filter options for the `addresses` report type.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**vault_account_ids** | **List[str]** | Restrict to the listed vault account IDs. Max 1000 items. Pass a single ID as a one-element array. | [optional]
+**assets** | **List[str]** | Filter by asset symbol (e.g., BTC, ETH). Max 1000 items. Pass a single symbol as a one-element array. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.addresses_filters import AddressesFilters
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of AddressesFilters from a JSON string
+addresses_filters_instance = AddressesFilters.from_json(json)
+# print the JSON string representation of the object
+print(AddressesFilters.to_json())
+
+# convert the object into a dict
+addresses_filters_dict = addresses_filters_instance.to_dict()
+# create an instance of AddressesFilters from a dict
+addresses_filters_from_dict = AddressesFilters.from_dict(addresses_filters_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/AllowlistEntryResponse.md b/docs/AllowlistEntryResponse.md
new file mode 100644
index 00000000..bbab5ec5
--- /dev/null
+++ b/docs/AllowlistEntryResponse.md
@@ -0,0 +1,31 @@
+# AllowlistEntryResponse
+
+Single allowlist entry envelope, paired with the account-level allowlist sync metadata.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**AllowlistEntry**](AllowlistEntry.md) | |
+**metadata** | [**AllowlistMetadata**](AllowlistMetadata.md) | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.allowlist_entry_response import AllowlistEntryResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of AllowlistEntryResponse from a JSON string
+allowlist_entry_response_instance = AllowlistEntryResponse.from_json(json)
+# print the JSON string representation of the object
+print(AllowlistEntryResponse.to_json())
+
+# convert the object into a dict
+allowlist_entry_response_dict = allowlist_entry_response_instance.to_dict()
+# create an instance of AllowlistEntryResponse from a dict
+allowlist_entry_response_from_dict = AllowlistEntryResponse.from_dict(allowlist_entry_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/ApiUserApi.md b/docs/ApiUserApi.md
index e1cd0a2f..899ab8f3 100644
--- a/docs/ApiUserApi.md
+++ b/docs/ApiUserApi.md
@@ -6,6 +6,7 @@ Method | HTTP request | Description
------------- | ------------- | -------------
[**create_api_user**](ApiUserApi.md#create_api_user) | **POST** /management/api_users | Create API Key
[**get_api_users**](ApiUserApi.md#get_api_users) | **GET** /management/api_users | Get API Keys
+[**issue_api_user_pairing_token**](ApiUserApi.md#issue_api_user_pairing_token) | **POST** /management/api_users/{userId}/pairing_token | Issue API user pairing token
# **create_api_user**
@@ -162,3 +163,87 @@ 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)
+# **issue_api_user_pairing_token**
+> IssueApiUserPairingTokenResponse issue_api_user_pairing_token(user_id, idempotency_key=idempotency_key)
+
+Issue API user pairing token
+
+Issues a device pairing token for the given user and returns the user's info along with the token.
+- The API user must be in PENDING_ACTIVATION status. If the user is already set up (enabled), the request is rejected with a 409 Conflict.
+- Please note that this endpoint is available only for API keys with Owner/Admin/Non Signing Admin permissions.
+Endpoint Permission: Owner, Admin, Non-Signing Admin.
+
+### Example
+
+
+```python
+from fireblocks.models.issue_api_user_pairing_token_response import IssueApiUserPairingTokenResponse
+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:
+ user_id = 'user_id_example' # str | The ID of the api user
+ 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:
+ # Issue API user pairing token
+ api_response = fireblocks.api_user.issue_api_user_pairing_token(user_id, idempotency_key=idempotency_key).result()
+ print("The response of ApiUserApi->issue_api_user_pairing_token:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ApiUserApi->issue_api_user_pairing_token: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **user_id** | **str**| The ID of the api user |
+ **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
+
+[**IssueApiUserPairingTokenResponse**](IssueApiUserPairingTokenResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**201** | Pairing token issued | * X-Request-ID -
|
+**401** | Unauthorized. Missing / invalid JWT token in Authorization header. | * X-Request-ID -
|
+**403** | Lacking permissions. | * X-Request-ID -
|
+**404** | API user not found for the given userId. | * X-Request-ID -
|
+**409** | Conflict. The API user is not in PENDING_ACTIVATION status (e.g. already set up / enabled). | * X-Request-ID -
|
+**5XX** | Internal 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)
+
diff --git a/docs/ChapsPaymentInfo.md b/docs/ChapsPaymentInfo.md
index 4417d600..0c88d84a 100644
--- a/docs/ChapsPaymentInfo.md
+++ b/docs/ChapsPaymentInfo.md
@@ -10,6 +10,9 @@ Name | Type | Description | Notes
**addressing_system** | **str** | The addressing system used for CHAPS transfers |
**account_holder_given_name** | **str** | The given name (first name) of the account holder |
**account_holder_surname** | **str** | The surname (last name) of the account holder |
+**account_holder_city** | **str** | The city where the account holder resides | [optional]
+**account_holder_country** | **str** | The country where the account holder resides (ISO 3166-1 alpha-2 code) | [optional]
+**account_holder_postal_code** | **str** | The postal code of the account holder's address | [optional]
**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
**sort_code** | **str** | UK bank sort code (format XX-XX-XX) |
**account_number** | **str** | UK bank account number |
diff --git a/docs/ComplianceApi.md b/docs/ComplianceApi.md
index 9995f83e..287cddfd 100644
--- a/docs/ComplianceApi.md
+++ b/docs/ComplianceApi.md
@@ -12,6 +12,7 @@ Method | HTTP request | Description
[**deactivate_ars_config**](ComplianceApi.md#deactivate_ars_config) | **POST** /screening/ars/config/deactivate | Deactivate ARS (Address Registry Screening)
[**deactivate_byork_config**](ComplianceApi.md#deactivate_byork_config) | **POST** /screening/byork/config/deactivate | Deactivate BYORK Light
[**delete_counterparty_group**](ComplianceApi.md#delete_counterparty_group) | **DELETE** /counterparty_groups/{groupId} | Delete a counterparty group
+[**delete_legal_entity**](ComplianceApi.md#delete_legal_entity) | **DELETE** /legal_entities/{legalEntityId} | Delete 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
@@ -657,6 +658,78 @@ 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)
+# **delete_legal_entity**
+> delete_legal_entity(legal_entity_id)
+
+Delete a legal entity
+
+Delete a legal entity will change the status of a legal entity registration to REVOKED. Endpoint Permission: Admin, Non-Signing Admin.
+
+### Example
+
+
+```python
+from fireblocks.client import Fireblocks
+from fireblocks.client_configuration import ClientConfiguration
+from fireblocks.exceptions import ApiException
+from fireblocks.base_path import BasePath
+
+# 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 to delete
+
+ try:
+ # Delete a legal entity
+ fireblocks.compliance.delete_legal_entity(legal_entity_id).result()
+ except Exception as e:
+ print("Exception when calling ComplianceApi->delete_legal_entity: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **legal_entity_id** | **str**| The unique ID of the legal entity registration to delete |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**204** | Legal entity deleted successfully | * X-Request-ID -
|
+**400** | Legal entity registration is not in deletable status (PENDING or APPROVED) | * 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()
@@ -1247,7 +1320,7 @@ No authorization required
Look up legal entity by blockchain address
-Returns legal entity information for the given blockchain address (verification status, LEI, Travel Rule providers, contact email, and related fields — see response schema). URL-encode `{address}` when required.
+Returns legal entity information for the given blockchain address (LEI data availability, LEI identifier, Travel Rule providers, contact email, and related fields — see response schema). URL-encode `{address}` when required.
### Example
diff --git a/docs/ConnectedAccountErrorResponse.md b/docs/ConnectedAccountErrorResponse.md
index 2a143f26..e8ae06be 100644
--- a/docs/ConnectedAccountErrorResponse.md
+++ b/docs/ConnectedAccountErrorResponse.md
@@ -5,8 +5,10 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**error_message** | **str** | Error message describing what went wrong |
-**error_code** | **str** | Error code identifying the type of error |
+**message** | **str** | Error message describing what went wrong. |
+**code** | **int** | Numeric error code identifying the type of error. |
+**error_message** | **str** | Error message describing what went wrong | [optional]
+**error_code** | **str** | Error code identifying the type of error | [optional]
## Example
diff --git a/docs/ConnectedAccountsBetaApi.md b/docs/ConnectedAccountsBetaApi.md
index 0cb57e3d..dcba056e 100644
--- a/docs/ConnectedAccountsBetaApi.md
+++ b/docs/ConnectedAccountsBetaApi.md
@@ -4,6 +4,7 @@ All URIs are relative to *https://api.fireblocks.io/v1*
Method | HTTP request | Description
------------- | ------------- | -------------
+[**create_connected_account**](ConnectedAccountsBetaApi.md#create_connected_account) | **POST** /connected_accounts | Create a connected account
[**disconnect_connected_account**](ConnectedAccountsBetaApi.md#disconnect_connected_account) | **DELETE** /connected_accounts/{accountId} | Disconnect connected account
[**get_connected_account**](ConnectedAccountsBetaApi.md#get_connected_account) | **GET** /connected_accounts/{accountId} | Get connected account
[**get_connected_account_allowlist**](ConnectedAccountsBetaApi.md#get_connected_account_allowlist) | **GET** /connected_accounts/{accountId}/allowlist | Get allowlist for connected account
@@ -16,6 +17,98 @@ Method | HTTP request | Description
[**sync_connected_account_allowlist**](ConnectedAccountsBetaApi.md#sync_connected_account_allowlist) | **POST** /connected_accounts/{accountId}/allowlist/sync | Sync allowlist for connected account
+# **create_connected_account**
+> CreateConnectedAccountResponse create_connected_account(create_connected_account_request, idempotency_key=idempotency_key)
+
+Create a connected account
+
+Creates a new connected account for the authenticated tenant.
+
+The `creds` field must be a Base64-encoded RSA-encrypted credential blob.
+Use `GET /exchange_accounts/credentials_public_key` to retrieve the public key for encryption.
+
+The `providerType` is derived server-side from the `providerId` — callers do not supply it.
+
+Endpoint Permission: Editor, Admin, Non-Signing Admin.
+
+**Note:** This endpoint is currently in beta and might be subject to changes.
+
+
+### Example
+
+
+```python
+from fireblocks.models.create_connected_account_request import CreateConnectedAccountRequest
+from fireblocks.models.create_connected_account_response import CreateConnectedAccountResponse
+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:
+ create_connected_account_request = fireblocks.CreateConnectedAccountRequest() # CreateConnectedAccountRequest |
+ 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:
+ # Create a connected account
+ api_response = fireblocks.connected_accounts_beta.create_connected_account(create_connected_account_request, idempotency_key=idempotency_key).result()
+ print("The response of ConnectedAccountsBetaApi->create_connected_account:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ConnectedAccountsBetaApi->create_connected_account: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **create_connected_account_request** | [**CreateConnectedAccountRequest**](CreateConnectedAccountRequest.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
+
+[**CreateConnectedAccountResponse**](CreateConnectedAccountResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**201** | Account created (or pending approval). | * X-Request-ID -
|
+**400** | Bad request — invalid field or provider constraints violated. | * X-Request-ID -
|
+**401** | Unauthorized. Missing / invalid JWT token, or insufficient role (Editor or higher required). | * X-Request-ID -
|
+**403** | Feature not enabled for this tenant. | * X-Request-ID -
|
+**404** | mainAccountId not found. | * X-Request-ID -
|
+**422** | Invalid credentials. | * 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)
+
# **disconnect_connected_account**
> disconnect_connected_account(account_id)
@@ -174,7 +267,7 @@ Get allowlist for connected account
Retrieves the address allowlist for a specified connected account.
-**Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange accounts only.
+**Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
### Example
@@ -263,20 +356,20 @@ 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_connected_account_allowlist_entry**
-> AllowlistEntry get_connected_account_allowlist_entry(account_id, allowlist_id)
+> AllowlistEntryResponse get_connected_account_allowlist_entry(account_id, allowlist_id)
Get a single allowlist entry for a connected account
Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account.
-**Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange accounts only.
+**Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
### Example
```python
-from fireblocks.models.allowlist_entry import AllowlistEntry
+from fireblocks.models.allowlist_entry_response import AllowlistEntryResponse
from fireblocks.client import Fireblocks
from fireblocks.client_configuration import ClientConfiguration
from fireblocks.exceptions import ApiException
@@ -321,7 +414,7 @@ Name | Type | Description | Notes
### Return type
-[**AllowlistEntry**](AllowlistEntry.md)
+[**AllowlistEntryResponse**](AllowlistEntryResponse.md)
### Authorization
@@ -762,7 +855,7 @@ Triggers an on-demand sync from the exchange, bypassing the cache and fetching l
**Rate limit:** 1 request per minute per connected account.
-**Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange accounts only.
+**Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
### Example
diff --git a/docs/CreateAddressesReportRequest.md b/docs/CreateAddressesReportRequest.md
new file mode 100644
index 00000000..e4e8b4f7
--- /dev/null
+++ b/docs/CreateAddressesReportRequest.md
@@ -0,0 +1,33 @@
+# CreateAddressesReportRequest
+
+Request body for creating a new ADDRESSES report job
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**report_type** | **str** | The type of report to generate. |
+**output_format** | [**ReportOutputFormat**](ReportOutputFormat.md) | |
+**compress** | **bool** | Gzip the output file. Defaults to true. | [optional] [default to False]
+**filters** | [**AddressesFilters**](AddressesFilters.md) | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.create_addresses_report_request import CreateAddressesReportRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CreateAddressesReportRequest from a JSON string
+create_addresses_report_request_instance = CreateAddressesReportRequest.from_json(json)
+# print the JSON string representation of the object
+print(CreateAddressesReportRequest.to_json())
+
+# convert the object into a dict
+create_addresses_report_request_dict = create_addresses_report_request_instance.to_dict()
+# create an instance of CreateAddressesReportRequest from a dict
+create_addresses_report_request_from_dict = CreateAddressesReportRequest.from_dict(create_addresses_report_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/CreateConnectedAccountRequest.md b/docs/CreateConnectedAccountRequest.md
new file mode 100644
index 00000000..50e0bd4e
--- /dev/null
+++ b/docs/CreateConnectedAccountRequest.md
@@ -0,0 +1,35 @@
+# CreateConnectedAccountRequest
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**provider_id** | **str** | Integration key identifying the provider (e.g. BINANCE, KINGDOM_BANK, GEMINI_NLV2). |
+**display_name** | **str** | Human-readable account name. Required for non-NLV2 providers. | [optional]
+**creds** | **bytearray** | Base64-encoded RSA-encrypted credential blob. Encrypt using the public key from GET /exchange_accounts/credentials_public_key. |
+**api_key** | **str** | Account-level API key. |
+**main_account_id** | **str** | Parent main account ID for sub-account creation. Not allowed for NLV2 providers. | [optional]
+**account_id** | **str** | Optional provider-side account ID to associate with the created account. | [optional]
+**on_premise_server_id** | **str** | On-premise server ID for self-hosted integrations. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.create_connected_account_request import CreateConnectedAccountRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CreateConnectedAccountRequest from a JSON string
+create_connected_account_request_instance = CreateConnectedAccountRequest.from_json(json)
+# print the JSON string representation of the object
+print(CreateConnectedAccountRequest.to_json())
+
+# convert the object into a dict
+create_connected_account_request_dict = create_connected_account_request_instance.to_dict()
+# create an instance of CreateConnectedAccountRequest from a dict
+create_connected_account_request_from_dict = CreateConnectedAccountRequest.from_dict(create_connected_account_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/CreateConnectedAccountResponse.md b/docs/CreateConnectedAccountResponse.md
new file mode 100644
index 00000000..56b8c87a
--- /dev/null
+++ b/docs/CreateConnectedAccountResponse.md
@@ -0,0 +1,29 @@
+# CreateConnectedAccountResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accounts** | [**List[CreatedConnectedAccountItem]**](CreatedConnectedAccountItem.md) | Created accounts — main account first, sub-accounts after (NLV2 hierarchy). |
+
+## Example
+
+```python
+from fireblocks.models.create_connected_account_response import CreateConnectedAccountResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CreateConnectedAccountResponse from a JSON string
+create_connected_account_response_instance = CreateConnectedAccountResponse.from_json(json)
+# print the JSON string representation of the object
+print(CreateConnectedAccountResponse.to_json())
+
+# convert the object into a dict
+create_connected_account_response_dict = create_connected_account_response_instance.to_dict()
+# create an instance of CreateConnectedAccountResponse from a dict
+create_connected_account_response_from_dict = CreateConnectedAccountResponse.from_dict(create_connected_account_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/CreateMultipleVaultAccountsJobStatus.md b/docs/CreateMultipleVaultAccountsJobStatus.md
index d3ea6e80..e7f1f42a 100644
--- a/docs/CreateMultipleVaultAccountsJobStatus.md
+++ b/docs/CreateMultipleVaultAccountsJobStatus.md
@@ -5,8 +5,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**status** | **str** | Status of the job. Possible values - Success, In Progress, Failed, Pending Approval, Cancelled |
-**vault_accounts** | **Dict[str, Dict[str, str]]** | Mapping between VaultAccountId to a mapping of asset to address | [optional]
+**status** | **str** | Status of the job. Possible values - Success, In Progress, Error, Pending Approval, Canceled |
+**vault_accounts** | **Dict[str, Dict[str, str]]** | Mapping between VaultAccountId to a mapping of asset to address, and the vault account name | [optional]
**tag_ids** | **List[str]** | List of tag IDs successfully attached to each of the created vault accounts | [optional]
**error_message** | **str** | | [optional]
**approval_request_id** | **str** | Approval request ID if the job has protected tags to attach to the vault accounts | [optional]
diff --git a/docs/CreateReportRequest.md b/docs/CreateReportRequest.md
new file mode 100644
index 00000000..a6fca12b
--- /dev/null
+++ b/docs/CreateReportRequest.md
@@ -0,0 +1,33 @@
+# CreateReportRequest
+
+Request body for creating a new asynchronous report job
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**report_type** | **str** | The type of report to generate. |
+**output_format** | [**ReportOutputFormat**](ReportOutputFormat.md) | |
+**compress** | **bool** | Gzip the output file. Defaults to true. | [optional] [default to False]
+**filters** | [**AddressesFilters**](AddressesFilters.md) | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.create_report_request import CreateReportRequest
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CreateReportRequest from a JSON string
+create_report_request_instance = CreateReportRequest.from_json(json)
+# print the JSON string representation of the object
+print(CreateReportRequest.to_json())
+
+# convert the object into a dict
+create_report_request_dict = create_report_request_instance.to_dict()
+# create an instance of CreateReportRequest from a dict
+create_report_request_from_dict = CreateReportRequest.from_dict(create_report_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/CreateReportResponse.md b/docs/CreateReportResponse.md
new file mode 100644
index 00000000..b485dada
--- /dev/null
+++ b/docs/CreateReportResponse.md
@@ -0,0 +1,30 @@
+# CreateReportResponse
+
+Returned when a report job is successfully created. Use the `id` to poll for status via `GET /v1/reports/{reportId}`.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | Unique identifier of the report job |
+
+## Example
+
+```python
+from fireblocks.models.create_report_response import CreateReportResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CreateReportResponse from a JSON string
+create_report_response_instance = CreateReportResponse.from_json(json)
+# print the JSON string representation of the object
+print(CreateReportResponse.to_json())
+
+# convert the object into a dict
+create_report_response_dict = create_report_response_instance.to_dict()
+# create an instance of CreateReportResponse from a dict
+create_report_response_from_dict = CreateReportResponse.from_dict(create_report_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/CreatedConnectedAccountItem.md b/docs/CreatedConnectedAccountItem.md
new file mode 100644
index 00000000..d8a6e65b
--- /dev/null
+++ b/docs/CreatedConnectedAccountItem.md
@@ -0,0 +1,32 @@
+# CreatedConnectedAccountItem
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**account_id** | **str** | ID of the created account. |
+**name** | **str** | Human-readable account name. |
+**parent_account_id** | **str** | Parent account ID — present only for sub-accounts in an NLV2 hierarchy. | [optional]
+**status** | [**ConnectedAccountApprovalStatus**](ConnectedAccountApprovalStatus.md) | |
+
+## Example
+
+```python
+from fireblocks.models.created_connected_account_item import CreatedConnectedAccountItem
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CreatedConnectedAccountItem from a JSON string
+created_connected_account_item_instance = CreatedConnectedAccountItem.from_json(json)
+# print the JSON string representation of the object
+print(CreatedConnectedAccountItem.to_json())
+
+# convert the object into a dict
+created_connected_account_item_dict = created_connected_account_item_instance.to_dict()
+# create an instance of CreatedConnectedAccountItem from a dict
+created_connected_account_item_from_dict = CreatedConnectedAccountItem.from_dict(created_connected_account_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/DelegationBlockchainPositionInfo.md b/docs/DelegationBlockchainPositionInfo.md
index 68fe2a0f..91820b2f 100644
--- a/docs/DelegationBlockchainPositionInfo.md
+++ b/docs/DelegationBlockchainPositionInfo.md
@@ -8,6 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**stake_account_address** | **str** | The stake account address matching the stakeAccountId. |
**stake_account_derivation_change_value** | **float** | The value of the change level in the BIP32 path which was used to derive the stake account address. |
+**rewards_breakdown** | [**SolanaRewardsBreakdown**](SolanaRewardsBreakdown.md) | | [optional]
**is_compounding_validator** | **bool** | Is the validator compounding (i.e it was created with compounding validator type). |
**total_withdrawable_amount** | **str** | The total amount available for withdrawal. |
**total_inactive_amount** | **str** | The total inactive amount. |
diff --git a/docs/DestinationTransferPeerPathResponse.md b/docs/DestinationTransferPeerPathResponse.md
index fecebadb..d682981b 100644
--- a/docs/DestinationTransferPeerPathResponse.md
+++ b/docs/DestinationTransferPeerPathResponse.md
@@ -12,6 +12,7 @@ Name | Type | Description | Notes
**name** | **str** | The name of the peer. | [optional]
**wallet_id** | **str** | | [optional]
**trading_account** | **str** | If this transaction is an exchange internal transfer, this field will be populated with the type of that trading account. | [optional]
+**tags** | [**List[TransactionTag]**](TransactionTag.md) | Tags associated with the transaction's destination. | [optional]
## Example
diff --git a/docs/DraftResponse.md b/docs/DraftResponse.md
index f8f41239..a7a0c31e 100644
--- a/docs/DraftResponse.md
+++ b/docs/DraftResponse.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**status** | **str** | Operation status |
**rules** | [**List[PolicyRule]**](PolicyRule.md) | Draft rules |
**draft_id** | **str** | Draft unique id |
-**metadata** | [**PolicyMetadata**](PolicyMetadata.md) | |
+**metadata** | [**Dict[str, PolicyMetadataEntry]**](PolicyMetadataEntry.md) | Policy metadata keyed by policy type |
## Example
diff --git a/docs/Exposure.md b/docs/Exposure.md
index e1778e8f..77d5ac50 100644
--- a/docs/Exposure.md
+++ b/docs/Exposure.md
@@ -1,13 +1,17 @@
# Exposure
+Vault allocation exposure item (Morpho MetaMorpho allocation slice).
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**asset_address** | **str** | On-chain address of the exposure asset. | [optional]
-**symbol** | **str** | Ticker for the exposure asset. | [optional]
-**amount** | **str** | Human-readable decimal string (raw on-chain value scaled by 10^decimals). | [optional]
+**address** | **str** | Contract address of the exposure token on-chain. |
+**amount** | **str** | Human-readable token amount (raw on-chain value scaled by 10^decimals). |
+**symbol** | **str** | Human-readable ticker (e.g. USDC). | [optional]
+**decimals** | **int** | Token decimals used when interpreting on-chain amounts. | [optional]
+**asset_id** | **str** | Fireblocks legacy asset identifier (e.g. USDC_ETH, PYUSD); only present when resolved via asset-service. | [optional]
+**amount_usd** | **str** | USD notional value of the exposure amount. | [optional]
## Example
diff --git a/docs/GetActionResponse.md b/docs/GetActionResponse.md
index fec2fba4..037fd289 100644
--- a/docs/GetActionResponse.md
+++ b/docs/GetActionResponse.md
@@ -7,6 +7,8 @@ Single lending action (intent plus per-step execution rows).
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | Action sequence id (UUID). |
+**vault_account_id** | **str** | Fireblocks vault account that executed the action. |
+**user_id** | **str** | User who initiated the action. |
**status** | **str** | Intent status (e.g. CREATED, IN_PROGRESS, COMPLETED). |
**provider_id** | **str** | Lending protocol identifier. |
**action_type** | **str** | Whether this action is a deposit or withdraw flow. |
diff --git a/docs/IdentificationPolicyOverride.md b/docs/IdentificationPolicyOverride.md
index 90253413..fe6d05c0 100644
--- a/docs/IdentificationPolicyOverride.md
+++ b/docs/IdentificationPolicyOverride.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**asset** | **str** | Fireblocks asset ID (fiat or crypto). | [optional]
**rail** | [**TransferRail**](TransferRail.md) | | [optional]
**flow_direction** | [**FlowDirection**](FlowDirection.md) | | [optional]
-**var_schema** | **str** | A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest lists that endpoint in `participantsIdentificationPolicy.supportedEndpoints` (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). |
+**var_schema** | **str** | A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest declares a `participantsIdentificationPolicy` for that endpoint (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). |
## Example
diff --git a/docs/IssueApiUserPairingTokenResponse.md b/docs/IssueApiUserPairingTokenResponse.md
new file mode 100644
index 00000000..a186d997
--- /dev/null
+++ b/docs/IssueApiUserPairingTokenResponse.md
@@ -0,0 +1,35 @@
+# IssueApiUserPairingTokenResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | The unique identifier of the user |
+**name** | **str** | The name of the user | [optional]
+**role** | [**UserRole**](UserRole.md) | |
+**enabled** | **bool** | Whether the user is enabled |
+**user_type** | [**UserType**](UserType.md) | | [optional]
+**status** | [**UserStatus**](UserStatus.md) | | [optional]
+**pairing_token** | **str** | The device pairing token issued for the given user |
+
+## Example
+
+```python
+from fireblocks.models.issue_api_user_pairing_token_response import IssueApiUserPairingTokenResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of IssueApiUserPairingTokenResponse from a JSON string
+issue_api_user_pairing_token_response_instance = IssueApiUserPairingTokenResponse.from_json(json)
+# print the JSON string representation of the object
+print(IssueApiUserPairingTokenResponse.to_json())
+
+# convert the object into a dict
+issue_api_user_pairing_token_response_dict = issue_api_user_pairing_token_response_instance.to_dict()
+# create an instance of IssueApiUserPairingTokenResponse from a dict
+issue_api_user_pairing_token_response_from_dict = IssueApiUserPairingTokenResponse.from_dict(issue_api_user_pairing_token_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 0f607508..f2a38ee7 100644
--- a/docs/Manifest.md
+++ b/docs/Manifest.md
@@ -9,7 +9,6 @@ Name | Type | Description | Notes
**order** | [**ManifestOrder**](ManifestOrder.md) | |
**quote** | [**ManifestQuote**](ManifestQuote.md) | |
**rate** | [**ManifestBase**](ManifestBase.md) | |
-**participants_identification_policy** | [**ParticipantsIdentificationPolicy**](ParticipantsIdentificationPolicy.md) | | [optional]
## Example
diff --git a/docs/ManifestBase.md b/docs/ManifestBase.md
index 9f4aa394..be6f9b92 100644
--- a/docs/ManifestBase.md
+++ b/docs/ManifestBase.md
@@ -7,6 +7,8 @@ Base manifest schema with common properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**supported** | **bool** | Indicates whether the endpoint is supported by the provider |
+**participants_identification_policy** | [**ParticipantsIdentificationPolicy**](ParticipantsIdentificationPolicy.md) | | [optional]
+**supported_parties** | [**List[ParticipantRelationshipType]**](ParticipantRelationshipType.md) | The participant party types the provider supports for this endpoint. | [optional]
## Example
diff --git a/docs/ManifestOrder.md b/docs/ManifestOrder.md
index 6495d192..e5f15bdb 100644
--- a/docs/ManifestOrder.md
+++ b/docs/ManifestOrder.md
@@ -6,8 +6,11 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**supported** | **bool** | Indicates whether the endpoint is supported by the provider |
+**participants_identification_policy** | [**ParticipantsIdentificationPolicy**](ParticipantsIdentificationPolicy.md) | | [optional]
+**supported_parties** | [**List[ParticipantRelationshipType]**](ParticipantRelationshipType.md) | The participant party types the provider supports for this endpoint. | [optional]
**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. |
+**requires_reason_for_payment** | **bool** | Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required. | [optional]
## Example
diff --git a/docs/ManifestOrderInfo.md b/docs/ManifestOrderInfo.md
index d42c9801..c37aec2a 100644
--- a/docs/ManifestOrderInfo.md
+++ b/docs/ManifestOrderInfo.md
@@ -8,6 +8,7 @@ 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. |
+**requires_reason_for_payment** | **bool** | Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required. | [optional]
## Example
diff --git a/docs/ManifestQuote.md b/docs/ManifestQuote.md
index 847c6818..713c154a 100644
--- a/docs/ManifestQuote.md
+++ b/docs/ManifestQuote.md
@@ -6,6 +6,8 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**supported** | **bool** | Indicates whether the endpoint is supported by the provider |
+**participants_identification_policy** | [**ParticipantsIdentificationPolicy**](ParticipantsIdentificationPolicy.md) | | [optional]
+**supported_parties** | [**List[ParticipantRelationshipType]**](ParticipantRelationshipType.md) | The participant party types the provider supports for this endpoint. | [optional]
**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
diff --git a/docs/Opportunity.md b/docs/Opportunity.md
index 1f2d68df..5ecfbffb 100644
--- a/docs/Opportunity.md
+++ b/docs/Opportunity.md
@@ -19,7 +19,8 @@ Name | Type | Description | Notes
**apy** | [**Apy**](Apy.md) | APY breakdown; values are percentages (e.g. 4.25 means 4.25%). | [optional]
**performance_fee** | **str** | Performance fee as a human-readable decimal string. | [optional]
**management_fee** | **str** | Management fee as a human-readable decimal string. | [optional]
-**exposure** | [**List[Exposure]**](Exposure.md) | Optional per-asset exposure breakdown. | [optional]
+**exposure_type** | **str** | What the `exposure` rows represent; `UNSPECIFIED` when there is no exposure. | [optional]
+**exposure** | [**List[Exposure]**](Exposure.md) | Per-asset exposure breakdown (vault allocation slices, top 20 by USD notional). Empty when not applicable. | [optional]
## Example
diff --git a/docs/ParticipantsIdentificationPolicy.md b/docs/ParticipantsIdentificationPolicy.md
index 845c08f2..f17b7330 100644
--- a/docs/ParticipantsIdentificationPolicy.md
+++ b/docs/ParticipantsIdentificationPolicy.md
@@ -1,13 +1,12 @@
# ParticipantsIdentificationPolicy
-When present on a provider manifest, specifies KYC/AML identification requirements as JSON Schemas and which flows in `supportedEndpoints` may require `participantsIdentification`. Only endpoints listed in `supportedEndpoints` are in scope for this policy. `defaultSchema` is the baseline; `overrides` refine it by `asset`, `rail`, and/or `flowDirection` (see priority below). The most specific matching override applies its `schema` for that request context: it may fully replace `defaultSchema`, or partially override it—when the override `schema` is not provided as a complete standalone definition, fields and rules omitted there continue to follow `defaultSchema`. If this object is omitted from the manifest, the provider imposes no PII requirements through this policy. FirstParty participants are always exempt. Resolution: from overrides that match the request context, choose the most specific (most dimensions matched); break ties by earlier position in the `overrides` array; if none match, use `defaultSchema`. Priority (highest precedence first): 1. asset + rail + flowDirection 2. Any two dimensions: asset+rail, asset+flowDirection, rail+flowDirection 3. Any single dimension: asset, rail, or flowDirection 4. defaultSchema (no override matches)
+When present on a provider manifest, specifies KYC/AML identification requirements as JSON Schemas. `defaultSchema` is the baseline; `overrides` refine it by `asset`, `rail`, and/or `flowDirection` (see priority below). The most specific matching override applies its `schema` for that request context: it may fully replace `defaultSchema`, or partially override it—when the override `schema` is not provided as a complete standalone definition, fields and rules omitted there continue to follow `defaultSchema`. If this object is omitted from the manifest, the provider imposes no PII requirements through this policy. FirstParty participants are always exempt. Resolution: from overrides that match the request context, choose the most specific (most dimensions matched); break ties by earlier position in the `overrides` array; if none match, use `defaultSchema`. Priority (highest precedence first): 1. asset + rail + flowDirection 2. Any two dimensions: asset+rail, asset+flowDirection, rail+flowDirection 3. Any single dimension: asset, rail, or flowDirection 4. defaultSchema (no override matches)
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**supported_endpoints** | [**List[ParticipantsIdentificationSupportedEndpoint]**](ParticipantsIdentificationSupportedEndpoint.md) | API endpoints in scope for this participants identification policy. Values `ORDER`, `QUOTE`, and `RATE` correspond to manifest `order`, `quote`, and `rate` flows. Client requests to those endpoints may need to include `participantsIdentification` when the resolved schema requires it. |
-**default_schema** | **str** | A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest lists that endpoint in `participantsIdentificationPolicy.supportedEndpoints` (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). |
+**default_schema** | **str** | A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest declares a `participantsIdentificationPolicy` for that endpoint (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). |
**overrides** | [**List[IdentificationPolicyOverride]**](IdentificationPolicyOverride.md) | Contextual overrides scoped by asset, rail, and/or flowDirection. Most specific match wins; ties broken by array order. Replaces the default partially. Each override MUST include at least one of `asset`, `rail`, or `flowDirection` (not `schema` alone); see IdentificationPolicyOverride. | [optional]
## Example
diff --git a/docs/ParticipantsIdentificationSupportedEndpoint.md b/docs/ParticipantsIdentificationSupportedEndpoint.md
deleted file mode 100644
index 9512bec4..00000000
--- a/docs/ParticipantsIdentificationSupportedEndpoint.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# ParticipantsIdentificationSupportedEndpoint
-
-Trading API endpoint category where `participantsIdentification` may be required when this policy is present. Corresponds to manifest `order`, `quote`, and `rate`: ORDER, QUOTE, and RATE respectively.
-
-## Enum
-
-* `ORDER` (value: `'ORDER'`)
-
-* `QUOTE` (value: `'QUOTE'`)
-
-* `RATE` (value: `'RATE'`)
-
-[[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/PayidAddress.md b/docs/PayidAddress.md
index cb6b0dae..9af67868 100644
--- a/docs/PayidAddress.md
+++ b/docs/PayidAddress.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**value** | **str** | The PayID identifier (email, phone, ABN, or organization ID) |
**type** | **str** | The type of PayID being used |
**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) | [optional]
-**account_number** | **str** | Australian bank account number |
+**account_number** | **str** | Australian bank account number | [optional]
## Example
diff --git a/docs/PayidPaymentInfo.md b/docs/PayidPaymentInfo.md
index 16b6a1e6..e19b0a0e 100644
--- a/docs/PayidPaymentInfo.md
+++ b/docs/PayidPaymentInfo.md
@@ -13,7 +13,7 @@ Name | Type | Description | Notes
**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
**value** | **str** | The PayID identifier (email, phone, ABN, or organization ID) |
**type** | **str** | The type of PayID being used |
-**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) | [optional]
+**bsb** | **str** | Bank State Branch (BSB) number (6 digits, format XXX-XXX) |
**account_number** | **str** | Australian bank account number |
## Example
diff --git a/docs/PolicyEditorV2BetaApi.md b/docs/PolicyEditorV2Api.md
similarity index 79%
rename from docs/PolicyEditorV2BetaApi.md
rename to docs/PolicyEditorV2Api.md
index a902c118..7b530f25 100644
--- a/docs/PolicyEditorV2BetaApi.md
+++ b/docs/PolicyEditorV2Api.md
@@ -1,13 +1,13 @@
-# fireblocks.PolicyEditorV2BetaApi
+# fireblocks.PolicyEditorV2Api
All URIs are relative to *https://api.fireblocks.io/v1*
Method | HTTP request | Description
------------- | ------------- | -------------
-[**get_active_policy**](PolicyEditorV2BetaApi.md#get_active_policy) | **GET** /policy/active_policy | Get the active policy and its validation by policy type
-[**get_draft**](PolicyEditorV2BetaApi.md#get_draft) | **GET** /policy/draft | Get the active draft by policy type
-[**publish_draft**](PolicyEditorV2BetaApi.md#publish_draft) | **POST** /policy/draft | Send publish request for a certain draft id
-[**update_draft**](PolicyEditorV2BetaApi.md#update_draft) | **PUT** /policy/draft | Update the draft with a new set of rules by policy types
+[**get_active_policy**](PolicyEditorV2Api.md#get_active_policy) | **GET** /policy/active_policy | Get the active policy and its validation by policy type
+[**get_draft**](PolicyEditorV2Api.md#get_draft) | **GET** /policy/draft | Get the active draft by policy type
+[**publish_draft**](PolicyEditorV2Api.md#publish_draft) | **POST** /policy/draft | Send publish request for a certain draft id
+[**update_draft**](PolicyEditorV2Api.md#update_draft) | **PUT** /policy/draft | Update the draft with a new set of rules by policy types
# **get_active_policy**
@@ -17,8 +17,6 @@ Get the active policy and its validation by policy type
Returns the active policy and its validation for a specific policy type.
-**Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.
-
Endpoint Permissions: Owner, Admin, Non-Signing Admin.
@@ -52,11 +50,11 @@ with Fireblocks(configuration) as fireblocks:
try:
# Get the active policy and its validation by policy type
- api_response = fireblocks.policy_editor_v2_beta.get_active_policy(policy_type).result()
- print("The response of PolicyEditorV2BetaApi->get_active_policy:\n")
+ api_response = fireblocks.policy_editor_v2.get_active_policy(policy_type).result()
+ print("The response of PolicyEditorV2Api->get_active_policy:\n")
pprint(api_response)
except Exception as e:
- print("Exception when calling PolicyEditorV2BetaApi->get_active_policy: %s\n" % e)
+ print("Exception when calling PolicyEditorV2Api->get_active_policy: %s\n" % e)
```
@@ -95,9 +93,7 @@ No authorization required
Get the active draft by policy type
-Returns the active draft and its validation for a specific policy type.
-**Note:** These endpoints are currently in beta and might be subject to changes.
-
+Returns the active draft and its validation for a specific policy type.
### Example
@@ -129,11 +125,11 @@ with Fireblocks(configuration) as fireblocks:
try:
# Get the active draft by policy type
- api_response = fireblocks.policy_editor_v2_beta.get_draft(policy_type).result()
- print("The response of PolicyEditorV2BetaApi->get_draft:\n")
+ api_response = fireblocks.policy_editor_v2.get_draft(policy_type).result()
+ print("The response of PolicyEditorV2Api->get_draft:\n")
pprint(api_response)
except Exception as e:
- print("Exception when calling PolicyEditorV2BetaApi->get_draft: %s\n" % e)
+ print("Exception when calling PolicyEditorV2Api->get_draft: %s\n" % e)
```
@@ -172,9 +168,13 @@ No authorization required
Send publish request for a certain draft id
-Send publish request of certain draft id and returns the response.
-**Note:** These endpoints are currently in beta and might be subject to changes.
-If you want to participate and learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
+Send publish request of certain draft id and returns the response.
+
+**⚠️ IMPORTANT SECURITY NOTICE:**
+
+The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
+
+If you want to learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
### Example
@@ -208,11 +208,11 @@ with Fireblocks(configuration) as fireblocks:
try:
# Send publish request for a certain draft id
- api_response = fireblocks.policy_editor_v2_beta.publish_draft(publish_draft_request, idempotency_key=idempotency_key).result()
- print("The response of PolicyEditorV2BetaApi->publish_draft:\n")
+ api_response = fireblocks.policy_editor_v2.publish_draft(publish_draft_request, idempotency_key=idempotency_key).result()
+ print("The response of PolicyEditorV2Api->publish_draft:\n")
pprint(api_response)
except Exception as e:
- print("Exception when calling PolicyEditorV2BetaApi->publish_draft: %s\n" % e)
+ print("Exception when calling PolicyEditorV2Api->publish_draft: %s\n" % e)
```
@@ -252,8 +252,11 @@ No authorization required
Update the draft with a new set of rules by policy types
-Update the draft and return its validation for specific policy types.
-**Note:** These endpoints are currently in beta and might be subject to changes.
+Update the draft and return its validation for specific policy types.
+
+**⚠️ IMPORTANT SECURITY NOTICE:**
+
+The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
### Example
@@ -287,11 +290,11 @@ with Fireblocks(configuration) as fireblocks:
try:
# Update the draft with a new set of rules by policy types
- api_response = fireblocks.policy_editor_v2_beta.update_draft(update_draft_request, idempotency_key=idempotency_key).result()
- print("The response of PolicyEditorV2BetaApi->update_draft:\n")
+ api_response = fireblocks.policy_editor_v2.update_draft(update_draft_request, idempotency_key=idempotency_key).result()
+ print("The response of PolicyEditorV2Api->update_draft:\n")
pprint(api_response)
except Exception as e:
- print("Exception when calling PolicyEditorV2BetaApi->update_draft: %s\n" % e)
+ print("Exception when calling PolicyEditorV2Api->update_draft: %s\n" % e)
```
diff --git a/docs/PolicyMetadata.md b/docs/PolicyMetadataEntry.md
similarity index 60%
rename from docs/PolicyMetadata.md
rename to docs/PolicyMetadataEntry.md
index 17c00648..652e8718 100644
--- a/docs/PolicyMetadata.md
+++ b/docs/PolicyMetadataEntry.md
@@ -1,6 +1,6 @@
-# PolicyMetadata
+# PolicyMetadataEntry
-Policy metadata
+Policy metadata entry (per policy type)
## Properties
@@ -10,24 +10,23 @@ Name | Type | Description | Notes
**edited_at** | **str** | The timestamp of the last edit of the policy | [optional]
**published_by** | **str** | The user ID of the user who last published the policy | [optional]
**published_at** | **str** | The timestamp of the last publish of the policy | [optional]
-**policy_type** | [**PolicyType**](PolicyType.md) | |
## Example
```python
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
# TODO update the JSON string below
json = "{}"
-# create an instance of PolicyMetadata from a JSON string
-policy_metadata_instance = PolicyMetadata.from_json(json)
+# create an instance of PolicyMetadataEntry from a JSON string
+policy_metadata_entry_instance = PolicyMetadataEntry.from_json(json)
# print the JSON string representation of the object
-print(PolicyMetadata.to_json())
+print(PolicyMetadataEntry.to_json())
# convert the object into a dict
-policy_metadata_dict = policy_metadata_instance.to_dict()
-# create an instance of PolicyMetadata from a dict
-policy_metadata_from_dict = PolicyMetadata.from_dict(policy_metadata_dict)
+policy_metadata_entry_dict = policy_metadata_entry_instance.to_dict()
+# create an instance of PolicyMetadataEntry from a dict
+policy_metadata_entry_from_dict = PolicyMetadataEntry.from_dict(policy_metadata_entry_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/PolicyResponse.md b/docs/PolicyResponse.md
index 4724e07d..165e0181 100644
--- a/docs/PolicyResponse.md
+++ b/docs/PolicyResponse.md
@@ -7,7 +7,7 @@ Response object for policy operations
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**rules** | [**List[PolicyRule]**](PolicyRule.md) | A set of policy rules |
-**metadata** | [**PolicyMetadata**](PolicyMetadata.md) | |
+**metadata** | [**Dict[str, PolicyMetadataEntry]**](PolicyMetadataEntry.md) | Policy metadata keyed by policy type |
## Example
diff --git a/docs/Position2.md b/docs/Position2.md
index 45b6de56..f6486950 100644
--- a/docs/Position2.md
+++ b/docs/Position2.md
@@ -5,23 +5,24 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**id** | **str** | Position UUID. | [optional]
-**status** | **str** | Lifecycle status of the position. | [optional]
-**in_flight** | **bool** | True while an action is in progress for this position. | [optional]
-**position_type** | **str** | Whether the position is lend- or borrow-side. | [optional]
-**vault_account_id** | **str** | Fireblocks vault account holding the position. | [optional]
-**opportunity_id** | **str** | Opportunity / vault or market identifier. | [optional]
-**chain_id** | **str** | Chain identifier as a string (e.g. \"1\"). | [optional]
-**provider_id** | **str** | Lending protocol. | [optional]
-**origin** | **str** | Whether the position was opened natively in Fireblocks or imported externally. | [optional]
-**principal_asset_id** | **str** | Fireblocks asset id for the principal (underlying) asset. | [optional]
-**position_asset_id** | **str** | Fireblocks asset id for the position / share token. | [optional]
-**principal_balance** | **str** | Human-readable principal balance. | [optional]
-**position_balance** | **str** | Human-readable position token balance. | [optional]
-**created_at** | **str** | Creation time (ISO-8601). | [optional]
-**updated_at** | **str** | Last update time (ISO-8601). | [optional]
+**id** | **str** | Position UUID. |
+**status** | **str** | Lifecycle status of the position. |
+**in_flight** | **bool** | True while an action is in progress for this position. |
+**position_type** | **str** | Whether the position is lend- or borrow-side. |
+**vault_account_id** | **str** | Fireblocks vault account holding the position. |
+**opportunity_id** | **str** | Opportunity / vault or market identifier. |
+**chain_id** | **str** | Chain identifier as a string (e.g. \"1\"). |
+**provider_id** | **str** | Lending protocol. |
+**origin** | **str** | Whether the position was opened natively in Fireblocks or imported externally. |
+**principal_asset_id** | **str** | Fireblocks asset id for the principal (underlying) asset. |
+**position_asset_id** | **str** | Fireblocks asset id for the position / share token. |
+**principal_balance** | **str** | Human-readable principal balance. |
+**position_balance** | **str** | Human-readable position token balance. |
+**created_at** | **str** | Creation time (ISO-8601). |
+**updated_at** | **str** | Last update time (ISO-8601). |
**last_synced_at** | **str** | Last successful on-chain sync time (ISO-8601). | [optional]
-**available_actions** | **List[str]** | Actions the API allows next for this position. | [optional]
+**available_actions** | **List[str]** | Actions the API allows next for this position. |
+**var_yield** | **str** | Accrued yield in principal token units (decimal string). Only present for Morpho positions. | [optional]
## Example
diff --git a/docs/PublishResult.md b/docs/PublishResult.md
index 38a79853..4c17b287 100644
--- a/docs/PublishResult.md
+++ b/docs/PublishResult.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**status** | [**PolicyStatus**](PolicyStatus.md) | |
**rules** | [**List[PolicyRule]**](PolicyRule.md) | |
**check_result** | [**PolicyCheckResult**](PolicyCheckResult.md) | |
-**metadata** | [**PolicyMetadata**](PolicyMetadata.md) | |
+**metadata** | [**Dict[str, PolicyMetadataEntry]**](PolicyMetadataEntry.md) | Policy metadata keyed by policy type |
## Example
diff --git a/docs/ReportConflictResponse.md b/docs/ReportConflictResponse.md
new file mode 100644
index 00000000..44fb2944
--- /dev/null
+++ b/docs/ReportConflictResponse.md
@@ -0,0 +1,32 @@
+# ReportConflictResponse
+
+Returned when a report with the same type and filters is already being processed for your workspace
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**error_code** | **int** | Fireblocks error code for this conflict |
+**name** | **str** | Error name |
+**id** | **str** | The ID of the report currently being processed. Use this ID to poll for status. |
+
+## Example
+
+```python
+from fireblocks.models.report_conflict_response import ReportConflictResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ReportConflictResponse from a JSON string
+report_conflict_response_instance = ReportConflictResponse.from_json(json)
+# print the JSON string representation of the object
+print(ReportConflictResponse.to_json())
+
+# convert the object into a dict
+report_conflict_response_dict = report_conflict_response_instance.to_dict()
+# create an instance of ReportConflictResponse from a dict
+report_conflict_response_from_dict = ReportConflictResponse.from_dict(report_conflict_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/ReportJob.md b/docs/ReportJob.md
new file mode 100644
index 00000000..13cbdb5d
--- /dev/null
+++ b/docs/ReportJob.md
@@ -0,0 +1,40 @@
+# ReportJob
+
+A report job. Optional fields are status-dependent: `completedAt`, `rowCount`, and `fileSizeBytes` are present only when `status` is `COMPLETED`; `failedAt` is present only when `status` is `FAILED`.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | Unique identifier of the report job |
+**status** | [**ReportStatus**](ReportStatus.md) | |
+**report_type** | [**ReportType**](ReportType.md) | |
+**output_format** | [**ReportOutputFormat**](ReportOutputFormat.md) | |
+**compress** | **bool** | Whether the output file is gzip-compressed |
+**requested_by_user_id** | **str** | ID of the user who requested the report |
+**created_at** | **int** | Epoch milliseconds (UTC) when the job was created |
+**completed_at** | **int** | Epoch milliseconds (UTC) when the report completed. Only present when `status` is `COMPLETED`. | [optional]
+**failed_at** | **int** | Epoch milliseconds (UTC) when the report failed. Only present when `status` is `FAILED`. | [optional]
+**row_count** | **int** | Number of rows in the report file. Only present when `status` is `COMPLETED`. | [optional]
+**file_size_bytes** | **int** | Size of the report file in bytes (includes compression when `compress` is `true`). Only present when `status` is `COMPLETED`. | [optional]
+
+## Example
+
+```python
+from fireblocks.models.report_job import ReportJob
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ReportJob from a JSON string
+report_job_instance = ReportJob.from_json(json)
+# print the JSON string representation of the object
+print(ReportJob.to_json())
+
+# convert the object into a dict
+report_job_dict = report_job_instance.to_dict()
+# create an instance of ReportJob from a dict
+report_job_from_dict = ReportJob.from_dict(report_job_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/ReportJobLinks.md b/docs/ReportJobLinks.md
new file mode 100644
index 00000000..26e4e51b
--- /dev/null
+++ b/docs/ReportJobLinks.md
@@ -0,0 +1,31 @@
+# ReportJobLinks
+
+Download URL for the report. Present only when `status` is `COMPLETED`, and only on `GET /v1/reports/{reportId}` — not included in list responses.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**download_url** | **str** | URL to download the report file. A new URL is generated on each request to `GET /v1/reports/{reportId}` while `status` is `COMPLETED`. Re-poll to obtain a fresh URL after the previous one expires (approximately 1 hour). |
+**download_url_expires_at** | **int** | Epoch milliseconds (UTC) when the download URL expires |
+
+## Example
+
+```python
+from fireblocks.models.report_job_links import ReportJobLinks
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ReportJobLinks from a JSON string
+report_job_links_instance = ReportJobLinks.from_json(json)
+# print the JSON string representation of the object
+print(ReportJobLinks.to_json())
+
+# convert the object into a dict
+report_job_links_dict = report_job_links_instance.to_dict()
+# create an instance of ReportJobLinks from a dict
+report_job_links_from_dict = ReportJobLinks.from_dict(report_job_links_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/ReportJobResponse.md b/docs/ReportJobResponse.md
new file mode 100644
index 00000000..b78b9257
--- /dev/null
+++ b/docs/ReportJobResponse.md
@@ -0,0 +1,41 @@
+# ReportJobResponse
+
+A report job. Optional fields are status-dependent: `completedAt`, `rowCount`, `fileSizeBytes`, and `links` are present only when `status` is `COMPLETED`; `failedAt` is present only when `status` is `FAILED`.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | Unique identifier of the report job |
+**status** | [**ReportStatus**](ReportStatus.md) | |
+**report_type** | [**ReportType**](ReportType.md) | |
+**output_format** | [**ReportOutputFormat**](ReportOutputFormat.md) | |
+**compress** | **bool** | Whether the output file is gzip-compressed |
+**requested_by_user_id** | **str** | ID of the user who requested the report |
+**created_at** | **int** | Epoch milliseconds (UTC) when the job was created |
+**completed_at** | **int** | Epoch milliseconds (UTC) when the report completed. Only present when `status` is `COMPLETED`. | [optional]
+**failed_at** | **int** | Epoch milliseconds (UTC) when the report failed. Only present when `status` is `FAILED`. | [optional]
+**row_count** | **int** | Number of rows in the report file. Only present when `status` is `COMPLETED`. | [optional]
+**file_size_bytes** | **int** | Size of the report file in bytes (includes compression when `compress` is `true`). Only present when `status` is `COMPLETED`. | [optional]
+**links** | [**ReportJobLinks**](ReportJobLinks.md) | | [optional]
+
+## Example
+
+```python
+from fireblocks.models.report_job_response import ReportJobResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ReportJobResponse from a JSON string
+report_job_response_instance = ReportJobResponse.from_json(json)
+# print the JSON string representation of the object
+print(ReportJobResponse.to_json())
+
+# convert the object into a dict
+report_job_response_dict = report_job_response_instance.to_dict()
+# create an instance of ReportJobResponse from a dict
+report_job_response_from_dict = ReportJobResponse.from_dict(report_job_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/ReportListResponse.md b/docs/ReportListResponse.md
new file mode 100644
index 00000000..1f8d11b9
--- /dev/null
+++ b/docs/ReportListResponse.md
@@ -0,0 +1,32 @@
+# ReportListResponse
+
+Paginated list of report jobs. Download URLs are not included in list items — call `GET /v1/reports/{reportId}` to retrieve the download URL for a specific completed report.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**List[ReportJob]**](ReportJob.md) | Page of report jobs |
+**next** | **str** | Opaque cursor for the next page. Null on the last page. |
+**prev** | **str** | Opaque cursor for the previous page. Null on the first page. |
+
+## Example
+
+```python
+from fireblocks.models.report_list_response import ReportListResponse
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of ReportListResponse from a JSON string
+report_list_response_instance = ReportListResponse.from_json(json)
+# print the JSON string representation of the object
+print(ReportListResponse.to_json())
+
+# convert the object into a dict
+report_list_response_dict = report_list_response_instance.to_dict()
+# create an instance of ReportListResponse from a dict
+report_list_response_from_dict = ReportListResponse.from_dict(report_list_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/ReportOutputFormat.md b/docs/ReportOutputFormat.md
new file mode 100644
index 00000000..3470813c
--- /dev/null
+++ b/docs/ReportOutputFormat.md
@@ -0,0 +1,11 @@
+# ReportOutputFormat
+
+The output file format of the report
+
+## Enum
+
+* `CSV` (value: `'CSV'`)
+
+[[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/ReportStatus.md b/docs/ReportStatus.md
new file mode 100644
index 00000000..16c1dac0
--- /dev/null
+++ b/docs/ReportStatus.md
@@ -0,0 +1,17 @@
+# ReportStatus
+
+The current lifecycle state of a report job
+
+## Enum
+
+* `QUEUED` (value: `'QUEUED'`)
+
+* `PROCESSING` (value: `'PROCESSING'`)
+
+* `COMPLETED` (value: `'COMPLETED'`)
+
+* `FAILED` (value: `'FAILED'`)
+
+[[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/ReportType.md b/docs/ReportType.md
new file mode 100644
index 00000000..918e001b
--- /dev/null
+++ b/docs/ReportType.md
@@ -0,0 +1,11 @@
+# ReportType
+
+The type of report to generate
+
+## Enum
+
+* `ADDRESSES` (value: `'ADDRESSES'`)
+
+[[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/ReportsBetaApi.md b/docs/ReportsBetaApi.md
new file mode 100644
index 00000000..fb6ba866
--- /dev/null
+++ b/docs/ReportsBetaApi.md
@@ -0,0 +1,274 @@
+# fireblocks.ReportsBetaApi
+
+All URIs are relative to *https://api.fireblocks.io/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**create_report**](ReportsBetaApi.md#create_report) | **POST** /reports | Create a report
+[**get_report**](ReportsBetaApi.md#get_report) | **GET** /reports/{reportId} | Get report status
+[**list_reports**](ReportsBetaApi.md#list_reports) | **GET** /reports | List reports
+
+
+# **create_report**
+> CreateReportResponse create_report(create_report_request, idempotency_key=idempotency_key)
+
+Create a report
+
+Creates a new asynchronous report job and returns a receipt containing the report ID.
+Poll `GET /v1/reports/{reportId}` to check status. When `status` is `COMPLETED`, the poll
+response includes a fresh pre-signed download URL in `links.downloadUrl`.
+
+**Note:** These endpoints are currently in beta and might be subject to changes.
+
+Endpoint Permission: Viewer and above.
+
+
+### Example
+
+
+```python
+from fireblocks.models.create_report_request import CreateReportRequest
+from fireblocks.models.create_report_response import CreateReportResponse
+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:
+ create_report_request = fireblocks.CreateReportRequest() # CreateReportRequest |
+ 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:
+ # Create a report
+ api_response = fireblocks.reports_beta.create_report(create_report_request, idempotency_key=idempotency_key).result()
+ print("The response of ReportsBetaApi->create_report:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ReportsBetaApi->create_report: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **create_report_request** | [**CreateReportRequest**](CreateReportRequest.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
+
+[**CreateReportResponse**](CreateReportResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**202** | Report job accepted and queued for processing | * X-Request-ID -
|
+**409** | A report with the same type and filters is already being processed | * 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_report**
+> ReportJobResponse get_report(report_id)
+
+Get report status
+
+Returns the current status of a report job. Check the `status` field to determine the outcome.
+
+When `status` is `COMPLETED`, the response includes a fresh pre-signed download URL in
+`links.downloadUrl` (TTL ~1 hour). Re-poll this endpoint to obtain a new URL after expiry.
+
+When `status` is `FAILED`, the `failedAt` timestamp indicates when the failure occurred.
+
+**Note:** These endpoints are currently in beta and might be subject to changes.
+
+Endpoint Permission: Viewer and above.
+
+
+### Example
+
+
+```python
+from fireblocks.models.report_job_response import ReportJobResponse
+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:
+ report_id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11' # str | The unique identifier of the report job
+
+ try:
+ # Get report status
+ api_response = fireblocks.reports_beta.get_report(report_id).result()
+ print("The response of ReportsBetaApi->get_report:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ReportsBetaApi->get_report: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **report_id** | **str**| The unique identifier of the report job |
+
+### Return type
+
+[**ReportJobResponse**](ReportJobResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Report job details | * 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_reports**
+> ReportListResponse list_reports(page_cursor=page_cursor, page_size=page_size, sort_by=sort_by, order=order, status=status, report_type=report_type)
+
+List reports
+
+Returns a paginated list of report jobs scoped to the calling tenant.
+
+**Note:** Download URLs are not included in list responses. Call `GET /v1/reports/{reportId}` to
+obtain a fresh signed download URL for a specific completed report.
+
+**Note:** These endpoints are currently in beta and might be subject to changes.
+
+Endpoint Permission: Viewer and above.
+
+
+### Example
+
+
+```python
+from fireblocks.models.report_list_response import ReportListResponse
+from fireblocks.models.report_status import ReportStatus
+from fireblocks.models.report_type import ReportType
+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_cursor = 'page_cursor_example' # str | Opaque cursor returned from a previous list call (optional)
+ page_size = 20 # int | Maximum number of items per page (optional) (default to 20)
+ sort_by = createdAt # str | Field to sort by (optional) (default to createdAt)
+ order = DESC # str | Sort direction (optional) (default to DESC)
+ status = [fireblocks.ReportStatus()] # List[ReportStatus] | Filter by lifecycle status. Repeat the parameter to filter on multiple statuses (e.g., ?status=QUEUED&status=PROCESSING). (optional)
+ report_type = [fireblocks.ReportType()] # List[ReportType] | Filter by report type. Repeat the parameter to filter on multiple types. (optional)
+
+ try:
+ # List reports
+ api_response = fireblocks.reports_beta.list_reports(page_cursor=page_cursor, page_size=page_size, sort_by=sort_by, order=order, status=status, report_type=report_type).result()
+ print("The response of ReportsBetaApi->list_reports:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling ReportsBetaApi->list_reports: %s\n" % e)
+```
+
+
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **page_cursor** | **str**| Opaque cursor returned from a previous list call | [optional]
+ **page_size** | **int**| Maximum number of items per page | [optional] [default to 20]
+ **sort_by** | **str**| Field to sort by | [optional] [default to createdAt]
+ **order** | **str**| Sort direction | [optional] [default to DESC]
+ **status** | [**List[ReportStatus]**](ReportStatus.md)| Filter by lifecycle status. Repeat the parameter to filter on multiple statuses (e.g., ?status=QUEUED&status=PROCESSING). | [optional]
+ **report_type** | [**List[ReportType]**](ReportType.md)| Filter by report type. Repeat the parameter to filter on multiple types. | [optional]
+
+### Return type
+
+[**ReportListResponse**](ReportListResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Paginated list of report jobs | * 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/SepaPaymentInfo.md b/docs/SepaPaymentInfo.md
index 7761348a..498fc9c9 100644
--- a/docs/SepaPaymentInfo.md
+++ b/docs/SepaPaymentInfo.md
@@ -11,6 +11,8 @@ Name | Type | Description | Notes
**account_holder_given_name** | **str** | The given name (first name) of the account holder |
**account_holder_surname** | **str** | The surname (last name) of the account holder |
**account_holder_country** | **str** | The country where the account holder resides (ISO 3166-1 alpha-2 code) | [optional]
+**account_holder_postal_code** | **str** | The postal code of the account holder's address | [optional]
+**account_holder_city** | **str** | The city where the account holder resides | [optional]
**account_holder_address** | **str** | The address of the account holder | [optional]
**iban** | **str** | The International Bank Account Number (IBAN) |
**country** | **str** | The country for the transfer (ISO 3166-1 alpha-2 code) |
diff --git a/docs/SolanaBlockchainData.md b/docs/SolanaBlockchainData.md
index e95969f8..191214c9 100644
--- a/docs/SolanaBlockchainData.md
+++ b/docs/SolanaBlockchainData.md
@@ -8,6 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**stake_account_address** | **str** | The stake account address matching the stakeAccountId. |
**stake_account_derivation_change_value** | **float** | The value of the change level in the BIP32 path which was used to derive the stake account address. |
+**rewards_breakdown** | [**SolanaRewardsBreakdown**](SolanaRewardsBreakdown.md) | | [optional]
## Example
diff --git a/docs/SolanaRewardsBreakdown.md b/docs/SolanaRewardsBreakdown.md
new file mode 100644
index 00000000..3dd2dfaa
--- /dev/null
+++ b/docs/SolanaRewardsBreakdown.md
@@ -0,0 +1,32 @@
+# SolanaRewardsBreakdown
+
+A breakdown of the staking rewards earned by the position.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**issuance** | **str** | The issuance reward amount earned by the position, measured in the staked asset unit. |
+**mev** | **str** | The MEV reward amount earned by the position, measured in the staked asset unit. |
+**last_reward_synced_at** | **datetime** | The last time the rewards were synced (ISO Date). |
+
+## Example
+
+```python
+from fireblocks.models.solana_rewards_breakdown import SolanaRewardsBreakdown
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of SolanaRewardsBreakdown from a JSON string
+solana_rewards_breakdown_instance = SolanaRewardsBreakdown.from_json(json)
+# print the JSON string representation of the object
+print(SolanaRewardsBreakdown.to_json())
+
+# convert the object into a dict
+solana_rewards_breakdown_dict = solana_rewards_breakdown_instance.to_dict()
+# create an instance of SolanaRewardsBreakdown from a dict
+solana_rewards_breakdown_from_dict = SolanaRewardsBreakdown.from_dict(solana_rewards_breakdown_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/SourceOfFunds.md b/docs/SourceOfFunds.md
index 57d772c7..e9fc3875 100644
--- a/docs/SourceOfFunds.md
+++ b/docs/SourceOfFunds.md
@@ -1,6 +1,6 @@
# SourceOfFunds
-Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting (e.g. CPN cross-border payments).
+Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required.
## Properties
diff --git a/docs/SourceTransferPeerPathResponse.md b/docs/SourceTransferPeerPathResponse.md
index 714ef1b1..545313d3 100644
--- a/docs/SourceTransferPeerPathResponse.md
+++ b/docs/SourceTransferPeerPathResponse.md
@@ -12,6 +12,7 @@ Name | Type | Description | Notes
**name** | **str** | The name of the peer. | [optional]
**wallet_id** | **str** | | [optional]
**trading_account** | **str** | If this transaction is an exchange internal transfer, this field will be populated with the type of that trading account. | [optional]
+**tags** | [**List[TransactionTag]**](TransactionTag.md) | Tags associated with the transaction's source. | [optional]
## Example
diff --git a/docs/TagsApi.md b/docs/TagsApi.md
index 2ae050f5..3b4a9a54 100644
--- a/docs/TagsApi.md
+++ b/docs/TagsApi.md
@@ -4,7 +4,6 @@ All URIs are relative to *https://api.fireblocks.io/v1*
Method | HTTP request | Description
------------- | ------------- | -------------
-[**cancel_approval_request**](TagsApi.md#cancel_approval_request) | **POST** /tags/approval_requests/{id}/cancel | Cancel an approval request by id
[**create_tag**](TagsApi.md#create_tag) | **POST** /tags | Create a new tag
[**delete_tag**](TagsApi.md#delete_tag) | **DELETE** /tags/{tagId} | Delete a tag
[**get_approval_request**](TagsApi.md#get_approval_request) | **GET** /tags/approval_requests/{id} | Get an approval request by id
@@ -13,81 +12,6 @@ Method | HTTP request | Description
[**update_tag**](TagsApi.md#update_tag) | **PATCH** /tags/{tagId} | Update a tag
-# **cancel_approval_request**
-> cancel_approval_request(id, idempotency_key=idempotency_key)
-
-Cancel an approval request by id
-
-Cancel an approval request by id. Can only cancel requests in PENDING status. Returns 202 Accepted when the cancellation is processed.
-
-### Example
-
-
-```python
-from fireblocks.client import Fireblocks
-from fireblocks.client_configuration import ClientConfiguration
-from fireblocks.exceptions import ApiException
-from fireblocks.base_path import BasePath
-
-# 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:
- id = '12345' # str |
- 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:
- # Cancel an approval request by id
- fireblocks.tags.cancel_approval_request(id, idempotency_key=idempotency_key).result()
- except Exception as e:
- print("Exception when calling TagsApi->cancel_approval_request: %s\n" % e)
-```
-
-
-
-### Parameters
-
-
-Name | Type | Description | Notes
-------------- | ------------- | ------------- | -------------
- **id** | **str**| |
- **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
-
-void (empty response body)
-
-### Authorization
-
-No authorization required
-
-### HTTP request headers
-
- - **Content-Type**: Not defined
- - **Accept**: application/json
-
-### HTTP response details
-
-| Status code | Description | Response headers |
-|-------------|-------------|------------------|
-**202** | Approval request cancellation processed | * X-Request-ID -
|
-**401** | Unauthorized | * X-Request-ID -
|
-**404** | Approval request not found | * X-Request-ID -
|
-**409** | Invalid approval request state - cannot cancel request that is not in PENDING status | * 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)
-
# **create_tag**
> Tag create_tag(create_tag_request, idempotency_key=idempotency_key)
diff --git a/docs/TransactionTag.md b/docs/TransactionTag.md
new file mode 100644
index 00000000..e790658b
--- /dev/null
+++ b/docs/TransactionTag.md
@@ -0,0 +1,30 @@
+# TransactionTag
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **str** | The unique identifier of the tag |
+**label** | **str** | The tag label |
+
+## Example
+
+```python
+from fireblocks.models.transaction_tag import TransactionTag
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of TransactionTag from a JSON string
+transaction_tag_instance = TransactionTag.from_json(json)
+# print the JSON string representation of the object
+print(TransactionTag.to_json())
+
+# convert the object into a dict
+transaction_tag_dict = transaction_tag_instance.to_dict()
+# create an instance of TransactionTag from a dict
+transaction_tag_from_dict = TransactionTag.from_dict(transaction_tag_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/UtxoIdentifier.md b/docs/UtxoIdentifier.md
index ee0fa817..0147d001 100644
--- a/docs/UtxoIdentifier.md
+++ b/docs/UtxoIdentifier.md
@@ -1,6 +1,6 @@
# UtxoIdentifier
-Identifies a UTXO by either a Fireblocks transaction ID (targets all outputs of that transaction) or a specific on-chain UTXO (txHash + vout). Exactly one of these two forms must be provided.
+Identifies a UTXO by either a Fireblocks transaction ID (targets all outputs of that transaction) or a specific on-chain UTXO (txHash + index). Exactly one of these two forms must be provided.
## Properties
@@ -8,7 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**tx_id** | **str** | Fireblocks transaction ID | [optional]
**tx_hash** | **str** | On-chain transaction hash | [optional]
-**vout** | **int** | Output index | [optional]
+**index** | **int** | Output index (vout) | [optional]
## Example
diff --git a/docs/UtxoInput.md b/docs/UtxoInput.md
index a515a014..85967b36 100644
--- a/docs/UtxoInput.md
+++ b/docs/UtxoInput.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**tx_hash** | **str** | |
-**vout** | **int** | |
+**index** | **int** | The output index (vout) |
## Example
diff --git a/docs/UtxoInputSelection.md b/docs/UtxoInputSelection.md
index 65cd0ae6..93201561 100644
--- a/docs/UtxoInputSelection.md
+++ b/docs/UtxoInputSelection.md
@@ -6,7 +6,7 @@ Explicitly control which UTXOs to include or exclude. This feature is currently
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**inputs_to_spend** | [**List[UtxoInput]**](UtxoInput.md) | Force-include specific UTXOs by txHash and vout. | [optional]
+**inputs_to_spend** | [**List[UtxoInput]**](UtxoInput.md) | Force-include specific UTXOs by txHash and index. | [optional]
**inputs_to_exclude** | [**List[UtxoInput]**](UtxoInput.md) | Exclude specific UTXOs from selection. | [optional]
**fill_fee_for_selected_inputs** | **bool** | When true and inputsToSpend is provided, automatically add more UTXOs to cover the transaction fee. Requires inputsToSpend. | [optional]
diff --git a/fireblocks/__init__.py b/fireblocks/__init__.py
index aab1be1f..85c90f12 100644
--- a/fireblocks/__init__.py
+++ b/fireblocks/__init__.py
@@ -15,7 +15,7 @@
""" # noqa: E501
-__version__ = "21.0.0"
+__version__ = "0.0.0"
# import apis into sdk package
from fireblocks.api.api_user_api import ApiUserApi
@@ -48,8 +48,9 @@
from fireblocks.api.off_exchanges_api import OffExchangesApi
from fireblocks.api.onchain_data_api import OnchainDataApi
from fireblocks.api.payments_payout_api import PaymentsPayoutApi
-from fireblocks.api.policy_editor_v2_beta_api import PolicyEditorV2BetaApi
+from fireblocks.api.policy_editor_v2_api import PolicyEditorV2Api
from fireblocks.api.policy_editor_beta_api import PolicyEditorBetaApi
+from fireblocks.api.reports_beta_api import ReportsBetaApi
from fireblocks.api.reset_device_api import ResetDeviceApi
from fireblocks.api.smart_transfer_api import SmartTransferApi
from fireblocks.api.staking_api import StakingApi
@@ -177,9 +178,11 @@
from fireblocks.models.address_reverse_lookup_response import (
AddressReverseLookupResponse,
)
+from fireblocks.models.addresses_filters import AddressesFilters
from fireblocks.models.alert_exposure_type_enum import AlertExposureTypeEnum
from fireblocks.models.alert_level_enum import AlertLevelEnum
from fireblocks.models.allowlist_entry import AllowlistEntry
+from fireblocks.models.allowlist_entry_response import AllowlistEntryResponse
from fireblocks.models.allowlist_entry_status import AllowlistEntryStatus
from fireblocks.models.allowlist_metadata import AllowlistMetadata
from fireblocks.models.allowlist_response import AllowlistResponse
@@ -444,10 +447,19 @@
from fireblocks.models.create_api_user import CreateAPIUser
from fireblocks.models.create_address_request import CreateAddressRequest
from fireblocks.models.create_address_response import CreateAddressResponse
+from fireblocks.models.create_addresses_report_request import (
+ CreateAddressesReportRequest,
+)
from fireblocks.models.create_assets_request import CreateAssetsRequest
from fireblocks.models.create_config_operation_request import (
CreateConfigOperationRequest,
)
+from fireblocks.models.create_connected_account_request import (
+ CreateConnectedAccountRequest,
+)
+from fireblocks.models.create_connected_account_response import (
+ CreateConnectedAccountResponse,
+)
from fireblocks.models.create_connection_request import CreateConnectionRequest
from fireblocks.models.create_connection_response import CreateConnectionResponse
from fireblocks.models.create_console_user import CreateConsoleUser
@@ -494,6 +506,8 @@
from fireblocks.models.create_payout_request import CreatePayoutRequest
from fireblocks.models.create_quote import CreateQuote
from fireblocks.models.create_quote_scope_inner import CreateQuoteScopeInner
+from fireblocks.models.create_report_request import CreateReportRequest
+from fireblocks.models.create_report_response import CreateReportResponse
from fireblocks.models.create_signing_key_dto import CreateSigningKeyDto
from fireblocks.models.create_signing_key_dto_proof_of_ownership import (
CreateSigningKeyDtoProofOfOwnership,
@@ -522,6 +536,7 @@
from fireblocks.models.create_workflow_execution_request_params_inner import (
CreateWorkflowExecutionRequestParamsInner,
)
+from fireblocks.models.created_connected_account_item import CreatedConnectedAccountItem
from fireblocks.models.custom_routing_dest import CustomRoutingDest
from fireblocks.models.d_app_address_config import DAppAddressConfig
from fireblocks.models.dvp_settlement import DVPSettlement
@@ -825,6 +840,9 @@
from fireblocks.models.internal_transfer_destination import InternalTransferDestination
from fireblocks.models.internal_transfer_response import InternalTransferResponse
from fireblocks.models.invalid_paramater_value_error import InvalidParamaterValueError
+from fireblocks.models.issue_api_user_pairing_token_response import (
+ IssueApiUserPairingTokenResponse,
+)
from fireblocks.models.job_created import JobCreated
from fireblocks.models.layer_zero_adapter_create_params import (
LayerZeroAdapterCreateParams,
@@ -1013,9 +1031,6 @@
from fireblocks.models.participants_identification_policy import (
ParticipantsIdentificationPolicy,
)
-from fireblocks.models.participants_identification_supported_endpoint import (
- ParticipantsIdentificationSupportedEndpoint,
-)
from fireblocks.models.payee_account import PayeeAccount
from fireblocks.models.payee_account_response import PayeeAccountResponse
from fireblocks.models.payee_account_type import PayeeAccountType
@@ -1055,7 +1070,7 @@
from fireblocks.models.policy_and_validation_response import PolicyAndValidationResponse
from fireblocks.models.policy_check_result import PolicyCheckResult
from fireblocks.models.policy_currency import PolicyCurrency
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
from fireblocks.models.policy_operator import PolicyOperator
from fireblocks.models.policy_response import PolicyResponse
from fireblocks.models.policy_rule import PolicyRule
@@ -1144,6 +1159,14 @@
)
from fireblocks.models.rename_cosigner import RenameCosigner
from fireblocks.models.rename_vault_account_response import RenameVaultAccountResponse
+from fireblocks.models.report_conflict_response import ReportConflictResponse
+from fireblocks.models.report_job import ReportJob
+from fireblocks.models.report_job_links import ReportJobLinks
+from fireblocks.models.report_job_response import ReportJobResponse
+from fireblocks.models.report_list_response import ReportListResponse
+from fireblocks.models.report_output_format import ReportOutputFormat
+from fireblocks.models.report_status import ReportStatus
+from fireblocks.models.report_type import ReportType
from fireblocks.models.resend_by_query_request import ResendByQueryRequest
from fireblocks.models.resend_by_query_response import ResendByQueryResponse
from fireblocks.models.resend_failed_notifications_job_status_response import (
@@ -1339,6 +1362,7 @@
from fireblocks.models.solana_config import SolanaConfig
from fireblocks.models.solana_instruction import SolanaInstruction
from fireblocks.models.solana_instruction_with_value import SolanaInstructionWithValue
+from fireblocks.models.solana_rewards_breakdown import SolanaRewardsBreakdown
from fireblocks.models.solana_simple_create_params import SolanaSimpleCreateParams
from fireblocks.models.source_config import SourceConfig
from fireblocks.models.source_of_funds import SourceOfFunds
@@ -1599,6 +1623,7 @@
from fireblocks.models.transaction_response_destination import (
TransactionResponseDestination,
)
+from fireblocks.models.transaction_tag import TransactionTag
from fireblocks.models.transfer_config_operation import TransferConfigOperation
from fireblocks.models.transfer_operation_config_params import (
TransferOperationConfigParams,
diff --git a/fireblocks/api/__init__.py b/fireblocks/api/__init__.py
index 812fcf74..fb2b9aef 100644
--- a/fireblocks/api/__init__.py
+++ b/fireblocks/api/__init__.py
@@ -29,8 +29,9 @@
from fireblocks.api.off_exchanges_api import OffExchangesApi
from fireblocks.api.onchain_data_api import OnchainDataApi
from fireblocks.api.payments_payout_api import PaymentsPayoutApi
-from fireblocks.api.policy_editor_v2_beta_api import PolicyEditorV2BetaApi
+from fireblocks.api.policy_editor_v2_api import PolicyEditorV2Api
from fireblocks.api.policy_editor_beta_api import PolicyEditorBetaApi
+from fireblocks.api.reports_beta_api import ReportsBetaApi
from fireblocks.api.reset_device_api import ResetDeviceApi
from fireblocks.api.smart_transfer_api import SmartTransferApi
from fireblocks.api.staking_api import StakingApi
diff --git a/fireblocks/api/api_user_api.py b/fireblocks/api/api_user_api.py
index c1dd01c1..0d0ede86 100644
--- a/fireblocks/api/api_user_api.py
+++ b/fireblocks/api/api_user_api.py
@@ -23,6 +23,7 @@
from typing_extensions import Annotated
from fireblocks.models.create_api_user import CreateAPIUser
from fireblocks.models.get_api_users_response import GetAPIUsersResponse
+from fireblocks.models.issue_api_user_pairing_token_response import IssueApiUserPairingTokenResponse
from fireblocks.api_client import ApiClient, RequestSerialized
from fireblocks.api_response import ApiResponse
@@ -317,3 +318,144 @@ def _get_api_users_serialize(
)
+
+
+ @validate_call
+ def issue_api_user_pairing_token(
+ self,
+ user_id: Annotated[StrictStr, Field(description="The ID of the api user")],
+ 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[IssueApiUserPairingTokenResponse]]:
+ """Issue API user pairing token
+
+ Issues a device pairing token for the given user and returns the user's info along with the token. - The API user must be in PENDING_ACTIVATION status. If the user is already set up (enabled), the request is rejected with a 409 Conflict. - Please note that this endpoint is available only for API keys with Owner/Admin/Non Signing Admin permissions. Endpoint Permission: Owner, Admin, Non-Signing Admin.
+
+ :param user_id: The ID of the api user (required)
+ :type user_id: str
+ :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="issue_api_user_pairing_token", param_name="user_id", param_value=user_id)
+
+ _param = self._issue_api_user_pairing_token_serialize(
+ user_id=user_id,
+ 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': "IssueApiUserPairingTokenResponse",
+ '401': "ErrorSchema",
+ '403': "ErrorSchema",
+ '404': "ErrorSchema",
+ '409': "ErrorSchema",
+ '5XX': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _issue_api_user_pairing_token_serialize(
+ self,
+ user_id,
+ 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 user_id is not None:
+ _path_params['userId'] = user_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
+
+
+ # 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='POST',
+ resource_path='/management/api_users/{userId}/pairing_token',
+ 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
+ )
+
+
diff --git a/fireblocks/api/compliance_api.py b/fireblocks/api/compliance_api.py
index b45821fa..efe4f3b9 100644
--- a/fireblocks/api/compliance_api.py
+++ b/fireblocks/api/compliance_api.py
@@ -1175,6 +1175,137 @@ def _delete_counterparty_group_serialize(
+ @validate_call
+ def delete_legal_entity(
+ self,
+ legal_entity_id: Annotated[StrictStr, Field(description="The unique ID of the legal entity registration to delete")],
+ _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[None]]:
+ """Delete a legal entity
+
+ Delete a legal entity will change the status of a legal entity registration to REVOKED. Endpoint Permission: Admin, Non-Signing Admin.
+
+ :param legal_entity_id: The unique ID of the legal entity registration to delete (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="delete_legal_entity", param_name="legal_entity_id", param_value=legal_entity_id)
+
+ _param = self._delete_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]] = {
+ '204': None,
+ '400': "ErrorSchema",
+ '404': "ErrorSchema",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _delete_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='DELETE',
+ 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_address_registry_tenant_participation_status(
self,
@@ -2200,7 +2331,7 @@ def get_legal_entity_for_address(
) -> Future[ApiResponse[AddressRegistryLegalEntity]]:
"""Look up legal entity by blockchain address
- Returns legal entity information for the given blockchain address (verification status, LEI, Travel Rule providers, contact email, and related fields — see response schema). URL-encode `{address}` when required.
+ Returns legal entity information for the given blockchain address (LEI data availability, LEI identifier, Travel Rule providers, contact email, and related fields — see response schema). URL-encode `{address}` when required.
:param address: Blockchain address to look up (required)
:type address: str
diff --git a/fireblocks/api/connected_accounts_beta_api.py b/fireblocks/api/connected_accounts_beta_api.py
index c76f7948..05dfbcb8 100644
--- a/fireblocks/api/connected_accounts_beta_api.py
+++ b/fireblocks/api/connected_accounts_beta_api.py
@@ -21,7 +21,7 @@
from pydantic import Field, StrictBool, StrictStr, field_validator
from typing import Optional
from typing_extensions import Annotated
-from fireblocks.models.allowlist_entry import AllowlistEntry
+from fireblocks.models.allowlist_entry_response import AllowlistEntryResponse
from fireblocks.models.allowlist_entry_status import AllowlistEntryStatus
from fireblocks.models.allowlist_response import AllowlistResponse
from fireblocks.models.connected_account_balances_response import ConnectedAccountBalancesResponse
@@ -29,6 +29,8 @@
from fireblocks.models.connected_account_trading_pairs_response import ConnectedAccountTradingPairsResponse
from fireblocks.models.connected_accounts_response import ConnectedAccountsResponse
from fireblocks.models.connected_single_account_response import ConnectedSingleAccountResponse
+from fireblocks.models.create_connected_account_request import CreateConnectedAccountRequest
+from fireblocks.models.create_connected_account_response import CreateConnectedAccountResponse
from fireblocks.models.rename_connected_account_request import RenameConnectedAccountRequest
from fireblocks.models.rename_connected_account_response import RenameConnectedAccountResponse
@@ -51,6 +53,159 @@ def __init__(self, api_client=None) -> None:
self.api_client = api_client
+ @validate_call
+ def create_connected_account(
+ self,
+ create_connected_account_request: CreateConnectedAccountRequest,
+ 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[CreateConnectedAccountResponse]]:
+ """Create a connected account
+
+ Creates a new connected account for the authenticated tenant. The `creds` field must be a Base64-encoded RSA-encrypted credential blob. Use `GET /exchange_accounts/credentials_public_key` to retrieve the public key for encryption. The `providerType` is derived server-side from the `providerId` — callers do not supply it. Endpoint Permission: Editor, Admin, Non-Signing Admin. **Note:** This endpoint is currently in beta and might be subject to changes.
+
+ :param create_connected_account_request: (required)
+ :type create_connected_account_request: CreateConnectedAccountRequest
+ :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._create_connected_account_serialize(
+ create_connected_account_request=create_connected_account_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': "CreateConnectedAccountResponse",
+ '400': "ConnectedAccountErrorResponse",
+ '401': "ConnectedAccountErrorResponse",
+ '403': "ConnectedAccountErrorResponse",
+ '404': "ConnectedAccountErrorResponse",
+ '422': "ConnectedAccountErrorResponse",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _create_connected_account_serialize(
+ self,
+ create_connected_account_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 create_connected_account_request is not None:
+ _body_params = create_connected_account_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='/connected_accounts',
+ 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 disconnect_connected_account(
self,
@@ -336,7 +491,7 @@ def get_connected_account_allowlist(
) -> Future[ApiResponse[AllowlistResponse]]:
"""Get allowlist for connected account
- Retrieves the address allowlist for a specified connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange accounts only.
+ Retrieves the address allowlist for a specified connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
:param account_id: The connected account identifier (required)
:type account_id: str
@@ -528,10 +683,10 @@ def get_connected_account_allowlist_entry(
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
- ) -> Future[ApiResponse[AllowlistEntry]]:
+ ) -> Future[ApiResponse[AllowlistEntryResponse]]:
"""Get a single allowlist entry for a connected account
- Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange accounts only.
+ Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
:param account_id: The connected account identifier (required)
:type account_id: str
@@ -572,7 +727,7 @@ def get_connected_account_allowlist_entry(
)
_response_types_map: Dict[str, Optional[str]] = {
- '200': "AllowlistEntry",
+ '200': "AllowlistEntryResponse",
'404': "ConnectedAccountErrorResponse",
'default': "ErrorSchema",
}
@@ -1421,7 +1576,7 @@ def sync_connected_account_allowlist(
) -> Future[ApiResponse[None]]:
"""Sync allowlist for connected account
- Triggers an on-demand sync from the exchange, bypassing the cache and fetching live data immediately. **Rate limit:** 1 request per minute per connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange accounts only.
+ Triggers an on-demand sync from the exchange, bypassing the cache and fetching live data immediately. **Rate limit:** 1 request per minute per connected account. **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
:param account_id: The connected account identifier (required)
:type account_id: str
diff --git a/fireblocks/api/policy_editor_v2_beta_api.py b/fireblocks/api/policy_editor_v2_api.py
similarity index 94%
rename from fireblocks/api/policy_editor_v2_beta_api.py
rename to fireblocks/api/policy_editor_v2_api.py
index 9510c052..982a6e0c 100644
--- a/fireblocks/api/policy_editor_v2_beta_api.py
+++ b/fireblocks/api/policy_editor_v2_api.py
@@ -34,7 +34,7 @@
from fireblocks.validation_utils import validate_not_empty_string
-class PolicyEditorV2BetaApi:
+class PolicyEditorV2Api:
"""NOTE: This class is auto generated by OpenAPI Generator
Ref: https://openapi-generator.tech
@@ -66,7 +66,7 @@ def get_active_policy(
) -> Future[ApiResponse[PolicyAndValidationResponse]]:
"""Get the active policy and its validation by policy type
- Returns the active policy and its validation for a specific policy type. **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com. Endpoint Permissions: Owner, Admin, Non-Signing Admin.
+ Returns the active policy and its validation for a specific policy type. Endpoint Permissions: Owner, Admin, Non-Signing Admin.
:param policy_type: The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT). (required)
:type policy_type: PolicyType
@@ -196,7 +196,7 @@ def get_draft(
) -> Future[ApiResponse[DraftReviewAndValidationResponse]]:
"""Get the active draft by policy type
- Returns the active draft and its validation for a specific policy type. **Note:** These endpoints are currently in beta and might be subject to changes.
+ Returns the active draft and its validation for a specific policy type.
:param policy_type: The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT). (required)
:type policy_type: PolicyType
@@ -327,7 +327,7 @@ def publish_draft(
) -> Future[ApiResponse[PublishResult]]:
"""Send publish request for a certain draft id
- Send publish request of certain draft id and returns the response. **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
+ Send publish request of certain draft id and returns the response. **⚠️ IMPORTANT SECURITY NOTICE:** The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place. If you want to learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
:param publish_draft_request: (required)
:type publish_draft_request: PublishDraftRequest
@@ -475,7 +475,7 @@ def update_draft(
) -> Future[ApiResponse[DraftReviewAndValidationResponse]]:
"""Update the draft with a new set of rules by policy types
- Update the draft and return its validation for specific policy types. **Note:** These endpoints are currently in beta and might be subject to changes.
+ Update the draft and return its validation for specific policy types. **⚠️ IMPORTANT SECURITY NOTICE:** The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
:param update_draft_request: (required)
:type update_draft_request: UpdateDraftRequest
diff --git a/fireblocks/api/reports_beta_api.py b/fireblocks/api/reports_beta_api.py
new file mode 100644
index 00000000..b2d957f4
--- /dev/null
+++ b/fireblocks/api/reports_beta_api.py
@@ -0,0 +1,502 @@
+# 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 warnings
+from concurrent.futures import Future
+from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
+from typing import Any, Dict, List, Optional, Tuple, Union
+from typing_extensions import Annotated
+
+from pydantic import Field, StrictStr, field_validator
+from typing import List, Optional
+from typing_extensions import Annotated
+from fireblocks.models.create_report_request import CreateReportRequest
+from fireblocks.models.create_report_response import CreateReportResponse
+from fireblocks.models.report_job_response import ReportJobResponse
+from fireblocks.models.report_list_response import ReportListResponse
+from fireblocks.models.report_status import ReportStatus
+from fireblocks.models.report_type import ReportType
+
+from fireblocks.api_client import ApiClient, RequestSerialized
+from fireblocks.api_response import ApiResponse
+from fireblocks.rest import RESTResponseType
+from fireblocks.validation_utils import validate_not_empty_string
+
+
+class ReportsBetaApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+
+ @validate_call
+ def create_report(
+ self,
+ create_report_request: CreateReportRequest,
+ 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[CreateReportResponse]]:
+ """Create a report
+
+ Creates a new asynchronous report job and returns a receipt containing the report ID. Poll `GET /v1/reports/{reportId}` to check status. When `status` is `COMPLETED`, the poll response includes a fresh pre-signed download URL in `links.downloadUrl`. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Viewer and above.
+
+ :param create_report_request: (required)
+ :type create_report_request: CreateReportRequest
+ :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._create_report_serialize(
+ create_report_request=create_report_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]] = {
+ '202': "CreateReportResponse",
+ '409': "ReportConflictResponse",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _create_report_serialize(
+ self,
+ create_report_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 create_report_request is not None:
+ _body_params = create_report_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='/reports',
+ 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_report(
+ self,
+ report_id: Annotated[StrictStr, Field(description="The unique identifier of the report job")],
+ _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[ReportJobResponse]]:
+ """Get report status
+
+ Returns the current status of a report job. Check the `status` field to determine the outcome. When `status` is `COMPLETED`, the response includes a fresh pre-signed download URL in `links.downloadUrl` (TTL ~1 hour). Re-poll this endpoint to obtain a new URL after expiry. When `status` is `FAILED`, the `failedAt` timestamp indicates when the failure occurred. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Viewer and above.
+
+ :param report_id: The unique identifier of the report job (required)
+ :type report_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_report", param_name="report_id", param_value=report_id)
+
+ _param = self._get_report_serialize(
+ report_id=report_id,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "ReportJobResponse",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _get_report_serialize(
+ self,
+ report_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 report_id is not None:
+ _path_params['reportId'] = report_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='/reports/{reportId}',
+ 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_reports(
+ self,
+ page_cursor: Annotated[Optional[StrictStr], Field(description="Opaque cursor returned from a previous list call")] = None,
+ page_size: Annotated[Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field(description="Maximum number of items per page")] = None,
+ sort_by: Annotated[Optional[StrictStr], Field(description="Field to sort by")] = None,
+ order: Annotated[Optional[StrictStr], Field(description="Sort direction")] = None,
+ status: Annotated[Optional[List[ReportStatus]], Field(description="Filter by lifecycle status. Repeat the parameter to filter on multiple statuses (e.g., ?status=QUEUED&status=PROCESSING).")] = None,
+ report_type: Annotated[Optional[List[ReportType]], Field(description="Filter by report type. Repeat the parameter to filter on multiple types.")] = 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[ReportListResponse]]:
+ """List reports
+
+ Returns a paginated list of report jobs scoped to the calling tenant. **Note:** Download URLs are not included in list responses. Call `GET /v1/reports/{reportId}` to obtain a fresh signed download URL for a specific completed report. **Note:** These endpoints are currently in beta and might be subject to changes. Endpoint Permission: Viewer and above.
+
+ :param page_cursor: Opaque cursor returned from a previous list call
+ :type page_cursor: str
+ :param page_size: Maximum number of items per page
+ :type page_size: int
+ :param sort_by: Field to sort by
+ :type sort_by: str
+ :param order: Sort direction
+ :type order: str
+ :param status: Filter by lifecycle status. Repeat the parameter to filter on multiple statuses (e.g., ?status=QUEUED&status=PROCESSING).
+ :type status: List[ReportStatus]
+ :param report_type: Filter by report type. Repeat the parameter to filter on multiple types.
+ :type report_type: List[ReportType]
+ :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_reports_serialize(
+ page_cursor=page_cursor,
+ page_size=page_size,
+ sort_by=sort_by,
+ order=order,
+ status=status,
+ report_type=report_type,
+ _request_auth=_request_auth,
+ _content_type=_content_type,
+ _headers=_headers,
+ _host_index=_host_index
+ )
+
+ _response_types_map: Dict[str, Optional[str]] = {
+ '200': "ReportListResponse",
+ 'default': "ErrorSchema",
+ }
+
+ return self.api_client.call_api(
+ *_param,
+ _request_timeout=_request_timeout,
+ _response_types_map=_response_types_map,
+ )
+
+ def _list_reports_serialize(
+ self,
+ page_cursor,
+ page_size,
+ sort_by,
+ order,
+ status,
+ report_type,
+ _request_auth,
+ _content_type,
+ _headers,
+ _host_index,
+ ) -> RequestSerialized:
+
+ _host = None
+
+ _collection_formats: Dict[str, str] = {
+ 'status': 'multi',
+ 'reportType': 'multi',
+ }
+
+ _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 sort_by is not None:
+
+ _query_params.append(('sortBy', sort_by))
+
+ if order is not None:
+
+ _query_params.append(('order', order))
+
+ if status is not None:
+
+ _query_params.append(('status', status))
+
+ if report_type is not None:
+
+ _query_params.append(('reportType', report_type))
+
+ # 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='/reports',
+ 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
+ )
+
+
diff --git a/fireblocks/api/tags_api.py b/fireblocks/api/tags_api.py
index 295b5a38..0b022cee 100644
--- a/fireblocks/api/tags_api.py
+++ b/fireblocks/api/tags_api.py
@@ -47,145 +47,6 @@ def __init__(self, api_client=None) -> None:
self.api_client = api_client
- @validate_call
- def cancel_approval_request(
- self,
- id: StrictStr,
- 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[None]]:
- """Cancel an approval request by id
-
- Cancel an approval request by id. Can only cancel requests in PENDING status. Returns 202 Accepted when the cancellation is processed.
-
- :param id: (required)
- :type id: str
- :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="cancel_approval_request", param_name="id", param_value=id)
-
- _param = self._cancel_approval_request_serialize(
- id=id,
- 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]] = {
- '202': None,
- '401': "ErrorResponse",
- '404': None,
- '409': "ErrorResponse",
- 'default': "ErrorSchema",
- }
-
- return self.api_client.call_api(
- *_param,
- _request_timeout=_request_timeout,
- _response_types_map=_response_types_map,
- )
-
- def _cancel_approval_request_serialize(
- self,
- id,
- 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 id is not None:
- _path_params['id'] = 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
-
-
- # 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='POST',
- resource_path='/tags/approval_requests/{id}/cancel',
- 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 create_tag(
self,
diff --git a/fireblocks/client.py b/fireblocks/client.py
index 8f7bcb28..8b03e7e0 100644
--- a/fireblocks/client.py
+++ b/fireblocks/client.py
@@ -44,8 +44,9 @@
from fireblocks.api.off_exchanges_api import OffExchangesApi
from fireblocks.api.onchain_data_api import OnchainDataApi
from fireblocks.api.payments_payout_api import PaymentsPayoutApi
-from fireblocks.api.policy_editor_v2_beta_api import PolicyEditorV2BetaApi
+from fireblocks.api.policy_editor_v2_api import PolicyEditorV2Api
from fireblocks.api.policy_editor_beta_api import PolicyEditorBetaApi
+from fireblocks.api.reports_beta_api import ReportsBetaApi
from fireblocks.api.reset_device_api import ResetDeviceApi
from fireblocks.api.smart_transfer_api import SmartTransferApi
from fireblocks.api.staking_api import StakingApi
@@ -104,8 +105,9 @@ def __init__(self, configuration: ClientConfiguration = None):
self._off_exchanges = None
self._onchain_data = None
self._payments_payout = None
- self._policy_editor_v2_beta = None
+ self._policy_editor_v2 = None
self._policy_editor_beta = None
+ self._reports_beta = None
self._reset_device = None
self._smart_transfer = None
self._staking = None
@@ -306,10 +308,10 @@ def payments_payout(self) -> PaymentsPayoutApi:
return self._payments_payout
@property
- def policy_editor_v2_beta(self) -> PolicyEditorV2BetaApi:
- if self._policy_editor_v2_beta is None:
- self._policy_editor_v2_beta = PolicyEditorV2BetaApi(self._api_client)
- return self._policy_editor_v2_beta
+ def policy_editor_v2(self) -> PolicyEditorV2Api:
+ if self._policy_editor_v2 is None:
+ self._policy_editor_v2 = PolicyEditorV2Api(self._api_client)
+ return self._policy_editor_v2
@property
def policy_editor_beta(self) -> PolicyEditorBetaApi:
@@ -317,6 +319,12 @@ def policy_editor_beta(self) -> PolicyEditorBetaApi:
self._policy_editor_beta = PolicyEditorBetaApi(self._api_client)
return self._policy_editor_beta
+ @property
+ def reports_beta(self) -> ReportsBetaApi:
+ if self._reports_beta is None:
+ self._reports_beta = ReportsBetaApi(self._api_client)
+ return self._reports_beta
+
@property
def reset_device(self) -> ResetDeviceApi:
if self._reset_device is None:
diff --git a/fireblocks/configuration.py b/fireblocks/configuration.py
index 7154c3ba..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: 21.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 568f9f25..0b1cf397 100644
--- a/fireblocks/models/__init__.py
+++ b/fireblocks/models/__init__.py
@@ -70,9 +70,11 @@
from fireblocks.models.address_registry_vault_list_order import AddressRegistryVaultListOrder
from fireblocks.models.address_registry_vault_opt_out_item import AddressRegistryVaultOptOutItem
from fireblocks.models.address_reverse_lookup_response import AddressReverseLookupResponse
+from fireblocks.models.addresses_filters import AddressesFilters
from fireblocks.models.alert_exposure_type_enum import AlertExposureTypeEnum
from fireblocks.models.alert_level_enum import AlertLevelEnum
from fireblocks.models.allowlist_entry import AllowlistEntry
+from fireblocks.models.allowlist_entry_response import AllowlistEntryResponse
from fireblocks.models.allowlist_entry_status import AllowlistEntryStatus
from fireblocks.models.allowlist_metadata import AllowlistMetadata
from fireblocks.models.allowlist_response import AllowlistResponse
@@ -257,8 +259,11 @@
from fireblocks.models.create_api_user import CreateAPIUser
from fireblocks.models.create_address_request import CreateAddressRequest
from fireblocks.models.create_address_response import CreateAddressResponse
+from fireblocks.models.create_addresses_report_request import CreateAddressesReportRequest
from fireblocks.models.create_assets_request import CreateAssetsRequest
from fireblocks.models.create_config_operation_request import CreateConfigOperationRequest
+from fireblocks.models.create_connected_account_request import CreateConnectedAccountRequest
+from fireblocks.models.create_connected_account_response import CreateConnectedAccountResponse
from fireblocks.models.create_connection_request import CreateConnectionRequest
from fireblocks.models.create_connection_response import CreateConnectionResponse
from fireblocks.models.create_console_user import CreateConsoleUser
@@ -283,6 +288,8 @@
from fireblocks.models.create_payout_request import CreatePayoutRequest
from fireblocks.models.create_quote import CreateQuote
from fireblocks.models.create_quote_scope_inner import CreateQuoteScopeInner
+from fireblocks.models.create_report_request import CreateReportRequest
+from fireblocks.models.create_report_response import CreateReportResponse
from fireblocks.models.create_signing_key_dto import CreateSigningKeyDto
from fireblocks.models.create_signing_key_dto_proof_of_ownership import CreateSigningKeyDtoProofOfOwnership
from fireblocks.models.create_tag_request import CreateTagRequest
@@ -299,6 +306,7 @@
from fireblocks.models.create_wallet_request import CreateWalletRequest
from fireblocks.models.create_webhook_request import CreateWebhookRequest
from fireblocks.models.create_workflow_execution_request_params_inner import CreateWorkflowExecutionRequestParamsInner
+from fireblocks.models.created_connected_account_item import CreatedConnectedAccountItem
from fireblocks.models.custom_routing_dest import CustomRoutingDest
from fireblocks.models.d_app_address_config import DAppAddressConfig
from fireblocks.models.dvp_settlement import DVPSettlement
@@ -490,6 +498,7 @@
from fireblocks.models.internal_transfer_destination import InternalTransferDestination
from fireblocks.models.internal_transfer_response import InternalTransferResponse
from fireblocks.models.invalid_paramater_value_error import InvalidParamaterValueError
+from fireblocks.models.issue_api_user_pairing_token_response import IssueApiUserPairingTokenResponse
from fireblocks.models.job_created import JobCreated
from fireblocks.models.layer_zero_adapter_create_params import LayerZeroAdapterCreateParams
from fireblocks.models.lbt_payment_info import LbtPaymentInfo
@@ -612,7 +621,6 @@
from fireblocks.models.participant_relationship_type import ParticipantRelationshipType
from fireblocks.models.participants_identification import ParticipantsIdentification
from fireblocks.models.participants_identification_policy import ParticipantsIdentificationPolicy
-from fireblocks.models.participants_identification_supported_endpoint import ParticipantsIdentificationSupportedEndpoint
from fireblocks.models.payee_account import PayeeAccount
from fireblocks.models.payee_account_response import PayeeAccountResponse
from fireblocks.models.payee_account_type import PayeeAccountType
@@ -648,7 +656,7 @@
from fireblocks.models.policy_and_validation_response import PolicyAndValidationResponse
from fireblocks.models.policy_check_result import PolicyCheckResult
from fireblocks.models.policy_currency import PolicyCurrency
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
from fireblocks.models.policy_operator import PolicyOperator
from fireblocks.models.policy_response import PolicyResponse
from fireblocks.models.policy_rule import PolicyRule
@@ -711,6 +719,14 @@
from fireblocks.models.rename_connected_account_response import RenameConnectedAccountResponse
from fireblocks.models.rename_cosigner import RenameCosigner
from fireblocks.models.rename_vault_account_response import RenameVaultAccountResponse
+from fireblocks.models.report_conflict_response import ReportConflictResponse
+from fireblocks.models.report_job import ReportJob
+from fireblocks.models.report_job_links import ReportJobLinks
+from fireblocks.models.report_job_response import ReportJobResponse
+from fireblocks.models.report_list_response import ReportListResponse
+from fireblocks.models.report_output_format import ReportOutputFormat
+from fireblocks.models.report_status import ReportStatus
+from fireblocks.models.report_type import ReportType
from fireblocks.models.resend_by_query_request import ResendByQueryRequest
from fireblocks.models.resend_by_query_response import ResendByQueryResponse
from fireblocks.models.resend_failed_notifications_job_status_response import ResendFailedNotificationsJobStatusResponse
@@ -828,6 +844,7 @@
from fireblocks.models.solana_config import SolanaConfig
from fireblocks.models.solana_instruction import SolanaInstruction
from fireblocks.models.solana_instruction_with_value import SolanaInstructionWithValue
+from fireblocks.models.solana_rewards_breakdown import SolanaRewardsBreakdown
from fireblocks.models.solana_simple_create_params import SolanaSimpleCreateParams
from fireblocks.models.source_config import SourceConfig
from fireblocks.models.source_of_funds import SourceOfFunds
@@ -994,6 +1011,7 @@
from fireblocks.models.transaction_response import TransactionResponse
from fireblocks.models.transaction_response_contract_call_decoded_data import TransactionResponseContractCallDecodedData
from fireblocks.models.transaction_response_destination import TransactionResponseDestination
+from fireblocks.models.transaction_tag import TransactionTag
from fireblocks.models.transfer_config_operation import TransferConfigOperation
from fireblocks.models.transfer_operation_config_params import TransferOperationConfigParams
from fireblocks.models.transfer_operation_execution import TransferOperationExecution
diff --git a/fireblocks/models/address_registry_legal_entity.py b/fireblocks/models/address_registry_legal_entity.py
index 01c4ef5f..b48a23b5 100644
--- a/fireblocks/models/address_registry_legal_entity.py
+++ b/fireblocks/models/address_registry_legal_entity.py
@@ -28,13 +28,13 @@ class AddressRegistryLegalEntity(BaseModel):
"""
Legal entity details for a blockchain address.
""" # noqa: E501
- verified: StrictBool = Field(description="Whether the entity was resolved from verified public registry data (e.g. LEI sources).")
+ lei_data: StrictBool = Field(description="Indicates whether LEI (Legal Entity Identifier) data is available for this address from a verified public registry. A value of `false` means no LEI record was found.", alias="leiData")
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.")
+ lei: StrictStr = Field(description="Legal Entity Identifier when available. Empty when `leiData` is `false`.")
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"]
+ __properties: ClassVar[List[str]] = ["leiData", "entityName", "jurisdiction", "lei", "travelRuleProviders", "email"]
model_config = ConfigDict(
populate_by_name=True,
@@ -87,7 +87,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
- "verified": obj.get("verified"),
+ "leiData": obj.get("leiData"),
"entityName": obj.get("entityName"),
"jurisdiction": obj.get("jurisdiction"),
"lei": obj.get("lei"),
diff --git a/fireblocks/models/addresses_filters.py b/fireblocks/models/addresses_filters.py
new file mode 100644
index 00000000..ae038772
--- /dev/null
+++ b/fireblocks/models/addresses_filters.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, 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 AddressesFilters(BaseModel):
+ """
+ Filter options for the `addresses` report type.
+ """ # noqa: E501
+ vault_account_ids: Optional[Annotated[List[StrictStr], Field(max_length=1000)]] = Field(default=None, description="Restrict to the listed vault account IDs. Max 1000 items. Pass a single ID as a one-element array.", alias="vaultAccountIds")
+ assets: Optional[Annotated[List[StrictStr], Field(max_length=1000)]] = Field(default=None, description="Filter by asset symbol (e.g., BTC, ETH). Max 1000 items. Pass a single symbol as a one-element array.")
+ __properties: ClassVar[List[str]] = ["vaultAccountIds", "assets"]
+
+ 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 AddressesFilters 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 AddressesFilters 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"),
+ "assets": obj.get("assets")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/allowlist_entry_response.py b/fireblocks/models/allowlist_entry_response.py
new file mode 100644
index 00000000..1bcc1a32
--- /dev/null
+++ b/fireblocks/models/allowlist_entry_response.py
@@ -0,0 +1,98 @@
+# 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
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.allowlist_entry import AllowlistEntry
+from fireblocks.models.allowlist_metadata import AllowlistMetadata
+from typing import Optional, Set
+from typing_extensions import Self
+
+class AllowlistEntryResponse(BaseModel):
+ """
+ Single allowlist entry envelope, paired with the account-level allowlist sync metadata.
+ """ # noqa: E501
+ data: AllowlistEntry
+ metadata: Optional[AllowlistMetadata] = None
+ __properties: ClassVar[List[str]] = ["data", "metadata"]
+
+ 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 AllowlistEntryResponse 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 data
+ if self.data:
+ _dict['data'] = self.data.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of metadata
+ if self.metadata:
+ _dict['metadata'] = self.metadata.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of AllowlistEntryResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "data": AllowlistEntry.from_dict(obj["data"]) if obj.get("data") is not None else None,
+ "metadata": AllowlistMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/chaps_payment_info.py b/fireblocks/models/chaps_payment_info.py
index 9bba3de0..0e5e7d94 100644
--- a/fireblocks/models/chaps_payment_info.py
+++ b/fireblocks/models/chaps_payment_info.py
@@ -32,13 +32,16 @@ class ChapsPaymentInfo(BaseModel):
addressing_system: StrictStr = Field(description="The addressing system used for CHAPS transfers", alias="addressingSystem")
account_holder_given_name: StrictStr = Field(description="The given name (first name) of the account holder", alias="accountHolderGivenName")
account_holder_surname: StrictStr = Field(description="The surname (last name) of the account holder", alias="accountHolderSurname")
+ account_holder_city: Optional[StrictStr] = Field(default=None, description="The city where the account holder resides", alias="accountHolderCity")
+ account_holder_country: Optional[StrictStr] = Field(default=None, description="The country where the account holder resides (ISO 3166-1 alpha-2 code)", alias="accountHolderCountry")
+ account_holder_postal_code: Optional[StrictStr] = Field(default=None, description="The postal code of the account holder's address", alias="accountHolderPostalCode")
country: StrictStr = Field(description="The country for the transfer (ISO 3166-1 alpha-2 code)")
sort_code: Annotated[str, Field(strict=True)] = Field(description="UK bank sort code (format XX-XX-XX)", alias="sortCode")
account_number: Annotated[str, Field(strict=True)] = Field(description="UK bank account number", alias="accountNumber")
bank_name: Optional[StrictStr] = Field(default=None, description="The name of the bank", alias="bankName")
bank_account_country: Annotated[str, Field(strict=True)] = Field(description="CHAPS bank account holder name", alias="bankAccountCountry")
bank_account_holder_name: Annotated[str, Field(strict=True)] = Field(description="CHAPS bank account holder name", alias="bankAccountHolderName")
- __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "country", "sortCode", "accountNumber", "bankName", "bankAccountCountry", "bankAccountHolderName"]
+ __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "accountHolderCity", "accountHolderCountry", "accountHolderPostalCode", "country", "sortCode", "accountNumber", "bankName", "bankAccountCountry", "bankAccountHolderName"]
@field_validator('rail')
def rail_validate_enum(cls, value):
@@ -137,6 +140,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"addressingSystem": obj.get("addressingSystem"),
"accountHolderGivenName": obj.get("accountHolderGivenName"),
"accountHolderSurname": obj.get("accountHolderSurname"),
+ "accountHolderCity": obj.get("accountHolderCity"),
+ "accountHolderCountry": obj.get("accountHolderCountry"),
+ "accountHolderPostalCode": obj.get("accountHolderPostalCode"),
"country": obj.get("country"),
"sortCode": obj.get("sortCode"),
"accountNumber": obj.get("accountNumber"),
diff --git a/fireblocks/models/connected_account_error_response.py b/fireblocks/models/connected_account_error_response.py
index d1269b2c..edd8dec1 100644
--- a/fireblocks/models/connected_account_error_response.py
+++ b/fireblocks/models/connected_account_error_response.py
@@ -18,8 +18,8 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, Field, StrictStr
-from typing import Any, ClassVar, Dict, List
+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
@@ -27,9 +27,11 @@ class ConnectedAccountErrorResponse(BaseModel):
"""
ConnectedAccountErrorResponse
""" # noqa: E501
- error_message: StrictStr = Field(description="Error message describing what went wrong", alias="errorMessage")
- error_code: StrictStr = Field(description="Error code identifying the type of error", alias="errorCode")
- __properties: ClassVar[List[str]] = ["errorMessage", "errorCode"]
+ message: StrictStr = Field(description="Error message describing what went wrong.")
+ code: StrictInt = Field(description="Numeric error code identifying the type of error.")
+ error_message: Optional[StrictStr] = Field(default=None, description="Error message describing what went wrong", alias="errorMessage")
+ error_code: Optional[StrictStr] = Field(default=None, description="Error code identifying the type of error", alias="errorCode")
+ __properties: ClassVar[List[str]] = ["message", "code", "errorMessage", "errorCode"]
model_config = ConfigDict(
populate_by_name=True,
@@ -82,6 +84,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
+ "message": obj.get("message"),
+ "code": obj.get("code"),
"errorMessage": obj.get("errorMessage"),
"errorCode": obj.get("errorCode")
})
diff --git a/fireblocks/models/create_addresses_report_request.py b/fireblocks/models/create_addresses_report_request.py
new file mode 100644
index 00000000..9608a43a
--- /dev/null
+++ b/fireblocks/models/create_addresses_report_request.py
@@ -0,0 +1,106 @@
+# 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, field_validator
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.addresses_filters import AddressesFilters
+from fireblocks.models.report_output_format import ReportOutputFormat
+from typing import Optional, Set
+from typing_extensions import Self
+
+class CreateAddressesReportRequest(BaseModel):
+ """
+ Request body for creating a new ADDRESSES report job
+ """ # noqa: E501
+ report_type: StrictStr = Field(description="The type of report to generate.", alias="reportType")
+ output_format: ReportOutputFormat = Field(alias="outputFormat")
+ compress: Optional[StrictBool] = Field(default=False, description="Gzip the output file. Defaults to true.")
+ filters: Optional[AddressesFilters] = None
+ __properties: ClassVar[List[str]] = ["reportType", "outputFormat", "compress", "filters"]
+
+ @field_validator('report_type')
+ def report_type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value not in set(['ADDRESSES']):
+ raise ValueError("must be one of enum values ('ADDRESSES')")
+ 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 CreateAddressesReportRequest 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 filters
+ if self.filters:
+ _dict['filters'] = self.filters.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of CreateAddressesReportRequest from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "reportType": obj.get("reportType"),
+ "outputFormat": obj.get("outputFormat"),
+ "compress": obj.get("compress") if obj.get("compress") is not None else False,
+ "filters": AddressesFilters.from_dict(obj["filters"]) if obj.get("filters") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/create_connected_account_request.py b/fireblocks/models/create_connected_account_request.py
new file mode 100644
index 00000000..0abf8b12
--- /dev/null
+++ b/fireblocks/models/create_connected_account_request.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 pydantic import BaseModel, ConfigDict, Field, StrictBytes, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional, Union
+from typing import Optional, Set
+from typing_extensions import Self
+
+class CreateConnectedAccountRequest(BaseModel):
+ """
+ CreateConnectedAccountRequest
+ """ # noqa: E501
+ provider_id: StrictStr = Field(description="Integration key identifying the provider (e.g. BINANCE, KINGDOM_BANK, GEMINI_NLV2).", alias="providerId")
+ display_name: Optional[StrictStr] = Field(default=None, description="Human-readable account name. Required for non-NLV2 providers.", alias="displayName")
+ creds: Union[StrictBytes, StrictStr] = Field(description="Base64-encoded RSA-encrypted credential blob. Encrypt using the public key from GET /exchange_accounts/credentials_public_key.")
+ api_key: StrictStr = Field(description="Account-level API key.", alias="apiKey")
+ main_account_id: Optional[StrictStr] = Field(default=None, description="Parent main account ID for sub-account creation. Not allowed for NLV2 providers.", alias="mainAccountId")
+ account_id: Optional[StrictStr] = Field(default=None, description="Optional provider-side account ID to associate with the created account.", alias="accountId")
+ on_premise_server_id: Optional[StrictStr] = Field(default=None, description="On-premise server ID for self-hosted integrations.", alias="onPremiseServerId")
+ __properties: ClassVar[List[str]] = ["providerId", "displayName", "creds", "apiKey", "mainAccountId", "accountId", "onPremiseServerId"]
+
+ 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 CreateConnectedAccountRequest 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 CreateConnectedAccountRequest from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "providerId": obj.get("providerId"),
+ "displayName": obj.get("displayName"),
+ "creds": obj.get("creds"),
+ "apiKey": obj.get("apiKey"),
+ "mainAccountId": obj.get("mainAccountId"),
+ "accountId": obj.get("accountId"),
+ "onPremiseServerId": obj.get("onPremiseServerId")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/create_connected_account_response.py b/fireblocks/models/create_connected_account_response.py
new file mode 100644
index 00000000..65845a88
--- /dev/null
+++ b/fireblocks/models/create_connected_account_response.py
@@ -0,0 +1,96 @@
+# 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 fireblocks.models.created_connected_account_item import CreatedConnectedAccountItem
+from typing import Optional, Set
+from typing_extensions import Self
+
+class CreateConnectedAccountResponse(BaseModel):
+ """
+ CreateConnectedAccountResponse
+ """ # noqa: E501
+ accounts: List[CreatedConnectedAccountItem] = Field(description="Created accounts — main account first, sub-accounts after (NLV2 hierarchy).")
+ __properties: ClassVar[List[str]] = ["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 CreateConnectedAccountResponse 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 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 CreateConnectedAccountResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "accounts": [CreatedConnectedAccountItem.from_dict(_item) for _item in obj["accounts"]] if obj.get("accounts") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/create_multiple_vault_accounts_job_status.py b/fireblocks/models/create_multiple_vault_accounts_job_status.py
index 5814a869..83d7ab1d 100644
--- a/fireblocks/models/create_multiple_vault_accounts_job_status.py
+++ b/fireblocks/models/create_multiple_vault_accounts_job_status.py
@@ -27,8 +27,8 @@ class CreateMultipleVaultAccountsJobStatus(BaseModel):
"""
CreateMultipleVaultAccountsJobStatus
""" # noqa: E501
- status: StrictStr = Field(description="Status of the job. Possible values - Success, In Progress, Failed, Pending Approval, Cancelled")
- vault_accounts: Optional[Dict[str, Dict[str, StrictStr]]] = Field(default=None, description="Mapping between VaultAccountId to a mapping of asset to address", alias="vaultAccounts")
+ status: StrictStr = Field(description="Status of the job. Possible values - Success, In Progress, Error, Pending Approval, Canceled")
+ vault_accounts: Optional[Dict[str, Dict[str, StrictStr]]] = Field(default=None, description="Mapping between VaultAccountId to a mapping of asset to address, and the vault account name", alias="vaultAccounts")
tag_ids: Optional[List[StrictStr]] = Field(default=None, description="List of tag IDs successfully attached to each of the created vault accounts", alias="tagIds")
error_message: Optional[StrictStr] = Field(default=None, alias="errorMessage")
approval_request_id: Optional[StrictStr] = Field(default=None, description="Approval request ID if the job has protected tags to attach to the vault accounts", alias="approvalRequestId")
diff --git a/fireblocks/models/create_report_request.py b/fireblocks/models/create_report_request.py
new file mode 100644
index 00000000..30e68b0b
--- /dev/null
+++ b/fireblocks/models/create_report_request.py
@@ -0,0 +1,127 @@
+# 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.create_addresses_report_request import CreateAddressesReportRequest
+from pydantic import StrictStr, Field
+from typing import Union, List, Set, Optional, Dict
+from typing_extensions import Literal, Self
+
+CREATEREPORTREQUEST_ONE_OF_SCHEMAS = ["CreateAddressesReportRequest"]
+
+class CreateReportRequest(BaseModel):
+ """
+ Request body for creating a new asynchronous report job
+ """
+ # data type: CreateAddressesReportRequest
+ oneof_schema_1_validator: Optional[CreateAddressesReportRequest] = None
+ actual_instance: Optional[Union[CreateAddressesReportRequest]] = None
+ one_of_schemas: Set[str] = { "CreateAddressesReportRequest" }
+
+ model_config = ConfigDict(
+ validate_assignment=True,
+ protected_namespaces=(),
+ )
+
+
+ discriminator_value_class_map: Dict[str, str] = {
+ }
+
+ 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 = CreateReportRequest.model_construct()
+ error_messages = []
+ match = 0
+ # validate data type: CreateAddressesReportRequest
+ if not isinstance(v, CreateAddressesReportRequest):
+ error_messages.append(f"Error! Input type `{type(v)}` is not `CreateAddressesReportRequest`")
+ else:
+ match += 1
+ if match > 1:
+ # more than 1 match
+ raise ValueError("Multiple matches found when setting `actual_instance` in CreateReportRequest with oneOf schemas: CreateAddressesReportRequest. Details: " + ", ".join(error_messages))
+ elif match == 0:
+ # no match
+ raise ValueError("No match found when setting `actual_instance` in CreateReportRequest with oneOf schemas: CreateAddressesReportRequest. 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 CreateAddressesReportRequest
+ try:
+ instance.actual_instance = CreateAddressesReportRequest.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 CreateReportRequest with oneOf schemas: CreateAddressesReportRequest. Details: " + ", ".join(error_messages))
+ elif match == 0:
+ # no match
+ raise ValueError("No match found when deserializing the JSON string into CreateReportRequest with oneOf schemas: CreateAddressesReportRequest. 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], CreateAddressesReportRequest]]:
+ """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/create_report_response.py b/fireblocks/models/create_report_response.py
new file mode 100644
index 00000000..c71f9676
--- /dev/null
+++ b/fireblocks/models/create_report_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, StrictStr
+from typing import Any, ClassVar, Dict, List
+from typing import Optional, Set
+from typing_extensions import Self
+
+class CreateReportResponse(BaseModel):
+ """
+ Returned when a report job is successfully created. Use the `id` to poll for status via `GET /v1/reports/{reportId}`.
+ """ # noqa: E501
+ id: StrictStr = Field(description="Unique identifier of the report job")
+ __properties: ClassVar[List[str]] = ["id"]
+
+ 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 CreateReportResponse 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 CreateReportResponse 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")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/created_connected_account_item.py b/fireblocks/models/created_connected_account_item.py
new file mode 100644
index 00000000..1aac5c59
--- /dev/null
+++ b/fireblocks/models/created_connected_account_item.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
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.connected_account_approval_status import ConnectedAccountApprovalStatus
+from typing import Optional, Set
+from typing_extensions import Self
+
+class CreatedConnectedAccountItem(BaseModel):
+ """
+ CreatedConnectedAccountItem
+ """ # noqa: E501
+ account_id: StrictStr = Field(description="ID of the created account.", alias="accountId")
+ name: StrictStr = Field(description="Human-readable account name.")
+ parent_account_id: Optional[StrictStr] = Field(default=None, description="Parent account ID — present only for sub-accounts in an NLV2 hierarchy.", alias="parentAccountId")
+ status: ConnectedAccountApprovalStatus
+ __properties: ClassVar[List[str]] = ["accountId", "name", "parentAccountId", "status"]
+
+ 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 CreatedConnectedAccountItem 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 CreatedConnectedAccountItem from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "accountId": obj.get("accountId"),
+ "name": obj.get("name"),
+ "parentAccountId": obj.get("parentAccountId"),
+ "status": obj.get("status")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/destination_transfer_peer_path_response.py b/fireblocks/models/destination_transfer_peer_path_response.py
index 28b2f303..fe77c245 100644
--- a/fireblocks/models/destination_transfer_peer_path_response.py
+++ b/fireblocks/models/destination_transfer_peer_path_response.py
@@ -20,6 +20,8 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
+from typing_extensions import Annotated
+from fireblocks.models.transaction_tag import TransactionTag
from fireblocks.models.transfer_peer_path_type import TransferPeerPathType
from typing import Optional, Set
from typing_extensions import Self
@@ -34,7 +36,8 @@ class DestinationTransferPeerPathResponse(BaseModel):
name: Optional[StrictStr] = Field(default=None, description="The name of the peer.")
wallet_id: Optional[StrictStr] = Field(default=None, alias="walletId")
trading_account: Optional[StrictStr] = Field(default=None, description="If this transaction is an exchange internal transfer, this field will be populated with the type of that trading account.", alias="tradingAccount")
- __properties: ClassVar[List[str]] = ["type", "subType", "id", "name", "walletId", "tradingAccount"]
+ tags: Optional[Annotated[List[TransactionTag], Field(min_length=1, max_length=20)]] = Field(default=None, description="Tags associated with the transaction's destination.")
+ __properties: ClassVar[List[str]] = ["type", "subType", "id", "name", "walletId", "tradingAccount", "tags"]
model_config = ConfigDict(
populate_by_name=True,
@@ -75,6 +78,13 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
+ # override the default output from pydantic by calling `to_dict()` of each item in tags (list)
+ _items = []
+ if self.tags:
+ for _item_tags in self.tags:
+ if _item_tags:
+ _items.append(_item_tags.to_dict())
+ _dict['tags'] = _items
# set to None if id (nullable) is None
# and model_fields_set contains the field
if self.id is None and "id" in self.model_fields_set:
@@ -102,7 +112,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"id": obj.get("id"),
"name": obj.get("name"),
"walletId": obj.get("walletId"),
- "tradingAccount": obj.get("tradingAccount")
+ "tradingAccount": obj.get("tradingAccount"),
+ "tags": [TransactionTag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None
})
return _obj
diff --git a/fireblocks/models/draft_response.py b/fireblocks/models/draft_response.py
index 118873f8..23a4a9c8 100644
--- a/fireblocks/models/draft_response.py
+++ b/fireblocks/models/draft_response.py
@@ -20,7 +20,7 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
from fireblocks.models.policy_rule import PolicyRule
from typing import Optional, Set
from typing_extensions import Self
@@ -32,7 +32,7 @@ class DraftResponse(BaseModel):
status: StrictStr = Field(description="Operation status")
rules: List[PolicyRule] = Field(description="Draft rules")
draft_id: StrictStr = Field(description="Draft unique id", alias="draftId")
- metadata: PolicyMetadata
+ metadata: Dict[str, PolicyMetadataEntry] = Field(description="Policy metadata keyed by policy type")
__properties: ClassVar[List[str]] = ["status", "rules", "draftId", "metadata"]
model_config = ConfigDict(
@@ -81,9 +81,13 @@ def to_dict(self) -> Dict[str, Any]:
if _item_rules:
_items.append(_item_rules.to_dict())
_dict['rules'] = _items
- # override the default output from pydantic by calling `to_dict()` of metadata
+ # override the default output from pydantic by calling `to_dict()` of each value in metadata (dict)
+ _field_dict = {}
if self.metadata:
- _dict['metadata'] = self.metadata.to_dict()
+ for _key_metadata in self.metadata:
+ if self.metadata[_key_metadata]:
+ _field_dict[_key_metadata] = self.metadata[_key_metadata].to_dict()
+ _dict['metadata'] = _field_dict
return _dict
@classmethod
@@ -99,7 +103,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"status": obj.get("status"),
"rules": [PolicyRule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None,
"draftId": obj.get("draftId"),
- "metadata": PolicyMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None
+ "metadata": dict(
+ (_k, PolicyMetadataEntry.from_dict(_v))
+ for _k, _v in obj["metadata"].items()
+ )
+ if obj.get("metadata") is not None
+ else None
})
return _obj
diff --git a/fireblocks/models/exposure.py b/fireblocks/models/exposure.py
index 07799b92..196ecf9e 100644
--- a/fireblocks/models/exposure.py
+++ b/fireblocks/models/exposure.py
@@ -18,19 +18,22 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, Field, StrictStr
+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 Exposure(BaseModel):
"""
- Exposure
+ Vault allocation exposure item (Morpho MetaMorpho allocation slice).
""" # noqa: E501
- asset_address: Optional[StrictStr] = Field(default=None, description="On-chain address of the exposure asset.", alias="assetAddress")
- symbol: Optional[StrictStr] = Field(default=None, description="Ticker for the exposure asset.")
- amount: Optional[StrictStr] = Field(default=None, description="Human-readable decimal string (raw on-chain value scaled by 10^decimals).")
- __properties: ClassVar[List[str]] = ["assetAddress", "symbol", "amount"]
+ address: StrictStr = Field(description="Contract address of the exposure token on-chain.")
+ amount: StrictStr = Field(description="Human-readable token amount (raw on-chain value scaled by 10^decimals).")
+ symbol: Optional[StrictStr] = Field(default=None, description="Human-readable ticker (e.g. USDC).")
+ decimals: Optional[StrictInt] = Field(default=None, description="Token decimals used when interpreting on-chain amounts.")
+ asset_id: Optional[StrictStr] = Field(default=None, description="Fireblocks legacy asset identifier (e.g. USDC_ETH, PYUSD); only present when resolved via asset-service.", alias="assetId")
+ amount_usd: Optional[StrictStr] = Field(default=None, description="USD notional value of the exposure amount.", alias="amountUsd")
+ __properties: ClassVar[List[str]] = ["address", "amount", "symbol", "decimals", "assetId", "amountUsd"]
model_config = ConfigDict(
populate_by_name=True,
@@ -83,9 +86,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
- "assetAddress": obj.get("assetAddress"),
+ "address": obj.get("address"),
+ "amount": obj.get("amount"),
"symbol": obj.get("symbol"),
- "amount": obj.get("amount")
+ "decimals": obj.get("decimals"),
+ "assetId": obj.get("assetId"),
+ "amountUsd": obj.get("amountUsd")
})
return _obj
diff --git a/fireblocks/models/get_action_response.py b/fireblocks/models/get_action_response.py
index 16ad4e5a..52a8c119 100644
--- a/fireblocks/models/get_action_response.py
+++ b/fireblocks/models/get_action_response.py
@@ -30,6 +30,8 @@ class GetActionResponse(BaseModel):
Single lending action (intent plus per-step execution rows).
""" # noqa: E501
id: StrictStr = Field(description="Action sequence id (UUID).")
+ vault_account_id: StrictStr = Field(description="Fireblocks vault account that executed the action.", alias="vaultAccountId")
+ user_id: StrictStr = Field(description="User who initiated the action.", alias="userId")
status: StrictStr = Field(description="Intent status (e.g. CREATED, IN_PROGRESS, COMPLETED).")
provider_id: StrictStr = Field(description="Lending protocol identifier.", alias="providerId")
action_type: StrictStr = Field(description="Whether this action is a deposit or withdraw flow.", alias="actionType")
@@ -39,7 +41,7 @@ class GetActionResponse(BaseModel):
created_at: StrictStr = Field(description="Creation time (ISO-8601).", alias="createdAt")
updated_at: StrictStr = Field(description="Last update time (ISO-8601).", alias="updatedAt")
records: Annotated[List[ActionRecord], Field(min_length=1, max_length=4)] = Field(description="Ordered execution steps for this action.")
- __properties: ClassVar[List[str]] = ["id", "status", "providerId", "actionType", "opportunityId", "positionId", "amount", "createdAt", "updatedAt", "records"]
+ __properties: ClassVar[List[str]] = ["id", "vaultAccountId", "userId", "status", "providerId", "actionType", "opportunityId", "positionId", "amount", "createdAt", "updatedAt", "records"]
@field_validator('provider_id')
def provider_id_validate_enum(cls, value):
@@ -114,6 +116,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"id": obj.get("id"),
+ "vaultAccountId": obj.get("vaultAccountId"),
+ "userId": obj.get("userId"),
"status": obj.get("status"),
"providerId": obj.get("providerId"),
"actionType": obj.get("actionType"),
diff --git a/fireblocks/models/identification_policy_override.py b/fireblocks/models/identification_policy_override.py
index 0d6009a0..2f88b2b3 100644
--- a/fireblocks/models/identification_policy_override.py
+++ b/fireblocks/models/identification_policy_override.py
@@ -32,7 +32,7 @@ class IdentificationPolicyOverride(BaseModel):
asset: Optional[StrictStr] = Field(default=None, description="Fireblocks asset ID (fiat or crypto).")
rail: Optional[TransferRail] = None
flow_direction: Optional[FlowDirection] = Field(default=None, alias="flowDirection")
- var_schema: StrictStr = Field(description="A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest lists that endpoint in `participantsIdentificationPolicy.supportedEndpoints` (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). ", alias="schema")
+ var_schema: StrictStr = Field(description="A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest declares a `participantsIdentificationPolicy` for that endpoint (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). ", alias="schema")
__properties: ClassVar[List[str]] = ["asset", "rail", "flowDirection", "schema"]
model_config = ConfigDict(
diff --git a/fireblocks/models/issue_api_user_pairing_token_response.py b/fireblocks/models/issue_api_user_pairing_token_response.py
new file mode 100644
index 00000000..d11bacd1
--- /dev/null
+++ b/fireblocks/models/issue_api_user_pairing_token_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, StrictBool, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.user_role import UserRole
+from fireblocks.models.user_status import UserStatus
+from fireblocks.models.user_type import UserType
+from typing import Optional, Set
+from typing_extensions import Self
+
+class IssueApiUserPairingTokenResponse(BaseModel):
+ """
+ IssueApiUserPairingTokenResponse
+ """ # noqa: E501
+ id: StrictStr = Field(description="The unique identifier of the user")
+ name: Optional[StrictStr] = Field(default=None, description="The name of the user")
+ role: UserRole
+ enabled: StrictBool = Field(description="Whether the user is enabled")
+ user_type: Optional[UserType] = Field(default=None, alias="userType")
+ status: Optional[UserStatus] = None
+ pairing_token: StrictStr = Field(description="The device pairing token issued for the given user", alias="pairingToken")
+ __properties: ClassVar[List[str]] = ["id", "name", "role", "enabled", "userType", "status", "pairingToken"]
+
+ 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 IssueApiUserPairingTokenResponse 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 IssueApiUserPairingTokenResponse 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"),
+ "role": obj.get("role"),
+ "enabled": obj.get("enabled"),
+ "userType": obj.get("userType"),
+ "status": obj.get("status"),
+ "pairingToken": obj.get("pairingToken")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/manifest.py b/fireblocks/models/manifest.py
index b8f2a783..ccd661e6 100644
--- a/fireblocks/models/manifest.py
+++ b/fireblocks/models/manifest.py
@@ -18,12 +18,11 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, Field
-from typing import Any, ClassVar, Dict, List, Optional
+from pydantic import BaseModel, ConfigDict
+from typing import Any, ClassVar, Dict, List
from fireblocks.models.manifest_base import ManifestBase
from fireblocks.models.manifest_order import ManifestOrder
from fireblocks.models.manifest_quote import ManifestQuote
-from fireblocks.models.participants_identification_policy import ParticipantsIdentificationPolicy
from typing import Optional, Set
from typing_extensions import Self
@@ -34,8 +33,7 @@ class Manifest(BaseModel):
order: ManifestOrder
quote: ManifestQuote
rate: ManifestBase
- participants_identification_policy: Optional[ParticipantsIdentificationPolicy] = Field(default=None, alias="participantsIdentificationPolicy")
- __properties: ClassVar[List[str]] = ["order", "quote", "rate", "participantsIdentificationPolicy"]
+ __properties: ClassVar[List[str]] = ["order", "quote", "rate"]
model_config = ConfigDict(
populate_by_name=True,
@@ -85,9 +83,6 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of rate
if self.rate:
_dict['rate'] = self.rate.to_dict()
- # override the default output from pydantic by calling `to_dict()` of participants_identification_policy
- if self.participants_identification_policy:
- _dict['participantsIdentificationPolicy'] = self.participants_identification_policy.to_dict()
return _dict
@classmethod
@@ -102,8 +97,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"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,
- "participantsIdentificationPolicy": ParticipantsIdentificationPolicy.from_dict(obj["participantsIdentificationPolicy"]) if obj.get("participantsIdentificationPolicy") 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
index d2cac6e0..d430da66 100644
--- a/fireblocks/models/manifest_base.py
+++ b/fireblocks/models/manifest_base.py
@@ -19,7 +19,9 @@
import json
from pydantic import BaseModel, ConfigDict, Field, StrictBool
-from typing import Any, ClassVar, Dict, List
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.participant_relationship_type import ParticipantRelationshipType
+from fireblocks.models.participants_identification_policy import ParticipantsIdentificationPolicy
from typing import Optional, Set
from typing_extensions import Self
@@ -28,7 +30,9 @@ 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"]
+ participants_identification_policy: Optional[ParticipantsIdentificationPolicy] = Field(default=None, alias="participantsIdentificationPolicy")
+ supported_parties: Optional[List[ParticipantRelationshipType]] = Field(default=None, description="The participant party types the provider supports for this endpoint. ", alias="supportedParties")
+ __properties: ClassVar[List[str]] = ["supported", "participantsIdentificationPolicy", "supportedParties"]
model_config = ConfigDict(
populate_by_name=True,
@@ -69,6 +73,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 participants_identification_policy
+ if self.participants_identification_policy:
+ _dict['participantsIdentificationPolicy'] = self.participants_identification_policy.to_dict()
return _dict
@classmethod
@@ -81,7 +88,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
- "supported": obj.get("supported")
+ "supported": obj.get("supported"),
+ "participantsIdentificationPolicy": ParticipantsIdentificationPolicy.from_dict(obj["participantsIdentificationPolicy"]) if obj.get("participantsIdentificationPolicy") is not None else None,
+ "supportedParties": obj.get("supportedParties")
})
return _obj
diff --git a/fireblocks/models/manifest_order.py b/fireblocks/models/manifest_order.py
index b6d81796..df1bc290 100644
--- a/fireblocks/models/manifest_order.py
+++ b/fireblocks/models/manifest_order.py
@@ -21,6 +21,8 @@
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.participant_relationship_type import ParticipantRelationshipType
+from fireblocks.models.participants_identification_policy import ParticipantsIdentificationPolicy
from fireblocks.models.settlement_type_enum import SettlementTypeEnum
from typing import Optional, Set
from typing_extensions import Self
@@ -30,9 +32,12 @@ class ManifestOrder(BaseModel):
ManifestOrder
""" # noqa: E501
supported: StrictBool = Field(description="Indicates whether the endpoint is supported by the provider")
+ participants_identification_policy: Optional[ParticipantsIdentificationPolicy] = Field(default=None, alias="participantsIdentificationPolicy")
+ supported_parties: Optional[List[ParticipantRelationshipType]] = Field(default=None, description="The participant party types the provider supports for this endpoint. ", alias="supportedParties")
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"]
+ requires_reason_for_payment: Optional[StrictBool] = Field(default=None, description="Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required. ", alias="requiresReasonForPayment")
+ __properties: ClassVar[List[str]] = ["supported", "participantsIdentificationPolicy", "supportedParties", "settlementTypes", "executionTypes", "requiresReasonForPayment"]
model_config = ConfigDict(
populate_by_name=True,
@@ -73,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 participants_identification_policy
+ if self.participants_identification_policy:
+ _dict['participantsIdentificationPolicy'] = self.participants_identification_policy.to_dict()
return _dict
@classmethod
@@ -86,8 +94,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"supported": obj.get("supported"),
+ "participantsIdentificationPolicy": ParticipantsIdentificationPolicy.from_dict(obj["participantsIdentificationPolicy"]) if obj.get("participantsIdentificationPolicy") is not None else None,
+ "supportedParties": obj.get("supportedParties"),
"settlementTypes": obj.get("settlementTypes"),
- "executionTypes": obj.get("executionTypes")
+ "executionTypes": obj.get("executionTypes"),
+ "requiresReasonForPayment": obj.get("requiresReasonForPayment")
})
return _obj
diff --git a/fireblocks/models/manifest_order_info.py b/fireblocks/models/manifest_order_info.py
index 97c3cd66..679e922e 100644
--- a/fireblocks/models/manifest_order_info.py
+++ b/fireblocks/models/manifest_order_info.py
@@ -18,7 +18,7 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, Field
+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
@@ -31,7 +31,8 @@ class ManifestOrderInfo(BaseModel):
""" # 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"]
+ requires_reason_for_payment: Optional[StrictBool] = Field(default=None, description="Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required. ", alias="requiresReasonForPayment")
+ __properties: ClassVar[List[str]] = ["settlementTypes", "executionTypes", "requiresReasonForPayment"]
model_config = ConfigDict(
populate_by_name=True,
@@ -85,7 +86,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"settlementTypes": obj.get("settlementTypes"),
- "executionTypes": obj.get("executionTypes")
+ "executionTypes": obj.get("executionTypes"),
+ "requiresReasonForPayment": obj.get("requiresReasonForPayment")
})
return _obj
diff --git a/fireblocks/models/manifest_quote.py b/fireblocks/models/manifest_quote.py
index 9ea22d23..278d72c5 100644
--- a/fireblocks/models/manifest_quote.py
+++ b/fireblocks/models/manifest_quote.py
@@ -21,6 +21,8 @@
from pydantic import BaseModel, ConfigDict, Field, StrictBool
from typing import Any, ClassVar, Dict, List, Optional
from fireblocks.models.dvp_settlement_type import DVPSettlementType
+from fireblocks.models.participant_relationship_type import ParticipantRelationshipType
+from fireblocks.models.participants_identification_policy import ParticipantsIdentificationPolicy
from typing import Optional, Set
from typing_extensions import Self
@@ -29,8 +31,10 @@ class ManifestQuote(BaseModel):
ManifestQuote
""" # noqa: E501
supported: StrictBool = Field(description="Indicates whether the endpoint is supported by the provider")
+ participants_identification_policy: Optional[ParticipantsIdentificationPolicy] = Field(default=None, alias="participantsIdentificationPolicy")
+ supported_parties: Optional[List[ParticipantRelationshipType]] = Field(default=None, description="The participant party types the provider supports for this endpoint. ", alias="supportedParties")
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"]
+ __properties: ClassVar[List[str]] = ["supported", "participantsIdentificationPolicy", "supportedParties", "settlementTypes"]
model_config = ConfigDict(
populate_by_name=True,
@@ -71,6 +75,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 participants_identification_policy
+ if self.participants_identification_policy:
+ _dict['participantsIdentificationPolicy'] = self.participants_identification_policy.to_dict()
return _dict
@classmethod
@@ -84,6 +91,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"supported": obj.get("supported"),
+ "participantsIdentificationPolicy": ParticipantsIdentificationPolicy.from_dict(obj["participantsIdentificationPolicy"]) if obj.get("participantsIdentificationPolicy") is not None else None,
+ "supportedParties": obj.get("supportedParties"),
"settlementTypes": obj.get("settlementTypes")
})
return _obj
diff --git a/fireblocks/models/opportunity.py b/fireblocks/models/opportunity.py
index c13d13fb..a28a63fd 100644
--- a/fireblocks/models/opportunity.py
+++ b/fireblocks/models/opportunity.py
@@ -45,8 +45,9 @@ class Opportunity(BaseModel):
apy: Optional[Apy] = Field(default=None, description="APY breakdown; values are percentages (e.g. 4.25 means 4.25%).")
performance_fee: Optional[StrictStr] = Field(default=None, description="Performance fee as a human-readable decimal string.", alias="performanceFee")
management_fee: Optional[StrictStr] = Field(default=None, description="Management fee as a human-readable decimal string.", alias="managementFee")
- exposure: Optional[Annotated[List[Exposure], Field(min_length=0, max_length=10)]] = Field(default=None, description="Optional per-asset exposure breakdown.")
- __properties: ClassVar[List[str]] = ["id", "providerId", "type", "chainId", "address", "name", "symbol", "principalAsset", "positionAsset", "totalAssets", "liquidity", "apy", "performanceFee", "managementFee", "exposure"]
+ exposure_type: Optional[StrictStr] = Field(default=None, description="What the `exposure` rows represent; `UNSPECIFIED` when there is no exposure.", alias="exposureType")
+ exposure: Optional[Annotated[List[Exposure], Field(min_length=0, max_length=20)]] = Field(default=None, description="Per-asset exposure breakdown (vault allocation slices, top 20 by USD notional). Empty when not applicable.")
+ __properties: ClassVar[List[str]] = ["id", "providerId", "type", "chainId", "address", "name", "symbol", "principalAsset", "positionAsset", "totalAssets", "liquidity", "apy", "performanceFee", "managementFee", "exposureType", "exposure"]
@field_validator('provider_id')
def provider_id_validate_enum(cls, value):
@@ -68,6 +69,16 @@ def type_validate_enum(cls, value):
raise ValueError("must be one of enum values ('VAULT', 'MARKET')")
return value
+ @field_validator('exposure_type')
+ def exposure_type_validate_enum(cls, value):
+ """Validates the enum"""
+ if value is None:
+ return value
+
+ if value not in set(['UNSPECIFIED', 'VAULT_ALLOCATION', 'MARKET_COLLATERAL']):
+ raise ValueError("must be one of enum values ('UNSPECIFIED', 'VAULT_ALLOCATION', 'MARKET_COLLATERAL')")
+ return value
+
model_config = ConfigDict(
populate_by_name=True,
validate_assignment=True,
@@ -149,6 +160,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"apy": Apy.from_dict(obj["apy"]) if obj.get("apy") is not None else None,
"performanceFee": obj.get("performanceFee"),
"managementFee": obj.get("managementFee"),
+ "exposureType": obj.get("exposureType"),
"exposure": [Exposure.from_dict(_item) for _item in obj["exposure"]] if obj.get("exposure") is not None else None
})
return _obj
diff --git a/fireblocks/models/participants_identification_policy.py b/fireblocks/models/participants_identification_policy.py
index 448707de..71b4a236 100644
--- a/fireblocks/models/participants_identification_policy.py
+++ b/fireblocks/models/participants_identification_policy.py
@@ -20,20 +20,17 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
-from typing_extensions import Annotated
from fireblocks.models.identification_policy_override import IdentificationPolicyOverride
-from fireblocks.models.participants_identification_supported_endpoint import ParticipantsIdentificationSupportedEndpoint
from typing import Optional, Set
from typing_extensions import Self
class ParticipantsIdentificationPolicy(BaseModel):
"""
- When present on a provider manifest, specifies KYC/AML identification requirements as JSON Schemas and which flows in `supportedEndpoints` may require `participantsIdentification`. Only endpoints listed in `supportedEndpoints` are in scope for this policy. `defaultSchema` is the baseline; `overrides` refine it by `asset`, `rail`, and/or `flowDirection` (see priority below). The most specific matching override applies its `schema` for that request context: it may fully replace `defaultSchema`, or partially override it—when the override `schema` is not provided as a complete standalone definition, fields and rules omitted there continue to follow `defaultSchema`. If this object is omitted from the manifest, the provider imposes no PII requirements through this policy. FirstParty participants are always exempt. Resolution: from overrides that match the request context, choose the most specific (most dimensions matched); break ties by earlier position in the `overrides` array; if none match, use `defaultSchema`. Priority (highest precedence first): 1. asset + rail + flowDirection 2. Any two dimensions: asset+rail, asset+flowDirection, rail+flowDirection 3. Any single dimension: asset, rail, or flowDirection 4. defaultSchema (no override matches)
+ When present on a provider manifest, specifies KYC/AML identification requirements as JSON Schemas. `defaultSchema` is the baseline; `overrides` refine it by `asset`, `rail`, and/or `flowDirection` (see priority below). The most specific matching override applies its `schema` for that request context: it may fully replace `defaultSchema`, or partially override it—when the override `schema` is not provided as a complete standalone definition, fields and rules omitted there continue to follow `defaultSchema`. If this object is omitted from the manifest, the provider imposes no PII requirements through this policy. FirstParty participants are always exempt. Resolution: from overrides that match the request context, choose the most specific (most dimensions matched); break ties by earlier position in the `overrides` array; if none match, use `defaultSchema`. Priority (highest precedence first): 1. asset + rail + flowDirection 2. Any two dimensions: asset+rail, asset+flowDirection, rail+flowDirection 3. Any single dimension: asset, rail, or flowDirection 4. defaultSchema (no override matches)
""" # noqa: E501
- supported_endpoints: Annotated[List[ParticipantsIdentificationSupportedEndpoint], Field(min_length=1)] = Field(description="API endpoints in scope for this participants identification policy. Values `ORDER`, `QUOTE`, and `RATE` correspond to manifest `order`, `quote`, and `rate` flows. Client requests to those endpoints may need to include `participantsIdentification` when the resolved schema requires it. ", alias="supportedEndpoints")
- default_schema: StrictStr = Field(description="A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest lists that endpoint in `participantsIdentificationPolicy.supportedEndpoints` (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). ", alias="defaultSchema")
+ default_schema: StrictStr = Field(description="A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where the provider manifest declares a `participantsIdentificationPolicy` for that endpoint (e.g. POST /orders). Defines which fields from originator and/or beneficiary are required. The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) and BUSINESS (BusinessIdentification) entity types for each participant. For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc. For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc. If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum. The string content is expected to be valid JSON (application/json). ", alias="defaultSchema")
overrides: Optional[List[IdentificationPolicyOverride]] = Field(default=None, description="Contextual overrides scoped by asset, rail, and/or flowDirection. Most specific match wins; ties broken by array order. Replaces the default partially. Each override MUST include at least one of `asset`, `rail`, or `flowDirection` (not `schema` alone); see IdentificationPolicyOverride. ")
- __properties: ClassVar[List[str]] = ["supportedEndpoints", "defaultSchema", "overrides"]
+ __properties: ClassVar[List[str]] = ["defaultSchema", "overrides"]
model_config = ConfigDict(
populate_by_name=True,
@@ -93,7 +90,6 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
return cls.model_validate(obj)
_obj = cls.model_validate({
- "supportedEndpoints": obj.get("supportedEndpoints"),
"defaultSchema": obj.get("defaultSchema"),
"overrides": [IdentificationPolicyOverride.from_dict(_item) for _item in obj["overrides"]] if obj.get("overrides") is not None else None
})
diff --git a/fireblocks/models/payid_address.py b/fireblocks/models/payid_address.py
index 0c8e8aa3..5d3975ed 100644
--- a/fireblocks/models/payid_address.py
+++ b/fireblocks/models/payid_address.py
@@ -32,7 +32,7 @@ class PayidAddress(BaseModel):
value: StrictStr = Field(description="The PayID identifier (email, phone, ABN, or organization ID)")
type: StrictStr = Field(description="The type of PayID being used")
bsb: Optional[StrictStr] = Field(default=None, description="Bank State Branch (BSB) number (6 digits, format XXX-XXX)")
- account_number: StrictStr = Field(description="Australian bank account number", alias="accountNumber")
+ account_number: Optional[StrictStr] = Field(default=None, description="Australian bank account number", alias="accountNumber")
__properties: ClassVar[List[str]] = ["accountHolder", "value", "type", "bsb", "accountNumber"]
@field_validator('type')
diff --git a/fireblocks/models/payid_payment_info.py b/fireblocks/models/payid_payment_info.py
index 67aebc48..d08c9878 100644
--- a/fireblocks/models/payid_payment_info.py
+++ b/fireblocks/models/payid_payment_info.py
@@ -19,7 +19,7 @@
import json
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
-from typing import Any, ClassVar, Dict, List, Optional
+from typing import Any, ClassVar, Dict, List
from typing import Optional, Set
from typing_extensions import Self
@@ -34,7 +34,7 @@ class PayidPaymentInfo(BaseModel):
country: StrictStr = Field(description="The country for the transfer (ISO 3166-1 alpha-2 code)")
value: StrictStr = Field(description="The PayID identifier (email, phone, ABN, or organization ID)")
type: StrictStr = Field(description="The type of PayID being used")
- bsb: Optional[StrictStr] = Field(default=None, description="Bank State Branch (BSB) number (6 digits, format XXX-XXX)")
+ bsb: StrictStr = Field(description="Bank State Branch (BSB) number (6 digits, format XXX-XXX)")
account_number: StrictStr = Field(description="Australian bank account number", alias="accountNumber")
__properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "country", "value", "type", "bsb", "accountNumber"]
diff --git a/fireblocks/models/policy_metadata.py b/fireblocks/models/policy_metadata_entry.py
similarity index 88%
rename from fireblocks/models/policy_metadata.py
rename to fireblocks/models/policy_metadata_entry.py
index f20288a9..1831d7ca 100644
--- a/fireblocks/models/policy_metadata.py
+++ b/fireblocks/models/policy_metadata_entry.py
@@ -20,20 +20,18 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
-from fireblocks.models.policy_type import PolicyType
from typing import Optional, Set
from typing_extensions import Self
-class PolicyMetadata(BaseModel):
+class PolicyMetadataEntry(BaseModel):
"""
- Policy metadata
+ Policy metadata entry (per policy type)
""" # noqa: E501
edited_by: Optional[StrictStr] = Field(default=None, description="The user ID of the user who last edited the policy", alias="editedBy")
edited_at: Optional[StrictStr] = Field(default=None, description="The timestamp of the last edit of the policy", alias="editedAt")
published_by: Optional[StrictStr] = Field(default=None, description="The user ID of the user who last published the policy", alias="publishedBy")
published_at: Optional[StrictStr] = Field(default=None, description="The timestamp of the last publish of the policy", alias="publishedAt")
- policy_type: PolicyType = Field(alias="policyType")
- __properties: ClassVar[List[str]] = ["editedBy", "editedAt", "publishedBy", "publishedAt", "policyType"]
+ __properties: ClassVar[List[str]] = ["editedBy", "editedAt", "publishedBy", "publishedAt"]
model_config = ConfigDict(
populate_by_name=True,
@@ -53,7 +51,7 @@ def to_json(self) -> str:
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
- """Create an instance of PolicyMetadata from a JSON string"""
+ """Create an instance of PolicyMetadataEntry from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@@ -78,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 PolicyMetadata from a dict"""
+ """Create an instance of PolicyMetadataEntry from a dict"""
if obj is None:
return None
@@ -89,8 +87,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"editedBy": obj.get("editedBy"),
"editedAt": obj.get("editedAt"),
"publishedBy": obj.get("publishedBy"),
- "publishedAt": obj.get("publishedAt"),
- "policyType": obj.get("policyType")
+ "publishedAt": obj.get("publishedAt")
})
return _obj
diff --git a/fireblocks/models/policy_response.py b/fireblocks/models/policy_response.py
index 8bdaf204..d31f1c22 100644
--- a/fireblocks/models/policy_response.py
+++ b/fireblocks/models/policy_response.py
@@ -20,7 +20,7 @@
from pydantic import BaseModel, ConfigDict, Field
from typing import Any, ClassVar, Dict, List
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
from fireblocks.models.policy_rule import PolicyRule
from typing import Optional, Set
from typing_extensions import Self
@@ -30,7 +30,7 @@ class PolicyResponse(BaseModel):
Response object for policy operations
""" # noqa: E501
rules: List[PolicyRule] = Field(description="A set of policy rules")
- metadata: PolicyMetadata
+ metadata: Dict[str, PolicyMetadataEntry] = Field(description="Policy metadata keyed by policy type")
__properties: ClassVar[List[str]] = ["rules", "metadata"]
model_config = ConfigDict(
@@ -79,9 +79,13 @@ def to_dict(self) -> Dict[str, Any]:
if _item_rules:
_items.append(_item_rules.to_dict())
_dict['rules'] = _items
- # override the default output from pydantic by calling `to_dict()` of metadata
+ # override the default output from pydantic by calling `to_dict()` of each value in metadata (dict)
+ _field_dict = {}
if self.metadata:
- _dict['metadata'] = self.metadata.to_dict()
+ for _key_metadata in self.metadata:
+ if self.metadata[_key_metadata]:
+ _field_dict[_key_metadata] = self.metadata[_key_metadata].to_dict()
+ _dict['metadata'] = _field_dict
return _dict
@classmethod
@@ -95,7 +99,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"rules": [PolicyRule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None,
- "metadata": PolicyMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None
+ "metadata": dict(
+ (_k, PolicyMetadataEntry.from_dict(_v))
+ for _k, _v in obj["metadata"].items()
+ )
+ if obj.get("metadata") is not None
+ else None
})
return _obj
diff --git a/fireblocks/models/position2.py b/fireblocks/models/position2.py
index c9b42549..15f6402a 100644
--- a/fireblocks/models/position2.py
+++ b/fireblocks/models/position2.py
@@ -27,31 +27,29 @@ class Position2(BaseModel):
"""
Position2
""" # noqa: E501
- id: Optional[StrictStr] = Field(default=None, description="Position UUID.")
- status: Optional[StrictStr] = Field(default=None, description="Lifecycle status of the position.")
- in_flight: Optional[StrictBool] = Field(default=None, description="True while an action is in progress for this position.", alias="inFlight")
- position_type: Optional[StrictStr] = Field(default=None, description="Whether the position is lend- or borrow-side.", alias="positionType")
- vault_account_id: Optional[StrictStr] = Field(default=None, description="Fireblocks vault account holding the position.", alias="vaultAccountId")
- opportunity_id: Optional[StrictStr] = Field(default=None, description="Opportunity / vault or market identifier.", alias="opportunityId")
- chain_id: Optional[StrictStr] = Field(default=None, description="Chain identifier as a string (e.g. \"1\").", alias="chainId")
- provider_id: Optional[StrictStr] = Field(default=None, description="Lending protocol.", alias="providerId")
- origin: Optional[StrictStr] = Field(default=None, description="Whether the position was opened natively in Fireblocks or imported externally.")
- principal_asset_id: Optional[StrictStr] = Field(default=None, description="Fireblocks asset id for the principal (underlying) asset.", alias="principalAssetId")
- position_asset_id: Optional[StrictStr] = Field(default=None, description="Fireblocks asset id for the position / share token.", alias="positionAssetId")
- principal_balance: Optional[StrictStr] = Field(default=None, description="Human-readable principal balance.", alias="principalBalance")
- position_balance: Optional[StrictStr] = Field(default=None, description="Human-readable position token balance.", alias="positionBalance")
- created_at: Optional[StrictStr] = Field(default=None, description="Creation time (ISO-8601).", alias="createdAt")
- updated_at: Optional[StrictStr] = Field(default=None, description="Last update time (ISO-8601).", alias="updatedAt")
+ id: StrictStr = Field(description="Position UUID.")
+ status: StrictStr = Field(description="Lifecycle status of the position.")
+ in_flight: StrictBool = Field(description="True while an action is in progress for this position.", alias="inFlight")
+ position_type: StrictStr = Field(description="Whether the position is lend- or borrow-side.", alias="positionType")
+ vault_account_id: StrictStr = Field(description="Fireblocks vault account holding the position.", alias="vaultAccountId")
+ opportunity_id: StrictStr = Field(description="Opportunity / vault or market identifier.", alias="opportunityId")
+ chain_id: StrictStr = Field(description="Chain identifier as a string (e.g. \"1\").", alias="chainId")
+ provider_id: StrictStr = Field(description="Lending protocol.", alias="providerId")
+ origin: StrictStr = Field(description="Whether the position was opened natively in Fireblocks or imported externally.")
+ principal_asset_id: StrictStr = Field(description="Fireblocks asset id for the principal (underlying) asset.", alias="principalAssetId")
+ position_asset_id: StrictStr = Field(description="Fireblocks asset id for the position / share token.", alias="positionAssetId")
+ principal_balance: StrictStr = Field(description="Human-readable principal balance.", alias="principalBalance")
+ position_balance: StrictStr = Field(description="Human-readable position token balance.", alias="positionBalance")
+ created_at: StrictStr = Field(description="Creation time (ISO-8601).", alias="createdAt")
+ updated_at: StrictStr = Field(description="Last update time (ISO-8601).", alias="updatedAt")
last_synced_at: Optional[StrictStr] = Field(default=None, description="Last successful on-chain sync time (ISO-8601).", alias="lastSyncedAt")
- available_actions: Optional[List[StrictStr]] = Field(default=None, description="Actions the API allows next for this position.", alias="availableActions")
- __properties: ClassVar[List[str]] = ["id", "status", "inFlight", "positionType", "vaultAccountId", "opportunityId", "chainId", "providerId", "origin", "principalAssetId", "positionAssetId", "principalBalance", "positionBalance", "createdAt", "updatedAt", "lastSyncedAt", "availableActions"]
+ available_actions: List[StrictStr] = Field(description="Actions the API allows next for this position.", alias="availableActions")
+ var_yield: Optional[StrictStr] = Field(default=None, description="Accrued yield in principal token units (decimal string). Only present for Morpho positions.", alias="yield")
+ __properties: ClassVar[List[str]] = ["id", "status", "inFlight", "positionType", "vaultAccountId", "opportunityId", "chainId", "providerId", "origin", "principalAssetId", "positionAssetId", "principalBalance", "positionBalance", "createdAt", "updatedAt", "lastSyncedAt", "availableActions", "yield"]
@field_validator('status')
def status_validate_enum(cls, value):
"""Validates the enum"""
- if value is None:
- return value
-
if value not in set(['ACTIVE', 'INACTIVE']):
raise ValueError("must be one of enum values ('ACTIVE', 'INACTIVE')")
return value
@@ -59,9 +57,6 @@ def status_validate_enum(cls, value):
@field_validator('position_type')
def position_type_validate_enum(cls, value):
"""Validates the enum"""
- if value is None:
- return value
-
if value not in set(['LEND', 'BORROW']):
raise ValueError("must be one of enum values ('LEND', 'BORROW')")
return value
@@ -69,9 +64,6 @@ def position_type_validate_enum(cls, value):
@field_validator('provider_id')
def provider_id_validate_enum(cls, value):
"""Validates the enum"""
- if value is None:
- return value
-
if value not in set(['MORPHO', 'AAVE']):
raise ValueError("must be one of enum values ('MORPHO', 'AAVE')")
return value
@@ -79,9 +71,6 @@ def provider_id_validate_enum(cls, value):
@field_validator('origin')
def origin_validate_enum(cls, value):
"""Validates the enum"""
- if value is None:
- return value
-
if value not in set(['NATIVE', 'EXTERNAL']):
raise ValueError("must be one of enum values ('NATIVE', 'EXTERNAL')")
return value
@@ -89,9 +78,6 @@ def origin_validate_enum(cls, value):
@field_validator('available_actions')
def available_actions_validate_enum(cls, value):
"""Validates the enum"""
- if value is None:
- return value
-
for i in value:
if i not in set(['DEPOSIT', 'WITHDRAW']):
raise ValueError("each list item must be one of ('DEPOSIT', 'WITHDRAW')")
@@ -164,7 +150,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"createdAt": obj.get("createdAt"),
"updatedAt": obj.get("updatedAt"),
"lastSyncedAt": obj.get("lastSyncedAt"),
- "availableActions": obj.get("availableActions")
+ "availableActions": obj.get("availableActions"),
+ "yield": obj.get("yield")
})
return _obj
diff --git a/fireblocks/models/publish_result.py b/fireblocks/models/publish_result.py
index 78ff439b..9eb2abaf 100644
--- a/fireblocks/models/publish_result.py
+++ b/fireblocks/models/publish_result.py
@@ -21,7 +21,7 @@
from pydantic import BaseModel, ConfigDict, Field
from typing import Any, ClassVar, Dict, List
from fireblocks.models.policy_check_result import PolicyCheckResult
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
from fireblocks.models.policy_rule import PolicyRule
from fireblocks.models.policy_status import PolicyStatus
from typing import Optional, Set
@@ -34,7 +34,7 @@ class PublishResult(BaseModel):
status: PolicyStatus
rules: List[PolicyRule]
check_result: PolicyCheckResult = Field(alias="checkResult")
- metadata: PolicyMetadata
+ metadata: Dict[str, PolicyMetadataEntry] = Field(description="Policy metadata keyed by policy type")
__properties: ClassVar[List[str]] = ["status", "rules", "checkResult", "metadata"]
model_config = ConfigDict(
@@ -86,9 +86,13 @@ def to_dict(self) -> Dict[str, Any]:
# override the default output from pydantic by calling `to_dict()` of check_result
if self.check_result:
_dict['checkResult'] = self.check_result.to_dict()
- # override the default output from pydantic by calling `to_dict()` of metadata
+ # override the default output from pydantic by calling `to_dict()` of each value in metadata (dict)
+ _field_dict = {}
if self.metadata:
- _dict['metadata'] = self.metadata.to_dict()
+ for _key_metadata in self.metadata:
+ if self.metadata[_key_metadata]:
+ _field_dict[_key_metadata] = self.metadata[_key_metadata].to_dict()
+ _dict['metadata'] = _field_dict
return _dict
@classmethod
@@ -104,7 +108,12 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"status": obj.get("status"),
"rules": [PolicyRule.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None,
"checkResult": PolicyCheckResult.from_dict(obj["checkResult"]) if obj.get("checkResult") is not None else None,
- "metadata": PolicyMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None
+ "metadata": dict(
+ (_k, PolicyMetadataEntry.from_dict(_v))
+ for _k, _v in obj["metadata"].items()
+ )
+ if obj.get("metadata") is not None
+ else None
})
return _obj
diff --git a/fireblocks/models/report_conflict_response.py b/fireblocks/models/report_conflict_response.py
new file mode 100644
index 00000000..ac4d39c5
--- /dev/null
+++ b/fireblocks/models/report_conflict_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
+
+
+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
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ReportConflictResponse(BaseModel):
+ """
+ Returned when a report with the same type and filters is already being processed for your workspace
+ """ # noqa: E501
+ error_code: StrictInt = Field(description="Fireblocks error code for this conflict", alias="errorCode")
+ name: StrictStr = Field(description="Error name")
+ id: StrictStr = Field(description="The ID of the report currently being processed. Use this ID to poll for status.")
+ __properties: ClassVar[List[str]] = ["errorCode", "name", "id"]
+
+ 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 ReportConflictResponse 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 ReportConflictResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "errorCode": obj.get("errorCode"),
+ "name": obj.get("name"),
+ "id": obj.get("id")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/report_job.py b/fireblocks/models/report_job.py
new file mode 100644
index 00000000..2bf85bb8
--- /dev/null
+++ b/fireblocks/models/report_job.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, StrictInt, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.report_output_format import ReportOutputFormat
+from fireblocks.models.report_status import ReportStatus
+from fireblocks.models.report_type import ReportType
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ReportJob(BaseModel):
+ """
+ A report job. Optional fields are status-dependent: `completedAt`, `rowCount`, and `fileSizeBytes` are present only when `status` is `COMPLETED`; `failedAt` is present only when `status` is `FAILED`.
+ """ # noqa: E501
+ id: StrictStr = Field(description="Unique identifier of the report job")
+ status: ReportStatus
+ report_type: ReportType = Field(alias="reportType")
+ output_format: ReportOutputFormat = Field(alias="outputFormat")
+ compress: StrictBool = Field(description="Whether the output file is gzip-compressed")
+ requested_by_user_id: StrictStr = Field(description="ID of the user who requested the report", alias="requestedByUserId")
+ created_at: StrictInt = Field(description="Epoch milliseconds (UTC) when the job was created", alias="createdAt")
+ completed_at: Optional[StrictInt] = Field(default=None, description="Epoch milliseconds (UTC) when the report completed. Only present when `status` is `COMPLETED`.", alias="completedAt")
+ failed_at: Optional[StrictInt] = Field(default=None, description="Epoch milliseconds (UTC) when the report failed. Only present when `status` is `FAILED`.", alias="failedAt")
+ row_count: Optional[StrictInt] = Field(default=None, description="Number of rows in the report file. Only present when `status` is `COMPLETED`.", alias="rowCount")
+ file_size_bytes: Optional[StrictInt] = Field(default=None, description="Size of the report file in bytes (includes compression when `compress` is `true`). Only present when `status` is `COMPLETED`.", alias="fileSizeBytes")
+ __properties: ClassVar[List[str]] = ["id", "status", "reportType", "outputFormat", "compress", "requestedByUserId", "createdAt", "completedAt", "failedAt", "rowCount", "fileSizeBytes"]
+
+ 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 ReportJob 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 ReportJob 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"),
+ "status": obj.get("status"),
+ "reportType": obj.get("reportType"),
+ "outputFormat": obj.get("outputFormat"),
+ "compress": obj.get("compress"),
+ "requestedByUserId": obj.get("requestedByUserId"),
+ "createdAt": obj.get("createdAt"),
+ "completedAt": obj.get("completedAt"),
+ "failedAt": obj.get("failedAt"),
+ "rowCount": obj.get("rowCount"),
+ "fileSizeBytes": obj.get("fileSizeBytes")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/report_job_links.py b/fireblocks/models/report_job_links.py
new file mode 100644
index 00000000..5abd0dc5
--- /dev/null
+++ b/fireblocks/models/report_job_links.py
@@ -0,0 +1,90 @@
+# 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
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ReportJobLinks(BaseModel):
+ """
+ Download URL for the report. Present only when `status` is `COMPLETED`, and only on `GET /v1/reports/{reportId}` — not included in list responses.
+ """ # noqa: E501
+ download_url: StrictStr = Field(description="URL to download the report file. A new URL is generated on each request to `GET /v1/reports/{reportId}` while `status` is `COMPLETED`. Re-poll to obtain a fresh URL after the previous one expires (approximately 1 hour).", alias="downloadUrl")
+ download_url_expires_at: StrictInt = Field(description="Epoch milliseconds (UTC) when the download URL expires", alias="downloadUrlExpiresAt")
+ __properties: ClassVar[List[str]] = ["downloadUrl", "downloadUrlExpiresAt"]
+
+ 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 ReportJobLinks 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 ReportJobLinks from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "downloadUrl": obj.get("downloadUrl"),
+ "downloadUrlExpiresAt": obj.get("downloadUrlExpiresAt")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/report_job_response.py b/fireblocks/models/report_job_response.py
new file mode 100644
index 00000000..54052d46
--- /dev/null
+++ b/fireblocks/models/report_job_response.py
@@ -0,0 +1,117 @@
+# 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, StrictInt, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from fireblocks.models.report_job_links import ReportJobLinks
+from fireblocks.models.report_output_format import ReportOutputFormat
+from fireblocks.models.report_status import ReportStatus
+from fireblocks.models.report_type import ReportType
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ReportJobResponse(BaseModel):
+ """
+ A report job. Optional fields are status-dependent: `completedAt`, `rowCount`, `fileSizeBytes`, and `links` are present only when `status` is `COMPLETED`; `failedAt` is present only when `status` is `FAILED`.
+ """ # noqa: E501
+ id: StrictStr = Field(description="Unique identifier of the report job")
+ status: ReportStatus
+ report_type: ReportType = Field(alias="reportType")
+ output_format: ReportOutputFormat = Field(alias="outputFormat")
+ compress: StrictBool = Field(description="Whether the output file is gzip-compressed")
+ requested_by_user_id: StrictStr = Field(description="ID of the user who requested the report", alias="requestedByUserId")
+ created_at: StrictInt = Field(description="Epoch milliseconds (UTC) when the job was created", alias="createdAt")
+ completed_at: Optional[StrictInt] = Field(default=None, description="Epoch milliseconds (UTC) when the report completed. Only present when `status` is `COMPLETED`.", alias="completedAt")
+ failed_at: Optional[StrictInt] = Field(default=None, description="Epoch milliseconds (UTC) when the report failed. Only present when `status` is `FAILED`.", alias="failedAt")
+ row_count: Optional[StrictInt] = Field(default=None, description="Number of rows in the report file. Only present when `status` is `COMPLETED`.", alias="rowCount")
+ file_size_bytes: Optional[StrictInt] = Field(default=None, description="Size of the report file in bytes (includes compression when `compress` is `true`). Only present when `status` is `COMPLETED`.", alias="fileSizeBytes")
+ links: Optional[ReportJobLinks] = None
+ __properties: ClassVar[List[str]] = ["id", "status", "reportType", "outputFormat", "compress", "requestedByUserId", "createdAt", "completedAt", "failedAt", "rowCount", "fileSizeBytes", "links"]
+
+ 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 ReportJobResponse 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 links
+ if self.links:
+ _dict['links'] = self.links.to_dict()
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ReportJobResponse 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"),
+ "status": obj.get("status"),
+ "reportType": obj.get("reportType"),
+ "outputFormat": obj.get("outputFormat"),
+ "compress": obj.get("compress"),
+ "requestedByUserId": obj.get("requestedByUserId"),
+ "createdAt": obj.get("createdAt"),
+ "completedAt": obj.get("completedAt"),
+ "failedAt": obj.get("failedAt"),
+ "rowCount": obj.get("rowCount"),
+ "fileSizeBytes": obj.get("fileSizeBytes"),
+ "links": ReportJobLinks.from_dict(obj["links"]) if obj.get("links") is not None else None
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/report_list_response.py b/fireblocks/models/report_list_response.py
new file mode 100644
index 00000000..14ef0d0a
--- /dev/null
+++ b/fireblocks/models/report_list_response.py
@@ -0,0 +1,110 @@
+# 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.report_job import ReportJob
+from typing import Optional, Set
+from typing_extensions import Self
+
+class ReportListResponse(BaseModel):
+ """
+ Paginated list of report jobs. Download URLs are not included in list items — call `GET /v1/reports/{reportId}` to retrieve the download URL for a specific completed report.
+ """ # noqa: E501
+ data: List[ReportJob] = Field(description="Page of report jobs")
+ next: Optional[StrictStr] = Field(description="Opaque cursor for the next page. Null on the last page.")
+ prev: Optional[StrictStr] = Field(description="Opaque cursor for the previous page. Null on the first page.")
+ __properties: ClassVar[List[str]] = ["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 ReportListResponse 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
+
+ # set to None if prev (nullable) is None
+ # and model_fields_set contains the field
+ if self.prev is None and "prev" in self.model_fields_set:
+ _dict['prev'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of ReportListResponse from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "data": [ReportJob.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/participants_identification_supported_endpoint.py b/fireblocks/models/report_output_format.py
similarity index 66%
rename from fireblocks/models/participants_identification_supported_endpoint.py
rename to fireblocks/models/report_output_format.py
index 6dc64ead..32e1b1da 100644
--- a/fireblocks/models/participants_identification_supported_endpoint.py
+++ b/fireblocks/models/report_output_format.py
@@ -19,21 +19,19 @@
from typing_extensions import Self
-class ParticipantsIdentificationSupportedEndpoint(str, Enum):
+class ReportOutputFormat(str, Enum):
"""
- Trading API endpoint category where `participantsIdentification` may be required when this policy is present. Corresponds to manifest `order`, `quote`, and `rate`: ORDER, QUOTE, and RATE respectively.
+ The output file format of the report
"""
"""
allowed enum values
"""
- ORDER = 'ORDER'
- QUOTE = 'QUOTE'
- RATE = 'RATE'
+ CSV = 'CSV'
@classmethod
def from_json(cls, json_str: str) -> Self:
- """Create an instance of ParticipantsIdentificationSupportedEndpoint from a JSON string"""
+ """Create an instance of ReportOutputFormat from a JSON string"""
return cls(json.loads(json_str))
diff --git a/fireblocks/models/report_status.py b/fireblocks/models/report_status.py
new file mode 100644
index 00000000..255552b5
--- /dev/null
+++ b/fireblocks/models/report_status.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 ReportStatus(str, Enum):
+ """
+ The current lifecycle state of a report job
+ """
+
+ """
+ allowed enum values
+ """
+ QUEUED = 'QUEUED'
+ PROCESSING = 'PROCESSING'
+ COMPLETED = 'COMPLETED'
+ FAILED = 'FAILED'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ReportStatus from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/report_type.py b/fireblocks/models/report_type.py
new file mode 100644
index 00000000..b2e3d2f9
--- /dev/null
+++ b/fireblocks/models/report_type.py
@@ -0,0 +1,37 @@
+# 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 ReportType(str, Enum):
+ """
+ The type of report to generate
+ """
+
+ """
+ allowed enum values
+ """
+ ADDRESSES = 'ADDRESSES'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Self:
+ """Create an instance of ReportType from a JSON string"""
+ return cls(json.loads(json_str))
+
+
diff --git a/fireblocks/models/sepa_payment_info.py b/fireblocks/models/sepa_payment_info.py
index 9437235a..a7635162 100644
--- a/fireblocks/models/sepa_payment_info.py
+++ b/fireblocks/models/sepa_payment_info.py
@@ -32,6 +32,8 @@ class SepaPaymentInfo(BaseModel):
account_holder_given_name: StrictStr = Field(description="The given name (first name) of the account holder", alias="accountHolderGivenName")
account_holder_surname: StrictStr = Field(description="The surname (last name) of the account holder", alias="accountHolderSurname")
account_holder_country: Optional[StrictStr] = Field(default=None, description="The country where the account holder resides (ISO 3166-1 alpha-2 code)", alias="accountHolderCountry")
+ account_holder_postal_code: Optional[StrictStr] = Field(default=None, description="The postal code of the account holder's address", alias="accountHolderPostalCode")
+ account_holder_city: Optional[StrictStr] = Field(default=None, description="The city where the account holder resides", alias="accountHolderCity")
account_holder_address: Optional[StrictStr] = Field(default=None, description="The address of the account holder", alias="accountHolderAddress")
iban: StrictStr = Field(description="The International Bank Account Number (IBAN)")
country: StrictStr = Field(description="The country for the transfer (ISO 3166-1 alpha-2 code)")
@@ -41,7 +43,7 @@ class SepaPaymentInfo(BaseModel):
bank_address: Optional[StrictStr] = Field(default=None, description="The address of the bank", alias="bankAddress")
purpose_code: Optional[StrictStr] = Field(default=None, description="The purpose code for the transfer", alias="purposeCode")
tax_id: Optional[StrictStr] = Field(default=None, description="The tax identification number", alias="taxId")
- __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "accountHolderCountry", "accountHolderAddress", "iban", "country", "bic", "bankName", "bankBranch", "bankAddress", "purposeCode", "taxId"]
+ __properties: ClassVar[List[str]] = ["rail", "addressingSystem", "accountHolderGivenName", "accountHolderSurname", "accountHolderCountry", "accountHolderPostalCode", "accountHolderCity", "accountHolderAddress", "iban", "country", "bic", "bankName", "bankBranch", "bankAddress", "purposeCode", "taxId"]
@field_validator('rail')
def rail_validate_enum(cls, value):
@@ -113,6 +115,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"accountHolderGivenName": obj.get("accountHolderGivenName"),
"accountHolderSurname": obj.get("accountHolderSurname"),
"accountHolderCountry": obj.get("accountHolderCountry"),
+ "accountHolderPostalCode": obj.get("accountHolderPostalCode"),
+ "accountHolderCity": obj.get("accountHolderCity"),
"accountHolderAddress": obj.get("accountHolderAddress"),
"iban": obj.get("iban"),
"country": obj.get("country"),
diff --git a/fireblocks/models/solana_blockchain_data.py b/fireblocks/models/solana_blockchain_data.py
index 0e8cb242..28595881 100644
--- a/fireblocks/models/solana_blockchain_data.py
+++ b/fireblocks/models/solana_blockchain_data.py
@@ -19,7 +19,8 @@
import json
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
-from typing import Any, ClassVar, Dict, List, Union
+from typing import Any, ClassVar, Dict, List, Optional, Union
+from fireblocks.models.solana_rewards_breakdown import SolanaRewardsBreakdown
from typing import Optional, Set
from typing_extensions import Self
@@ -29,7 +30,8 @@ class SolanaBlockchainData(BaseModel):
""" # noqa: E501
stake_account_address: StrictStr = Field(description="The stake account address matching the stakeAccountId.", alias="stakeAccountAddress")
stake_account_derivation_change_value: Union[StrictFloat, StrictInt] = Field(description="The value of the change level in the BIP32 path which was used to derive the stake account address.", alias="stakeAccountDerivationChangeValue")
- __properties: ClassVar[List[str]] = ["stakeAccountAddress", "stakeAccountDerivationChangeValue"]
+ rewards_breakdown: Optional[SolanaRewardsBreakdown] = Field(default=None, alias="rewardsBreakdown")
+ __properties: ClassVar[List[str]] = ["stakeAccountAddress", "stakeAccountDerivationChangeValue", "rewardsBreakdown"]
model_config = ConfigDict(
populate_by_name=True,
@@ -70,6 +72,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 rewards_breakdown
+ if self.rewards_breakdown:
+ _dict['rewardsBreakdown'] = self.rewards_breakdown.to_dict()
return _dict
@classmethod
@@ -83,7 +88,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"stakeAccountAddress": obj.get("stakeAccountAddress"),
- "stakeAccountDerivationChangeValue": obj.get("stakeAccountDerivationChangeValue")
+ "stakeAccountDerivationChangeValue": obj.get("stakeAccountDerivationChangeValue"),
+ "rewardsBreakdown": SolanaRewardsBreakdown.from_dict(obj["rewardsBreakdown"]) if obj.get("rewardsBreakdown") is not None else None
})
return _obj
diff --git a/fireblocks/models/solana_rewards_breakdown.py b/fireblocks/models/solana_rewards_breakdown.py
new file mode 100644
index 00000000..8e53e514
--- /dev/null
+++ b/fireblocks/models/solana_rewards_breakdown.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 datetime import datetime
+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 SolanaRewardsBreakdown(BaseModel):
+ """
+ A breakdown of the staking rewards earned by the position.
+ """ # noqa: E501
+ issuance: StrictStr = Field(description="The issuance reward amount earned by the position, measured in the staked asset unit.")
+ mev: StrictStr = Field(description="The MEV reward amount earned by the position, measured in the staked asset unit.")
+ last_reward_synced_at: datetime = Field(description="The last time the rewards were synced (ISO Date).", alias="lastRewardSyncedAt")
+ __properties: ClassVar[List[str]] = ["issuance", "mev", "lastRewardSyncedAt"]
+
+ 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 SolanaRewardsBreakdown 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 SolanaRewardsBreakdown from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate({
+ "issuance": obj.get("issuance"),
+ "mev": obj.get("mev"),
+ "lastRewardSyncedAt": obj.get("lastRewardSyncedAt")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/source_of_funds.py b/fireblocks/models/source_of_funds.py
index c79be68c..b9ddf93a 100644
--- a/fireblocks/models/source_of_funds.py
+++ b/fireblocks/models/source_of_funds.py
@@ -26,7 +26,7 @@
class SourceOfFunds(BaseModel):
"""
- Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting (e.g. CPN cross-border payments).
+ Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required.
""" # noqa: E501
reason_for_payment: Optional[ReasonForPaymentEnum] = Field(default=None, alias="reasonForPayment")
__properties: ClassVar[List[str]] = ["reasonForPayment"]
diff --git a/fireblocks/models/source_transfer_peer_path_response.py b/fireblocks/models/source_transfer_peer_path_response.py
index c7618a12..a6a17c82 100644
--- a/fireblocks/models/source_transfer_peer_path_response.py
+++ b/fireblocks/models/source_transfer_peer_path_response.py
@@ -20,6 +20,8 @@
from pydantic import BaseModel, ConfigDict, Field, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
+from typing_extensions import Annotated
+from fireblocks.models.transaction_tag import TransactionTag
from fireblocks.models.transfer_peer_path_type import TransferPeerPathType
from typing import Optional, Set
from typing_extensions import Self
@@ -34,7 +36,8 @@ class SourceTransferPeerPathResponse(BaseModel):
name: Optional[StrictStr] = Field(default=None, description="The name of the peer.")
wallet_id: Optional[StrictStr] = Field(default=None, alias="walletId")
trading_account: Optional[StrictStr] = Field(default=None, description="If this transaction is an exchange internal transfer, this field will be populated with the type of that trading account.", alias="tradingAccount")
- __properties: ClassVar[List[str]] = ["type", "subType", "id", "name", "walletId", "tradingAccount"]
+ tags: Optional[Annotated[List[TransactionTag], Field(min_length=1, max_length=20)]] = Field(default=None, description="Tags associated with the transaction's source.")
+ __properties: ClassVar[List[str]] = ["type", "subType", "id", "name", "walletId", "tradingAccount", "tags"]
model_config = ConfigDict(
populate_by_name=True,
@@ -75,6 +78,13 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
+ # override the default output from pydantic by calling `to_dict()` of each item in tags (list)
+ _items = []
+ if self.tags:
+ for _item_tags in self.tags:
+ if _item_tags:
+ _items.append(_item_tags.to_dict())
+ _dict['tags'] = _items
# set to None if id (nullable) is None
# and model_fields_set contains the field
if self.id is None and "id" in self.model_fields_set:
@@ -102,7 +112,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"id": obj.get("id"),
"name": obj.get("name"),
"walletId": obj.get("walletId"),
- "tradingAccount": obj.get("tradingAccount")
+ "tradingAccount": obj.get("tradingAccount"),
+ "tags": [TransactionTag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None
})
return _obj
diff --git a/fireblocks/models/transaction_tag.py b/fireblocks/models/transaction_tag.py
new file mode 100644
index 00000000..804e53d3
--- /dev/null
+++ b/fireblocks/models/transaction_tag.py
@@ -0,0 +1,90 @@
+# 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 TransactionTag(BaseModel):
+ """
+ TransactionTag
+ """ # noqa: E501
+ id: StrictStr = Field(description="The unique identifier of the tag")
+ label: StrictStr = Field(description="The tag label")
+ __properties: ClassVar[List[str]] = ["id", "label"]
+
+ 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 TransactionTag 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 TransactionTag 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"),
+ "label": obj.get("label")
+ })
+ return _obj
+
+
diff --git a/fireblocks/models/utxo_identifier.py b/fireblocks/models/utxo_identifier.py
index 1ef3d617..58636ad9 100644
--- a/fireblocks/models/utxo_identifier.py
+++ b/fireblocks/models/utxo_identifier.py
@@ -25,12 +25,12 @@
class UtxoIdentifier(BaseModel):
"""
- Identifies a UTXO by either a Fireblocks transaction ID (targets all outputs of that transaction) or a specific on-chain UTXO (txHash + vout). Exactly one of these two forms must be provided.
+ Identifies a UTXO by either a Fireblocks transaction ID (targets all outputs of that transaction) or a specific on-chain UTXO (txHash + index). Exactly one of these two forms must be provided.
""" # noqa: E501
tx_id: Optional[StrictStr] = Field(default=None, description="Fireblocks transaction ID", alias="txId")
tx_hash: Optional[StrictStr] = Field(default=None, description="On-chain transaction hash", alias="txHash")
- vout: Optional[StrictInt] = Field(default=None, description="Output index")
- __properties: ClassVar[List[str]] = ["txId", "txHash", "vout"]
+ index: Optional[StrictInt] = Field(default=None, description="Output index (vout)")
+ __properties: ClassVar[List[str]] = ["txId", "txHash", "index"]
model_config = ConfigDict(
populate_by_name=True,
@@ -85,7 +85,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"txId": obj.get("txId"),
"txHash": obj.get("txHash"),
- "vout": obj.get("vout")
+ "index": obj.get("index")
})
return _obj
diff --git a/fireblocks/models/utxo_input.py b/fireblocks/models/utxo_input.py
index 99cdbd95..c83166ad 100644
--- a/fireblocks/models/utxo_input.py
+++ b/fireblocks/models/utxo_input.py
@@ -28,8 +28,8 @@ class UtxoInput(BaseModel):
UtxoInput
""" # noqa: E501
tx_hash: StrictStr = Field(alias="txHash")
- vout: StrictInt
- __properties: ClassVar[List[str]] = ["txHash", "vout"]
+ index: StrictInt = Field(description="The output index (vout)")
+ __properties: ClassVar[List[str]] = ["txHash", "index"]
model_config = ConfigDict(
populate_by_name=True,
@@ -83,7 +83,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
_obj = cls.model_validate({
"txHash": obj.get("txHash"),
- "vout": obj.get("vout")
+ "index": obj.get("index")
})
return _obj
diff --git a/fireblocks/models/utxo_input_selection.py b/fireblocks/models/utxo_input_selection.py
index 66dc1e76..4be398c7 100644
--- a/fireblocks/models/utxo_input_selection.py
+++ b/fireblocks/models/utxo_input_selection.py
@@ -28,7 +28,7 @@ class UtxoInputSelection(BaseModel):
"""
Explicitly control which UTXOs to include or exclude. This feature is currently in beta and might be subject to changes.
""" # noqa: E501
- inputs_to_spend: Optional[List[UtxoInput]] = Field(default=None, description="Force-include specific UTXOs by txHash and vout.", alias="inputsToSpend")
+ inputs_to_spend: Optional[List[UtxoInput]] = Field(default=None, description="Force-include specific UTXOs by txHash and index.", alias="inputsToSpend")
inputs_to_exclude: Optional[List[UtxoInput]] = Field(default=None, description="Exclude specific UTXOs from selection.", alias="inputsToExclude")
fill_fee_for_selected_inputs: Optional[StrictBool] = Field(default=None, description="When true and inputsToSpend is provided, automatically add more UTXOs to cover the transaction fee. Requires inputsToSpend. ", alias="fillFeeForSelectedInputs")
__properties: ClassVar[List[str]] = ["inputsToSpend", "inputsToExclude", "fillFeeForSelectedInputs"]
diff --git a/pyproject.toml b/pyproject.toml
index 61a2ada0..08a27f53 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "fireblocks"
-version = "21.0.0"
+version = "0.0.0"
description = "Fireblocks API"
authors = ["Fireblocks "]
license = "MIT License"
diff --git a/setup.py b/setup.py
index 12dfdd99..8e55f57b 100644
--- a/setup.py
+++ b/setup.py
@@ -23,7 +23,7 @@
# prerequisite: setuptools
# http://pypi.python.org/pypi/setuptools
NAME = "fireblocks"
-VERSION = "21.0.0"
+VERSION = "0.0.0"
PYTHON_REQUIRES = ">= 3.8"
REQUIRES = [
"urllib3 >= 2.1.0, < 3.0.0",
diff --git a/test/fireblocks/test_client.py b/test/fireblocks/test_client.py
index 5acccccd..c6983985 100644
--- a/test/fireblocks/test_client.py
+++ b/test/fireblocks/test_client.py
@@ -44,8 +44,9 @@
from fireblocks.api.off_exchanges_api import OffExchangesApi
from fireblocks.api.onchain_data_api import OnchainDataApi
from fireblocks.api.payments_payout_api import PaymentsPayoutApi
-from fireblocks.api.policy_editor_v2_beta_api import PolicyEditorV2BetaApi
+from fireblocks.api.policy_editor_v2_api import PolicyEditorV2Api
from fireblocks.api.policy_editor_beta_api import PolicyEditorBetaApi
+from fireblocks.api.reports_beta_api import ReportsBetaApi
from fireblocks.api.reset_device_api import ResetDeviceApi
from fireblocks.api.smart_transfer_api import SmartTransferApi
from fireblocks.api.staking_api import StakingApi
@@ -163,12 +164,15 @@ def test_get_onchain_data(fireblocks_instance):
def test_get_payments_payout(fireblocks_instance):
assert isinstance(fireblocks_instance.payments_payout, PaymentsPayoutApi)
-def test_get_policy_editor_v2_beta(fireblocks_instance):
- assert isinstance(fireblocks_instance.policy_editor_v2_beta, PolicyEditorV2BetaApi)
+def test_get_policy_editor_v2(fireblocks_instance):
+ assert isinstance(fireblocks_instance.policy_editor_v2, PolicyEditorV2Api)
def test_get_policy_editor_beta(fireblocks_instance):
assert isinstance(fireblocks_instance.policy_editor_beta, PolicyEditorBetaApi)
+def test_get_reports_beta(fireblocks_instance):
+ assert isinstance(fireblocks_instance.reports_beta, ReportsBetaApi)
+
def test_get_reset_device(fireblocks_instance):
assert isinstance(fireblocks_instance.reset_device, ResetDeviceApi)
diff --git a/test/test_account_based_access_provider.py b/test/test_account_based_access_provider.py
index bda87fc8..811c8875 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 = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
connected = True,
accounts = [
{"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"}
@@ -52,7 +52,7 @@ def make_instance(self, include_optional) -> AccountBasedAccessProvider:
id = '',
name = '',
account_based = True,
- manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
connected = True,
accounts = [
{"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"}
diff --git a/test/test_add_collateral_request_body.py b/test/test_add_collateral_request_body.py
index e7be0d82..d8d101ab 100644
--- a/test/test_add_collateral_request_body.py
+++ b/test/test_add_collateral_request_body.py
@@ -91,12 +91,12 @@ def make_instance(self, include_optional) -> AddCollateralRequestBody:
inputs_to_spend = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
inputs_to_exclude = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
fill_fee_for_selected_inputs = True, ), ),
customer_ref_id = 'abcdef',
diff --git a/test/test_additional_info_request_additional_info.py b/test/test_additional_info_request_additional_info.py
index ddf40311..b2e02947 100644
--- a/test/test_additional_info_request_additional_info.py
+++ b/test/test_additional_info_request_additional_info.py
@@ -41,12 +41,12 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
return AdditionalInfoRequestAdditionalInfo(
account_holder_given_name = 'John',
account_holder_surname = 'Smith',
- account_holder_city = 'New York',
- account_holder_country = 'FR',
+ account_holder_city = 'London',
+ account_holder_country = 'GB',
account_holder_address1 = '123 Wall Street',
account_holder_address2 = 'Suite 100',
account_holder_district = 'Manhattan',
- account_holder_postal_code = '10005',
+ account_holder_postal_code = 'SW1A 1AA',
iban = 'FR1420041010050500013M02606',
iban_city = 'London',
iban_country = 'GB',
@@ -100,10 +100,10 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
return AdditionalInfoRequestAdditionalInfo(
account_holder_given_name = 'John',
account_holder_surname = 'Smith',
- account_holder_city = 'New York',
- account_holder_country = 'FR',
+ account_holder_city = 'London',
+ account_holder_country = 'GB',
account_holder_address1 = '123 Wall Street',
- account_holder_postal_code = '10005',
+ account_holder_postal_code = 'SW1A 1AA',
iban = 'FR1420041010050500013M02606',
iban_city = 'London',
iban_country = 'GB',
@@ -135,6 +135,7 @@ def make_instance(self, include_optional) -> AdditionalInfoRequestAdditionalInfo
message = 'Please deposit the funds into the account',
value = 'john.williams@email.com',
type = 'EMAIL',
+ bsb = '123-456',
sort_code = '12-34-56',
bank_account_country = 'GB',
bank_account_holder_name = 'John Smith',
diff --git a/test/test_address_registry_legal_entity.py b/test/test_address_registry_legal_entity.py
index 22eb8df8..2b1962b1 100644
--- a/test/test_address_registry_legal_entity.py
+++ b/test/test_address_registry_legal_entity.py
@@ -37,7 +37,7 @@ def make_instance(self, include_optional) -> AddressRegistryLegalEntity:
model = AddressRegistryLegalEntity()
if include_optional:
return AddressRegistryLegalEntity(
- verified = True,
+ lei_data = True,
entity_name = 'ACME Corporation',
jurisdiction = 'US',
lei = '254900GC33RBE6FQA817',
@@ -46,7 +46,7 @@ def make_instance(self, include_optional) -> AddressRegistryLegalEntity:
)
else:
return AddressRegistryLegalEntity(
- verified = True,
+ lei_data = True,
entity_name = 'ACME Corporation',
jurisdiction = 'US',
lei = '254900GC33RBE6FQA817',
diff --git a/test/test_addresses_filters.py b/test/test_addresses_filters.py
new file mode 100644
index 00000000..096e729c
--- /dev/null
+++ b/test/test_addresses_filters.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.addresses_filters import AddressesFilters
+
+
+class TestAddressesFilters(unittest.TestCase):
+ """AddressesFilters unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> AddressesFilters:
+ """Test AddressesFilters
+ 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 `AddressesFilters`
+ """
+ model = AddressesFilters()
+ if include_optional:
+ return AddressesFilters(
+ vault_account_ids = ["1","2"],
+ assets = ["BTC","ETH"]
+ )
+ else:
+ return AddressesFilters(
+ )
+ """
+
+ def testAddressesFilters(self):
+ """Test AddressesFilters"""
+ # 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_allowlist_entry_response.py b/test/test_allowlist_entry_response.py
new file mode 100644
index 00000000..1be8e55a
--- /dev/null
+++ b/test/test_allowlist_entry_response.py
@@ -0,0 +1,78 @@
+# 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.allowlist_entry_response import AllowlistEntryResponse
+
+
+class TestAllowlistEntryResponse(unittest.TestCase):
+ """AllowlistEntryResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> AllowlistEntryResponse:
+ """Test AllowlistEntryResponse
+ 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 `AllowlistEntryResponse`
+ """
+ model = AllowlistEntryResponse()
+ if include_optional:
+ return AllowlistEntryResponse(
+ data = fireblocks.models.allowlist_entry.AllowlistEntry(
+ id = '550e8400-e29b-41d4-a716-446655440000',
+ address = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
+ assets = ["BTC","ETH"],
+ networks = ["ETHEREUM","POLYGON"],
+ label = 'Coinbase Hot Wallet',
+ address_identifier = '',
+ status = 'ACTIVE',
+ added_at = '2024-01-15T10:30Z',
+ provider_reference_id = 'CB-SAMPLE-001',
+ provider_metadata = {"coinbase_exchange_id":"1234567890"}, ),
+ metadata = fireblocks.models.allowlist_metadata.AllowlistMetadata(
+ last_synced_at = '2026-05-01T15:30Z',
+ sync_status = 'SUCCESS', )
+ )
+ else:
+ return AllowlistEntryResponse(
+ data = fireblocks.models.allowlist_entry.AllowlistEntry(
+ id = '550e8400-e29b-41d4-a716-446655440000',
+ address = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
+ assets = ["BTC","ETH"],
+ networks = ["ETHEREUM","POLYGON"],
+ label = 'Coinbase Hot Wallet',
+ address_identifier = '',
+ status = 'ACTIVE',
+ added_at = '2024-01-15T10:30Z',
+ provider_reference_id = 'CB-SAMPLE-001',
+ provider_metadata = {"coinbase_exchange_id":"1234567890"}, ),
+ )
+ """
+
+ def testAllowlistEntryResponse(self):
+ """Test AllowlistEntryResponse"""
+ # 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_api_user_api.py b/test/test_api_user_api.py
index 7bd454fd..b15643fc 100644
--- a/test/test_api_user_api.py
+++ b/test/test_api_user_api.py
@@ -41,6 +41,13 @@ def test_get_api_users(self) -> None:
"""
pass
+ def test_issue_api_user_pairing_token(self) -> None:
+ """Test case for issue_api_user_pairing_token
+
+ Issue API user pairing token
+ """
+ pass
+
if __name__ == "__main__":
unittest.main()
diff --git a/test/test_attach_detach_utxo_labels_request.py b/test/test_attach_detach_utxo_labels_request.py
index 79c0c80c..1388793d 100644
--- a/test/test_attach_detach_utxo_labels_request.py
+++ b/test/test_attach_detach_utxo_labels_request.py
@@ -43,7 +43,7 @@ def make_instance(self, include_optional) -> AttachDetachUtxoLabelsRequest:
fireblocks.models.utxo_identifier.UtxoIdentifier(
tx_id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850e',
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
labels_to_attach = ["cold-storage","vip"],
labels_to_detach = ["deprecated"]
@@ -54,7 +54,7 @@ def make_instance(self, include_optional) -> AttachDetachUtxoLabelsRequest:
fireblocks.models.utxo_identifier.UtxoIdentifier(
tx_id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850e',
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
)
"""
diff --git a/test/test_base_provider.py b/test/test_base_provider.py
index f5b16015..8b7121f7 100644
--- a/test/test_base_provider.py
+++ b/test/test_base_provider.py
@@ -41,14 +41,14 @@ def make_instance(self, include_optional) -> BaseProvider:
name = '',
logo = '',
account_based = True,
- manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}}
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"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},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
)
"""
diff --git a/test/test_chaps_payment_info.py b/test/test_chaps_payment_info.py
index fb8f4657..de2947fb 100644
--- a/test/test_chaps_payment_info.py
+++ b/test/test_chaps_payment_info.py
@@ -41,6 +41,9 @@ def make_instance(self, include_optional) -> ChapsPaymentInfo:
addressing_system = 'CHAPS',
account_holder_given_name = 'John',
account_holder_surname = 'Smith',
+ account_holder_city = 'London',
+ account_holder_country = 'GB',
+ account_holder_postal_code = 'SW1A 1AA',
country = 'GB',
sort_code = '12-34-56',
account_number = '12345678',
diff --git a/test/test_compliance_api.py b/test/test_compliance_api.py
index edc4cbb9..c6c9f8a4 100644
--- a/test/test_compliance_api.py
+++ b/test/test_compliance_api.py
@@ -83,6 +83,13 @@ def test_delete_counterparty_group(self) -> None:
"""
pass
+ def test_delete_legal_entity(self) -> None:
+ """Test case for delete_legal_entity
+
+ Delete a legal entity
+ """
+ pass
+
def test_get_address_registry_tenant_participation_status(self) -> None:
"""Test case for get_address_registry_tenant_participation_status
diff --git a/test/test_connected_account_error_response.py b/test/test_connected_account_error_response.py
index 35a7612b..176e4a2d 100644
--- a/test/test_connected_account_error_response.py
+++ b/test/test_connected_account_error_response.py
@@ -39,13 +39,15 @@ def make_instance(self, include_optional) -> ConnectedAccountErrorResponse:
model = ConnectedAccountErrorResponse()
if include_optional:
return ConnectedAccountErrorResponse(
+ message = 'Provider 'BINANCE' not found',
+ code = 3228,
error_message = 'Insufficient permissions to rename connected account',
error_code = 'INSUFFICIENT_PERMISSIONS'
)
else:
return ConnectedAccountErrorResponse(
- error_message = 'Insufficient permissions to rename connected account',
- error_code = 'INSUFFICIENT_PERMISSIONS',
+ message = 'Provider 'BINANCE' not found',
+ code = 3228,
)
"""
diff --git a/test/test_connected_accounts_beta_api.py b/test/test_connected_accounts_beta_api.py
index 3e9c03d1..d2643e0f 100644
--- a/test/test_connected_accounts_beta_api.py
+++ b/test/test_connected_accounts_beta_api.py
@@ -27,6 +27,13 @@ def setUp(self) -> None:
def tearDown(self) -> None:
pass
+ def test_create_connected_account(self) -> None:
+ """Test case for create_connected_account
+
+ Create a connected account
+ """
+ pass
+
def test_disconnect_connected_account(self) -> None:
"""Test case for disconnect_connected_account
diff --git a/test/test_create_addresses_report_request.py b/test/test_create_addresses_report_request.py
new file mode 100644
index 00000000..5827a2e1
--- /dev/null
+++ b/test/test_create_addresses_report_request.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.create_addresses_report_request import (
+ CreateAddressesReportRequest,
+)
+
+
+class TestCreateAddressesReportRequest(unittest.TestCase):
+ """CreateAddressesReportRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> CreateAddressesReportRequest:
+ """Test CreateAddressesReportRequest
+ 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 `CreateAddressesReportRequest`
+ """
+ model = CreateAddressesReportRequest()
+ if include_optional:
+ return CreateAddressesReportRequest(
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ compress = True,
+ filters = fireblocks.models.addresses_filters.AddressesFilters(
+ vault_account_ids = ["1","2"],
+ assets = ["BTC","ETH"], )
+ )
+ else:
+ return CreateAddressesReportRequest(
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ )
+ """
+
+ def testCreateAddressesReportRequest(self):
+ """Test CreateAddressesReportRequest"""
+ # 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_create_connected_account_request.py b/test/test_create_connected_account_request.py
new file mode 100644
index 00000000..0137027b
--- /dev/null
+++ b/test/test_create_connected_account_request.py
@@ -0,0 +1,65 @@
+# 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.create_connected_account_request import (
+ CreateConnectedAccountRequest,
+)
+
+
+class TestCreateConnectedAccountRequest(unittest.TestCase):
+ """CreateConnectedAccountRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> CreateConnectedAccountRequest:
+ """Test CreateConnectedAccountRequest
+ 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 `CreateConnectedAccountRequest`
+ """
+ model = CreateConnectedAccountRequest()
+ if include_optional:
+ return CreateConnectedAccountRequest(
+ provider_id = 'BINANCE',
+ display_name = 'My Binance Account',
+ creds = '[B@2d385fe1',
+ api_key = 'api_key_abc123',
+ main_account_id = 'acc-parent-001',
+ account_id = 'provider-acc-001',
+ on_premise_server_id = 'on-prem-server-001'
+ )
+ else:
+ return CreateConnectedAccountRequest(
+ provider_id = 'BINANCE',
+ creds = '[B@2d385fe1',
+ api_key = 'api_key_abc123',
+ )
+ """
+
+ def testCreateConnectedAccountRequest(self):
+ """Test CreateConnectedAccountRequest"""
+ # 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_create_connected_account_response.py b/test/test_create_connected_account_response.py
new file mode 100644
index 00000000..acc40318
--- /dev/null
+++ b/test/test_create_connected_account_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.create_connected_account_response import (
+ CreateConnectedAccountResponse,
+)
+
+
+class TestCreateConnectedAccountResponse(unittest.TestCase):
+ """CreateConnectedAccountResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> CreateConnectedAccountResponse:
+ """Test CreateConnectedAccountResponse
+ 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 `CreateConnectedAccountResponse`
+ """
+ model = CreateConnectedAccountResponse()
+ if include_optional:
+ return CreateConnectedAccountResponse(
+ accounts = [{"accountId":"acc-789012","name":"My Exchange Account","status":"WAITING_FOR_APPROVAL"}]
+ )
+ else:
+ return CreateConnectedAccountResponse(
+ accounts = [{"accountId":"acc-789012","name":"My Exchange Account","status":"WAITING_FOR_APPROVAL"}],
+ )
+ """
+
+ def testCreateConnectedAccountResponse(self):
+ """Test CreateConnectedAccountResponse"""
+ # 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_create_multiple_vault_accounts_job_status.py b/test/test_create_multiple_vault_accounts_job_status.py
index 2f4d1603..13ea09c2 100644
--- a/test/test_create_multiple_vault_accounts_job_status.py
+++ b/test/test_create_multiple_vault_accounts_job_status.py
@@ -40,7 +40,7 @@ def make_instance(self, include_optional) -> CreateMultipleVaultAccountsJobStatu
if include_optional:
return CreateMultipleVaultAccountsJobStatus(
status = 'Success',
- vault_accounts = {"0":{"BTC_TEST":"bcrt1qs0zzqytuw49w2jqkmfhzgdh2lylzde2uw4zncz","ETH_TEST":"0x460395Edb2338023c6f137259C6e20B6C37dDE95"}},
+ vault_accounts = {"0":{"BTC_TEST":"bcrt1qs0zzqytuw49w2jqkmfhzgdh2lylzde2uw4zncz","ETH_TEST":"0x460395Edb2338023c6f137259C6e20B6C37dDE95","name":"My Vault Account"}},
tag_ids = ["a1b2c3d4-e5f6-7890-abcd-ef1234567890","b2c3d4e5-f6a7-8901-bcde-f12345678901"],
error_message = 'Asset not supported',
approval_request_id = '12345'
diff --git a/test/test_create_report_request.py b/test/test_create_report_request.py
new file mode 100644
index 00000000..abc9e150
--- /dev/null
+++ b/test/test_create_report_request.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.create_report_request import CreateReportRequest
+
+
+class TestCreateReportRequest(unittest.TestCase):
+ """CreateReportRequest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> CreateReportRequest:
+ """Test CreateReportRequest
+ 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 `CreateReportRequest`
+ """
+ model = CreateReportRequest()
+ if include_optional:
+ return CreateReportRequest(
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ compress = True,
+ filters = fireblocks.models.addresses_filters.AddressesFilters(
+ vault_account_ids = ["1","2"],
+ assets = ["BTC","ETH"], )
+ )
+ else:
+ return CreateReportRequest(
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ )
+ """
+
+ def testCreateReportRequest(self):
+ """Test CreateReportRequest"""
+ # 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_create_report_response.py b/test/test_create_report_response.py
new file mode 100644
index 00000000..7e617e2d
--- /dev/null
+++ b/test/test_create_report_response.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.create_report_response import CreateReportResponse
+
+
+class TestCreateReportResponse(unittest.TestCase):
+ """CreateReportResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> CreateReportResponse:
+ """Test CreateReportResponse
+ 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 `CreateReportResponse`
+ """
+ model = CreateReportResponse()
+ if include_optional:
+ return CreateReportResponse(
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11'
+ )
+ else:
+ return CreateReportResponse(
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11',
+ )
+ """
+
+ def testCreateReportResponse(self):
+ """Test CreateReportResponse"""
+ # 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_created_connected_account_item.py b/test/test_created_connected_account_item.py
new file mode 100644
index 00000000..067137a3
--- /dev/null
+++ b/test/test_created_connected_account_item.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.created_connected_account_item import CreatedConnectedAccountItem
+
+
+class TestCreatedConnectedAccountItem(unittest.TestCase):
+ """CreatedConnectedAccountItem unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> CreatedConnectedAccountItem:
+ """Test CreatedConnectedAccountItem
+ 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 `CreatedConnectedAccountItem`
+ """
+ model = CreatedConnectedAccountItem()
+ if include_optional:
+ return CreatedConnectedAccountItem(
+ account_id = 'acc-789012',
+ name = 'My Exchange Account',
+ parent_account_id = 'acc-parent-001',
+ status = 'WAITING_FOR_APPROVAL'
+ )
+ else:
+ return CreatedConnectedAccountItem(
+ account_id = 'acc-789012',
+ name = 'My Exchange Account',
+ status = 'WAITING_FOR_APPROVAL',
+ )
+ """
+
+ def testCreatedConnectedAccountItem(self):
+ """Test CreatedConnectedAccountItem"""
+ # 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_delegation_blockchain_position_info.py b/test/test_delegation_blockchain_position_info.py
index 2390c94c..4fce17f9 100644
--- a/test/test_delegation_blockchain_position_info.py
+++ b/test/test_delegation_blockchain_position_info.py
@@ -41,6 +41,7 @@ def make_instance(self, include_optional) -> DelegationBlockchainPositionInfo:
return DelegationBlockchainPositionInfo(
stake_account_address = '3Ru67FyzMTcdENmmRL4Eve4dtPd6AdpuypR21q5EQCdq',
stake_account_derivation_change_value = 7,
+ rewards_breakdown = {"issuance":"0.000856038","mev":"0.000123456","lastRewardSyncedAt":"2023-07-13T15:55:34.256Z"},
is_compounding_validator = True,
total_withdrawable_amount = '1.5',
total_inactive_amount = '2.0'
diff --git a/test/test_destination_transfer_peer_path_response.py b/test/test_destination_transfer_peer_path_response.py
index 8ccf7c79..2bd28dc2 100644
--- a/test/test_destination_transfer_peer_path_response.py
+++ b/test/test_destination_transfer_peer_path_response.py
@@ -44,7 +44,8 @@ def make_instance(self, include_optional) -> DestinationTransferPeerPathResponse
id = '',
name = '',
wallet_id = '',
- trading_account = ''
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}]
)
else:
return DestinationTransferPeerPathResponse(
diff --git a/test/test_direct_access_provider.py b/test/test_direct_access_provider.py
index b059f67b..a4e0da03 100644
--- a/test/test_direct_access_provider.py
+++ b/test/test_direct_access_provider.py
@@ -41,7 +41,7 @@ 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},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
approved = True,
has_terms_of_service = True,
terms_of_service_url = '',
@@ -52,7 +52,7 @@ def make_instance(self, include_optional) -> DirectAccessProvider:
id = '',
name = '',
account_based = True,
- manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
has_terms_of_service = True,
)
"""
diff --git a/test/test_draft_response.py b/test/test_draft_response.py
index 222dc4e7..120a5c12 100644
--- a/test/test_draft_response.py
+++ b/test/test_draft_response.py
@@ -125,12 +125,7 @@ def make_instance(self, include_optional) -> DraftResponse:
index = 1, )
],
draft_id = '',
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', )
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}
)
else:
return DraftResponse(
@@ -222,12 +217,7 @@ def make_instance(self, include_optional) -> DraftResponse:
index = 1, )
],
draft_id = '',
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}},
)
"""
diff --git a/test/test_draft_review_and_validation_response.py b/test/test_draft_review_and_validation_response.py
index 8a968cc1..3e8b9610 100644
--- a/test/test_draft_review_and_validation_response.py
+++ b/test/test_draft_review_and_validation_response.py
@@ -128,12 +128,7 @@ def make_instance(self, include_optional) -> DraftReviewAndValidationResponse:
index = 1, )
],
draft_id = '',
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ), ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}, ),
validation = fireblocks.models.policy_validation.PolicyValidation(
status = '',
check_result = fireblocks.models.policy_check_result.PolicyCheckResult(
@@ -242,12 +237,7 @@ def make_instance(self, include_optional) -> DraftReviewAndValidationResponse:
index = 1, )
],
draft_id = '',
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ), ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}, ),
validation = fireblocks.models.policy_validation.PolicyValidation(
status = '',
check_result = fireblocks.models.policy_check_result.PolicyCheckResult(
diff --git a/test/test_exposure.py b/test/test_exposure.py
index f1d87fd8..bdba9b2c 100644
--- a/test/test_exposure.py
+++ b/test/test_exposure.py
@@ -37,12 +37,17 @@ def make_instance(self, include_optional) -> Exposure:
model = Exposure()
if include_optional:
return Exposure(
- asset_address = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
- symbol = 'WETH',
- amount = '125.5'
+ address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
+ amount = '10.0',
+ symbol = 'USDC',
+ decimals = 6,
+ asset_id = 'USDC_ETH',
+ amount_usd = '10.0'
)
else:
return Exposure(
+ address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
+ amount = '10.0',
)
"""
diff --git a/test/test_get_action_response.py b/test/test_get_action_response.py
index db38502d..6c8950b3 100644
--- a/test/test_get_action_response.py
+++ b/test/test_get_action_response.py
@@ -38,6 +38,8 @@ def make_instance(self, include_optional) -> GetActionResponse:
if include_optional:
return GetActionResponse(
id = '660e8400-e29b-41d4-a716-446655440001',
+ vault_account_id = '0',
+ user_id = '550e8400-e29b-41d4-a716-446655440000',
status = 'IN_PROGRESS',
provider_id = 'MORPHO',
action_type = 'DEPOSIT',
@@ -59,6 +61,8 @@ def make_instance(self, include_optional) -> GetActionResponse:
else:
return GetActionResponse(
id = '660e8400-e29b-41d4-a716-446655440001',
+ vault_account_id = '0',
+ user_id = '550e8400-e29b-41d4-a716-446655440000',
status = 'IN_PROGRESS',
provider_id = 'MORPHO',
action_type = 'DEPOSIT',
diff --git a/test/test_get_actions_response.py b/test/test_get_actions_response.py
index 6a265faf..de739c93 100644
--- a/test/test_get_actions_response.py
+++ b/test/test_get_actions_response.py
@@ -37,14 +37,14 @@ def make_instance(self, include_optional) -> GetActionsResponse:
model = GetActionsResponse()
if include_optional:
return GetActionsResponse(
- data = [{"id":"660e8400-e29b-41d4-a716-446655440001","status":"IN_PROGRESS","providerId":"MORPHO","actionType":"DEPOSIT","opportunityId":"morpho-usdc-vault-1","amount":"1500.5","createdAt":"2025-01-15T10:00:00Z","updatedAt":"2025-03-20T08:30:00Z","records":[{"actionType":"APPROVE","status":"COMPLETED","txId":"tx_abc123","txHash":"0xabc...","updatedAt":"2025-03-20T08:29:00Z"}]}],
+ data = [{"id":"660e8400-e29b-41d4-a716-446655440001","vaultAccountId":"0","userId":"550e8400-e29b-41d4-a716-446655440000","status":"IN_PROGRESS","providerId":"MORPHO","actionType":"DEPOSIT","opportunityId":"morpho-usdc-vault-1","amount":"1500.5","createdAt":"2025-01-15T10:00:00Z","updatedAt":"2025-03-20T08:30:00Z","records":[{"actionType":"APPROVE","status":"COMPLETED","txId":"tx_abc123","txHash":"0xabc...","updatedAt":"2025-03-20T08:29:00Z"}]}],
next = '',
prev = '',
total = 1
)
else:
return GetActionsResponse(
- data = [{"id":"660e8400-e29b-41d4-a716-446655440001","status":"IN_PROGRESS","providerId":"MORPHO","actionType":"DEPOSIT","opportunityId":"morpho-usdc-vault-1","amount":"1500.5","createdAt":"2025-01-15T10:00:00Z","updatedAt":"2025-03-20T08:30:00Z","records":[{"actionType":"APPROVE","status":"COMPLETED","txId":"tx_abc123","txHash":"0xabc...","updatedAt":"2025-03-20T08:29:00Z"}]}],
+ data = [{"id":"660e8400-e29b-41d4-a716-446655440001","vaultAccountId":"0","userId":"550e8400-e29b-41d4-a716-446655440000","status":"IN_PROGRESS","providerId":"MORPHO","actionType":"DEPOSIT","opportunityId":"morpho-usdc-vault-1","amount":"1500.5","createdAt":"2025-01-15T10:00:00Z","updatedAt":"2025-03-20T08:30:00Z","records":[{"actionType":"APPROVE","status":"COMPLETED","txId":"tx_abc123","txHash":"0xabc...","updatedAt":"2025-03-20T08:29:00Z"}]}],
total = 1,
)
"""
diff --git a/test/test_issue_api_user_pairing_token_response.py b/test/test_issue_api_user_pairing_token_response.py
new file mode 100644
index 00000000..cf4a1638
--- /dev/null
+++ b/test/test_issue_api_user_pairing_token_response.py
@@ -0,0 +1,66 @@
+# 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.issue_api_user_pairing_token_response import (
+ IssueApiUserPairingTokenResponse,
+)
+
+
+class TestIssueApiUserPairingTokenResponse(unittest.TestCase):
+ """IssueApiUserPairingTokenResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> IssueApiUserPairingTokenResponse:
+ """Test IssueApiUserPairingTokenResponse
+ 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 `IssueApiUserPairingTokenResponse`
+ """
+ model = IssueApiUserPairingTokenResponse()
+ if include_optional:
+ return IssueApiUserPairingTokenResponse(
+ id = '',
+ name = 'John Doe',
+ role = 'OWNER',
+ enabled = True,
+ user_type = 'API',
+ status = 'PENDING_ACTIVATION',
+ pairing_token = 'access-token-for-pairing'
+ )
+ else:
+ return IssueApiUserPairingTokenResponse(
+ id = '',
+ role = 'OWNER',
+ enabled = True,
+ pairing_token = 'access-token-for-pairing',
+ )
+ """
+
+ def testIssueApiUserPairingTokenResponse(self):
+ """Test IssueApiUserPairingTokenResponse"""
+ # 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 92cb3a62..7e1e9bbb 100644
--- a/test/test_manifest.py
+++ b/test/test_manifest.py
@@ -40,15 +40,18 @@ def make_instance(self, include_optional) -> Manifest:
order = None,
quote = None,
rate = fireblocks.models.manifest_base.ManifestBase(
- supported = True, ),
- participants_identification_policy = {"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}","overrides":[{"asset":"NGN","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]},\"additionalIdNumber\":{\"type\":\"string\"},\"additionalIdType\":{\"type\":\"string\",\"enum\":[\"BVN\"]}},\"required\":[\"entityType\",\"fullName\",\"email\",\"idNumber\",\"additionalIdNumber\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"registrationNumber\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\",\"email\",\"registrationNumber\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},{"rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"fullName\",\"phone\"]}]}}}"},{"asset":"NGN","rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]}},\"required\":[\"entityType\",\"fullName\",\"phone\",\"idNumber\"]}]}}}"}]}
+ supported = True,
+ participants_identification_policy = {"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}","overrides":[{"asset":"NGN","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]},\"additionalIdNumber\":{\"type\":\"string\"},\"additionalIdType\":{\"type\":\"string\",\"enum\":[\"BVN\"]}},\"required\":[\"entityType\",\"fullName\",\"email\",\"idNumber\",\"additionalIdNumber\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"registrationNumber\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\",\"email\",\"registrationNumber\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},{"rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"fullName\",\"phone\"]}]}}}"},{"asset":"NGN","rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]}},\"required\":[\"entityType\",\"fullName\",\"phone\",\"idNumber\"]}]}}}"}]},
+ supported_parties = ["FirstParty","ThirdParty"], )
)
else:
return Manifest(
order = None,
quote = None,
rate = fireblocks.models.manifest_base.ManifestBase(
- supported = True, ),
+ supported = True,
+ participants_identification_policy = {"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}","overrides":[{"asset":"NGN","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]},\"additionalIdNumber\":{\"type\":\"string\"},\"additionalIdType\":{\"type\":\"string\",\"enum\":[\"BVN\"]}},\"required\":[\"entityType\",\"fullName\",\"email\",\"idNumber\",\"additionalIdNumber\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"registrationNumber\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\",\"email\",\"registrationNumber\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},{"rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"fullName\",\"phone\"]}]}}}"},{"asset":"NGN","rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]}},\"required\":[\"entityType\",\"fullName\",\"phone\",\"idNumber\"]}]}}}"}]},
+ supported_parties = ["FirstParty","ThirdParty"], ),
)
"""
diff --git a/test/test_manifest_base.py b/test/test_manifest_base.py
index aa5b2ce1..7b50195b 100644
--- a/test/test_manifest_base.py
+++ b/test/test_manifest_base.py
@@ -37,7 +37,9 @@ def make_instance(self, include_optional) -> ManifestBase:
model = ManifestBase()
if include_optional:
return ManifestBase(
- supported = True
+ supported = True,
+ participants_identification_policy = {"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}","overrides":[{"asset":"NGN","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]},\"additionalIdNumber\":{\"type\":\"string\"},\"additionalIdType\":{\"type\":\"string\",\"enum\":[\"BVN\"]}},\"required\":[\"entityType\",\"fullName\",\"email\",\"idNumber\",\"additionalIdNumber\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"registrationNumber\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\",\"email\",\"registrationNumber\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},{"rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"fullName\",\"phone\"]}]}}}"},{"asset":"NGN","rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]}},\"required\":[\"entityType\",\"fullName\",\"phone\",\"idNumber\"]}]}}}"}]},
+ supported_parties = ["FirstParty","ThirdParty"]
)
else:
return ManifestBase(
diff --git a/test/test_manifest_order.py b/test/test_manifest_order.py
index f77b812a..1348f379 100644
--- a/test/test_manifest_order.py
+++ b/test/test_manifest_order.py
@@ -38,12 +38,15 @@ def make_instance(self, include_optional) -> ManifestOrder:
if include_optional:
return ManifestOrder(
supported = True,
+ participants_identification_policy = {"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}","overrides":[{"asset":"NGN","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]},\"additionalIdNumber\":{\"type\":\"string\"},\"additionalIdType\":{\"type\":\"string\",\"enum\":[\"BVN\"]}},\"required\":[\"entityType\",\"fullName\",\"email\",\"idNumber\",\"additionalIdNumber\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"registrationNumber\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\",\"email\",\"registrationNumber\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},{"rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"fullName\",\"phone\"]}]}}}"},{"asset":"NGN","rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]}},\"required\":[\"entityType\",\"fullName\",\"phone\",\"idNumber\"]}]}}}"}]},
+ supported_parties = [FirstParty, ThirdParty],
settlement_types = [
'DVP'
],
execution_types = [
'QUOTE'
- ]
+ ],
+ requires_reason_for_payment = True
)
else:
return ManifestOrder(
diff --git a/test/test_manifest_order_info.py b/test/test_manifest_order_info.py
index 66dc68a8..e0c4e2fa 100644
--- a/test/test_manifest_order_info.py
+++ b/test/test_manifest_order_info.py
@@ -42,7 +42,8 @@ def make_instance(self, include_optional) -> ManifestOrderInfo:
],
execution_types = [
'QUOTE'
- ]
+ ],
+ requires_reason_for_payment = True
)
else:
return ManifestOrderInfo(
diff --git a/test/test_manifest_quote.py b/test/test_manifest_quote.py
index 72ff0dfc..640ce720 100644
--- a/test/test_manifest_quote.py
+++ b/test/test_manifest_quote.py
@@ -38,6 +38,8 @@ def make_instance(self, include_optional) -> ManifestQuote:
if include_optional:
return ManifestQuote(
supported = True,
+ participants_identification_policy = {"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}","overrides":[{"asset":"NGN","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]},\"additionalIdNumber\":{\"type\":\"string\"},\"additionalIdType\":{\"type\":\"string\",\"enum\":[\"BVN\"]}},\"required\":[\"entityType\",\"fullName\",\"email\",\"idNumber\",\"additionalIdNumber\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"registrationNumber\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\",\"email\",\"registrationNumber\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},{"rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"fullName\",\"phone\"]}]}}}"},{"asset":"NGN","rail":"MOMO","schema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\"],\"properties\":{\"firstName\":{\"type\":\"string\"}}},\"phone\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"idType\":{\"type\":\"string\",\"enum\":[\"NIN_SLIP_CARD\"]}},\"required\":[\"entityType\",\"fullName\",\"phone\",\"idNumber\"]}]}}}"}]},
+ supported_parties = [FirstParty, ThirdParty],
settlement_types = [
'DVP'
]
diff --git a/test/test_network_record.py b/test/test_network_record.py
index ae3ae6fd..7890093c 100644
--- a/test/test_network_record.py
+++ b/test/test_network_record.py
@@ -43,14 +43,16 @@ def make_instance(self, include_optional) -> NetworkRecord:
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
destination = fireblocks.models.destination_transfer_peer_path_response.DestinationTransferPeerPathResponse(
type = 'VAULT_ACCOUNT',
sub_type = '',
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
tx_hash = '',
network_fee = '',
asset_id = '',
diff --git a/test/test_opportunity.py b/test/test_opportunity.py
index 342859a3..4ff224fc 100644
--- a/test/test_opportunity.py
+++ b/test/test_opportunity.py
@@ -62,6 +62,7 @@ def make_instance(self, include_optional) -> Opportunity:
net = 4.05, ),
performance_fee = '0.10',
management_fee = '0.01',
+ exposure_type = 'VAULT_ALLOCATION',
exposure = []
)
else:
diff --git a/test/test_participants_identification_policy.py b/test/test_participants_identification_policy.py
index 7f741123..def735bc 100644
--- a/test/test_participants_identification_policy.py
+++ b/test/test_participants_identification_policy.py
@@ -39,9 +39,6 @@ def make_instance(self, include_optional) -> ParticipantsIdentificationPolicy:
model = ParticipantsIdentificationPolicy()
if include_optional:
return ParticipantsIdentificationPolicy(
- supported_endpoints = [
- 'ORDER'
- ],
default_schema = '{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
@@ -241,9 +238,6 @@ def make_instance(self, include_optional) -> ParticipantsIdentificationPolicy:
)
else:
return ParticipantsIdentificationPolicy(
- supported_endpoints = [
- 'ORDER'
- ],
default_schema = '{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
diff --git a/test/test_payid_address.py b/test/test_payid_address.py
index 1f0466a8..4d43ccee 100644
--- a/test/test_payid_address.py
+++ b/test/test_payid_address.py
@@ -48,7 +48,6 @@ def make_instance(self, include_optional) -> PayidAddress:
account_holder = {"name":"John Smith","city":"New York","country":"US","subdivision":"NY","address":"123 Wall Street, Apt 4B","postalCode":"10005"},
value = 'john.williams@email.com',
type = 'EMAIL',
- account_number = '12345678',
)
"""
diff --git a/test/test_payid_payment_info.py b/test/test_payid_payment_info.py
index 5c419893..e5b88c26 100644
--- a/test/test_payid_payment_info.py
+++ b/test/test_payid_payment_info.py
@@ -56,6 +56,7 @@ def make_instance(self, include_optional) -> PayidPaymentInfo:
country = 'AU',
value = 'john.williams@email.com',
type = 'EMAIL',
+ bsb = '123-456',
account_number = '12345678',
)
"""
diff --git a/test/test_policy_and_validation_response.py b/test/test_policy_and_validation_response.py
index e2d5aff1..6a991b09 100644
--- a/test/test_policy_and_validation_response.py
+++ b/test/test_policy_and_validation_response.py
@@ -124,12 +124,7 @@ def make_instance(self, include_optional) -> PolicyAndValidationResponse:
derivation_path = {"path":[44,0,0,0,0],"partial":false},
index = 1, )
],
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ), ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}, ),
validation = fireblocks.models.policy_validation.PolicyValidation(
status = '',
check_result = fireblocks.models.policy_check_result.PolicyCheckResult(
@@ -236,12 +231,7 @@ def make_instance(self, include_optional) -> PolicyAndValidationResponse:
derivation_path = {"path":[44,0,0,0,0],"partial":false},
index = 1, )
],
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ), ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}, ),
validation = fireblocks.models.policy_validation.PolicyValidation(
status = '',
check_result = fireblocks.models.policy_check_result.PolicyCheckResult(
diff --git a/test/test_policy_editor_v2_beta_api.py b/test/test_policy_editor_v2_api.py
similarity index 86%
rename from test/test_policy_editor_v2_beta_api.py
rename to test/test_policy_editor_v2_api.py
index 3b74a8df..c7498b4f 100644
--- a/test/test_policy_editor_v2_beta_api.py
+++ b/test/test_policy_editor_v2_api.py
@@ -15,14 +15,14 @@
import unittest
-from fireblocks.api.policy_editor_v2_beta_api import PolicyEditorV2BetaApi
+from fireblocks.api.policy_editor_v2_api import PolicyEditorV2Api
-class TestPolicyEditorV2BetaApi(unittest.TestCase):
- """PolicyEditorV2BetaApi unit test stubs"""
+class TestPolicyEditorV2Api(unittest.TestCase):
+ """PolicyEditorV2Api unit test stubs"""
def setUp(self) -> None:
- self.api = PolicyEditorV2BetaApi()
+ self.api = PolicyEditorV2Api()
def tearDown(self) -> None:
pass
diff --git a/test/test_policy_metadata.py b/test/test_policy_metadata_entry.py
similarity index 70%
rename from test/test_policy_metadata.py
rename to test/test_policy_metadata_entry.py
index b3b92928..24a16d96 100644
--- a/test/test_policy_metadata.py
+++ b/test/test_policy_metadata_entry.py
@@ -15,11 +15,11 @@
import unittest
-from fireblocks.models.policy_metadata import PolicyMetadata
+from fireblocks.models.policy_metadata_entry import PolicyMetadataEntry
-class TestPolicyMetadata(unittest.TestCase):
- """PolicyMetadata unit test stubs"""
+class TestPolicyMetadataEntry(unittest.TestCase):
+ """PolicyMetadataEntry unit test stubs"""
def setUp(self):
pass
@@ -27,30 +27,28 @@ def setUp(self):
def tearDown(self):
pass
- def make_instance(self, include_optional) -> PolicyMetadata:
- """Test PolicyMetadata
+ def make_instance(self, include_optional) -> PolicyMetadataEntry:
+ """Test PolicyMetadataEntry
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 `PolicyMetadata`
+ # uncomment below to create an instance of `PolicyMetadataEntry`
"""
- model = PolicyMetadata()
+ model = PolicyMetadataEntry()
if include_optional:
- return PolicyMetadata(
+ return PolicyMetadataEntry(
edited_by = 'user123',
edited_at = '2024-01-15T10:30:00Z',
published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER'
+ published_at = '2024-01-15T11:00:00Z'
)
else:
- return PolicyMetadata(
- policy_type = 'TRANSFER',
+ return PolicyMetadataEntry(
)
"""
- def testPolicyMetadata(self):
- """Test PolicyMetadata"""
+ def testPolicyMetadataEntry(self):
+ """Test PolicyMetadataEntry"""
# inst_req_only = self.make_instance(include_optional=False)
# inst_req_and_optional = self.make_instance(include_optional=True)
diff --git a/test/test_policy_response.py b/test/test_policy_response.py
index 8dbfc95e..9e9c85a5 100644
--- a/test/test_policy_response.py
+++ b/test/test_policy_response.py
@@ -123,12 +123,7 @@ def make_instance(self, include_optional) -> PolicyResponse:
derivation_path = {"path":[44,0,0,0,0],"partial":false},
index = 1, )
],
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', )
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}
)
else:
return PolicyResponse(
@@ -218,12 +213,7 @@ def make_instance(self, include_optional) -> PolicyResponse:
derivation_path = {"path":[44,0,0,0,0],"partial":false},
index = 1, )
],
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}},
)
"""
diff --git a/test/test_position2.py b/test/test_position2.py
index 973a4f02..1cd973a1 100644
--- a/test/test_position2.py
+++ b/test/test_position2.py
@@ -53,10 +53,27 @@ def make_instance(self, include_optional) -> Position2:
created_at = '2025-01-15T10:00:00Z',
updated_at = '2025-03-20T08:30:00Z',
last_synced_at = '2025-03-20T08:29:55Z',
- available_actions = ["DEPOSIT","WITHDRAW"]
+ available_actions = ["DEPOSIT","WITHDRAW"],
+ var_yield = '1.23'
)
else:
return Position2(
+ id = '660e8400-e29b-41d4-a716-446655440001',
+ status = 'ACTIVE',
+ in_flight = False,
+ position_type = 'LEND',
+ vault_account_id = '12345',
+ opportunity_id = 'morpho-usdc-vault-1',
+ chain_id = '1',
+ provider_id = 'MORPHO',
+ origin = 'NATIVE',
+ principal_asset_id = 'USDC_ETH',
+ position_asset_id = 'MORPHO_USDC_VAULT_ETH',
+ principal_balance = '10000.00',
+ position_balance = '9950.5',
+ created_at = '2025-01-15T10:00:00Z',
+ updated_at = '2025-03-20T08:30:00Z',
+ available_actions = ["DEPOSIT","WITHDRAW"],
)
"""
diff --git a/test/test_publish_result.py b/test/test_publish_result.py
index f5f34d5d..997053dc 100644
--- a/test/test_publish_result.py
+++ b/test/test_publish_result.py
@@ -138,12 +138,7 @@ def make_instance(self, include_optional) -> PublishResult:
error_field = 'operator', )
], )
], ),
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', )
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}}
)
else:
return PublishResult(
@@ -248,12 +243,7 @@ def make_instance(self, include_optional) -> PublishResult:
error_field = 'operator', )
], )
], ),
- metadata = fireblocks.models.policy_metadata.PolicyMetadata(
- edited_by = 'user123',
- edited_at = '2024-01-15T10:30:00Z',
- published_by = 'user456',
- published_at = '2024-01-15T11:00:00Z',
- policy_type = 'TRANSFER', ),
+ metadata = {"TRANSFER":{"editedBy":"user123","editedAt":"2024-01-15T10:30:00Z","publishedBy":"user456","publishedAt":"2024-01-15T11:00:00Z"}},
)
"""
diff --git a/test/test_remove_collateral_request_body.py b/test/test_remove_collateral_request_body.py
index 8ebf340f..e9fe14a0 100644
--- a/test/test_remove_collateral_request_body.py
+++ b/test/test_remove_collateral_request_body.py
@@ -91,12 +91,12 @@ def make_instance(self, include_optional) -> RemoveCollateralRequestBody:
inputs_to_spend = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
inputs_to_exclude = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
fill_fee_for_selected_inputs = True, ), ),
customer_ref_id = 'abcdef',
diff --git a/test/test_report_conflict_response.py b/test/test_report_conflict_response.py
new file mode 100644
index 00000000..4407662d
--- /dev/null
+++ b/test/test_report_conflict_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.report_conflict_response import ReportConflictResponse
+
+
+class TestReportConflictResponse(unittest.TestCase):
+ """ReportConflictResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ReportConflictResponse:
+ """Test ReportConflictResponse
+ 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 `ReportConflictResponse`
+ """
+ model = ReportConflictResponse()
+ if include_optional:
+ return ReportConflictResponse(
+ error_code = 12005,
+ name = 'REPORT_ALREADY_IN_FLIGHT',
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11'
+ )
+ else:
+ return ReportConflictResponse(
+ error_code = 12005,
+ name = 'REPORT_ALREADY_IN_FLIGHT',
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11',
+ )
+ """
+
+ def testReportConflictResponse(self):
+ """Test ReportConflictResponse"""
+ # 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_report_job.py b/test/test_report_job.py
new file mode 100644
index 00000000..aae253f8
--- /dev/null
+++ b/test/test_report_job.py
@@ -0,0 +1,71 @@
+# 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.report_job import ReportJob
+
+
+class TestReportJob(unittest.TestCase):
+ """ReportJob unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ReportJob:
+ """Test ReportJob
+ 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 `ReportJob`
+ """
+ model = ReportJob()
+ if include_optional:
+ return ReportJob(
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11',
+ status = 'QUEUED',
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ compress = True,
+ requested_by_user_id = '44fcead0-7053-4831-a53a-df7fb90d440f',
+ created_at = 1717190000000,
+ completed_at = 1717191800000,
+ failed_at = 1717191500000,
+ row_count = 42500,
+ file_size_bytes = 1048576
+ )
+ else:
+ return ReportJob(
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11',
+ status = 'QUEUED',
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ compress = True,
+ requested_by_user_id = '44fcead0-7053-4831-a53a-df7fb90d440f',
+ created_at = 1717190000000,
+ )
+ """
+
+ def testReportJob(self):
+ """Test ReportJob"""
+ # 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_report_job_links.py b/test/test_report_job_links.py
new file mode 100644
index 00000000..d9e4f953
--- /dev/null
+++ b/test/test_report_job_links.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.report_job_links import ReportJobLinks
+
+
+class TestReportJobLinks(unittest.TestCase):
+ """ReportJobLinks unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ReportJobLinks:
+ """Test ReportJobLinks
+ 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 `ReportJobLinks`
+ """
+ model = ReportJobLinks()
+ if include_optional:
+ return ReportJobLinks(
+ download_url = 'https://s3.amazonaws.com/fireblocks-reports/report-0190b3c2.csv.gz?X-Amz-Expires=3600&...',
+ download_url_expires_at = 1717200000000
+ )
+ else:
+ return ReportJobLinks(
+ download_url = 'https://s3.amazonaws.com/fireblocks-reports/report-0190b3c2.csv.gz?X-Amz-Expires=3600&...',
+ download_url_expires_at = 1717200000000,
+ )
+ """
+
+ def testReportJobLinks(self):
+ """Test ReportJobLinks"""
+ # 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_report_job_response.py b/test/test_report_job_response.py
new file mode 100644
index 00000000..bf67a683
--- /dev/null
+++ b/test/test_report_job_response.py
@@ -0,0 +1,74 @@
+# 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.report_job_response import ReportJobResponse
+
+
+class TestReportJobResponse(unittest.TestCase):
+ """ReportJobResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ReportJobResponse:
+ """Test ReportJobResponse
+ 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 `ReportJobResponse`
+ """
+ model = ReportJobResponse()
+ if include_optional:
+ return ReportJobResponse(
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11',
+ status = 'QUEUED',
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ compress = True,
+ requested_by_user_id = '44fcead0-7053-4831-a53a-df7fb90d440f',
+ created_at = 1717190000000,
+ completed_at = 1717191800000,
+ failed_at = 1717191500000,
+ row_count = 42500,
+ file_size_bytes = 1048576,
+ links = fireblocks.models.report_job_links.ReportJobLinks(
+ download_url = 'https://s3.amazonaws.com/fireblocks-reports/report-0190b3c2.csv.gz?X-Amz-Expires=3600&...',
+ download_url_expires_at = 1717200000000, )
+ )
+ else:
+ return ReportJobResponse(
+ id = '0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11',
+ status = 'QUEUED',
+ report_type = 'ADDRESSES',
+ output_format = 'CSV',
+ compress = True,
+ requested_by_user_id = '44fcead0-7053-4831-a53a-df7fb90d440f',
+ created_at = 1717190000000,
+ )
+ """
+
+ def testReportJobResponse(self):
+ """Test ReportJobResponse"""
+ # 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_report_list_response.py b/test/test_report_list_response.py
new file mode 100644
index 00000000..dcf85154
--- /dev/null
+++ b/test/test_report_list_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.report_list_response import ReportListResponse
+
+
+class TestReportListResponse(unittest.TestCase):
+ """ReportListResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> ReportListResponse:
+ """Test ReportListResponse
+ 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 `ReportListResponse`
+ """
+ model = ReportListResponse()
+ if include_optional:
+ return ReportListResponse(
+ data = [],
+ next = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9',
+ prev = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9'
+ )
+ else:
+ return ReportListResponse(
+ data = [],
+ next = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9',
+ prev = 'eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9',
+ )
+ """
+
+ def testReportListResponse(self):
+ """Test ReportListResponse"""
+ # 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_participants_identification_supported_endpoint.py b/test/test_report_output_format.py
similarity index 60%
rename from test/test_participants_identification_supported_endpoint.py
rename to test/test_report_output_format.py
index b608f8e0..6d18c5b4 100644
--- a/test/test_participants_identification_supported_endpoint.py
+++ b/test/test_report_output_format.py
@@ -15,13 +15,11 @@
import unittest
-from fireblocks.models.participants_identification_supported_endpoint import (
- ParticipantsIdentificationSupportedEndpoint,
-)
+from fireblocks.models.report_output_format import ReportOutputFormat
-class TestParticipantsIdentificationSupportedEndpoint(unittest.TestCase):
- """ParticipantsIdentificationSupportedEndpoint unit test stubs"""
+class TestReportOutputFormat(unittest.TestCase):
+ """ReportOutputFormat unit test stubs"""
def setUp(self):
pass
@@ -29,9 +27,9 @@ def setUp(self):
def tearDown(self):
pass
- def testParticipantsIdentificationSupportedEndpoint(self):
- """Test ParticipantsIdentificationSupportedEndpoint"""
- # inst = ParticipantsIdentificationSupportedEndpoint()
+ def testReportOutputFormat(self):
+ """Test ReportOutputFormat"""
+ # inst = ReportOutputFormat()
if __name__ == "__main__":
diff --git a/test/test_report_status.py b/test/test_report_status.py
new file mode 100644
index 00000000..b74a034f
--- /dev/null
+++ b/test/test_report_status.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.report_status import ReportStatus
+
+
+class TestReportStatus(unittest.TestCase):
+ """ReportStatus unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testReportStatus(self):
+ """Test ReportStatus"""
+ # inst = ReportStatus()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_report_type.py b/test/test_report_type.py
new file mode 100644
index 00000000..52579a0f
--- /dev/null
+++ b/test/test_report_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.report_type import ReportType
+
+
+class TestReportType(unittest.TestCase):
+ """ReportType unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testReportType(self):
+ """Test ReportType"""
+ # inst = ReportType()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_reports_beta_api.py b/test/test_reports_beta_api.py
new file mode 100644
index 00000000..24171f2d
--- /dev/null
+++ b/test/test_reports_beta_api.py
@@ -0,0 +1,53 @@
+# 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.api.reports_beta_api import ReportsBetaApi
+
+
+class TestReportsBetaApi(unittest.TestCase):
+ """ReportsBetaApi unit test stubs"""
+
+ def setUp(self) -> None:
+ self.api = ReportsBetaApi()
+
+ def tearDown(self) -> None:
+ pass
+
+ def test_create_report(self) -> None:
+ """Test case for create_report
+
+ Create a report
+ """
+ pass
+
+ def test_get_report(self) -> None:
+ """Test case for get_report
+
+ Get report status
+ """
+ pass
+
+ def test_list_reports(self) -> None:
+ """Test case for list_reports
+
+ List reports
+ """
+ pass
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/test_sepa_payment_info.py b/test/test_sepa_payment_info.py
index 1aef5503..e9b98198 100644
--- a/test/test_sepa_payment_info.py
+++ b/test/test_sepa_payment_info.py
@@ -42,6 +42,8 @@ def make_instance(self, include_optional) -> SepaPaymentInfo:
account_holder_given_name = 'Marie',
account_holder_surname = 'Dupont',
account_holder_country = 'FR',
+ account_holder_postal_code = '75001',
+ account_holder_city = 'Paris',
account_holder_address = '123 Rue de la Paix',
iban = 'FR1420041010050500013M02606',
country = 'FR',
diff --git a/test/test_solana_blockchain_data.py b/test/test_solana_blockchain_data.py
index 1d54c281..53233ede 100644
--- a/test/test_solana_blockchain_data.py
+++ b/test/test_solana_blockchain_data.py
@@ -38,7 +38,8 @@ def make_instance(self, include_optional) -> SolanaBlockchainData:
if include_optional:
return SolanaBlockchainData(
stake_account_address = '3Ru67FyzMTcdENmmRL4Eve4dtPd6AdpuypR21q5EQCdq',
- stake_account_derivation_change_value = 7
+ stake_account_derivation_change_value = 7,
+ rewards_breakdown = {"issuance":"0.000856038","mev":"0.000123456","lastRewardSyncedAt":"2023-07-13T15:55:34.256Z"}
)
else:
return SolanaBlockchainData(
diff --git a/test/test_solana_rewards_breakdown.py b/test/test_solana_rewards_breakdown.py
new file mode 100644
index 00000000..0c4ad4c2
--- /dev/null
+++ b/test/test_solana_rewards_breakdown.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.solana_rewards_breakdown import SolanaRewardsBreakdown
+
+
+class TestSolanaRewardsBreakdown(unittest.TestCase):
+ """SolanaRewardsBreakdown unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> SolanaRewardsBreakdown:
+ """Test SolanaRewardsBreakdown
+ 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 `SolanaRewardsBreakdown`
+ """
+ model = SolanaRewardsBreakdown()
+ if include_optional:
+ return SolanaRewardsBreakdown(
+ issuance = '0.000856038',
+ mev = '0.000123456',
+ last_reward_synced_at = '2023-07-13T15:55:34.256Z'
+ )
+ else:
+ return SolanaRewardsBreakdown(
+ issuance = '0.000856038',
+ mev = '0.000123456',
+ last_reward_synced_at = '2023-07-13T15:55:34.256Z',
+ )
+ """
+
+ def testSolanaRewardsBreakdown(self):
+ """Test SolanaRewardsBreakdown"""
+ # 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_source_transfer_peer_path_response.py b/test/test_source_transfer_peer_path_response.py
index 8451e48a..630add48 100644
--- a/test/test_source_transfer_peer_path_response.py
+++ b/test/test_source_transfer_peer_path_response.py
@@ -44,7 +44,8 @@ def make_instance(self, include_optional) -> SourceTransferPeerPathResponse:
id = '',
name = '',
wallet_id = '',
- trading_account = ''
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}]
)
else:
return SourceTransferPeerPathResponse(
diff --git a/test/test_tags_api.py b/test/test_tags_api.py
index 7ac94561..9b2e760c 100644
--- a/test/test_tags_api.py
+++ b/test/test_tags_api.py
@@ -27,13 +27,6 @@ def setUp(self) -> None:
def tearDown(self) -> None:
pass
- def test_cancel_approval_request(self) -> None:
- """Test case for cancel_approval_request
-
- Cancel an approval request by id
- """
- pass
-
def test_create_tag(self) -> None:
"""Test case for create_tag
diff --git a/test/test_trading_provider.py b/test/test_trading_provider.py
index ac43f5d8..c80ded2b 100644
--- a/test/test_trading_provider.py
+++ b/test/test_trading_provider.py
@@ -41,7 +41,7 @@ def make_instance(self, include_optional) -> TradingProvider:
name = '',
logo = '',
account_based = True,
- manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
connected = True,
accounts = [
{"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"}
@@ -56,7 +56,7 @@ def make_instance(self, include_optional) -> TradingProvider:
id = '',
name = '',
account_based = True,
- manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true},"participantsIdentificationPolicy":{"supportedEndpoints":["ORDER","QUOTE"],"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"}},
+ manifest = {"order":{"supported":true,"executionTypes":["MARKET","QUOTE"],"settlementTypes":["DVP"],"participantsIdentificationPolicy":{"defaultSchema":"{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"required\":[\"originator\",\"beneficiary\"],\"properties\":{\"originator\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"fullName\",\"email\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"entityType\",\"businessName\",\"email\"]}]},\"beneficiary\":{\"type\":\"object\",\"required\":[\"entityType\"],\"oneOf\":[{\"properties\":{\"entityType\":{\"const\":\"INDIVIDUAL\"},\"fullName\":{\"type\":\"object\",\"required\":[\"firstName\",\"lastName\"],\"properties\":{\"firstName\":{\"type\":\"string\"},\"lastName\":{\"type\":\"string\"}}}},\"required\":[\"entityType\",\"fullName\"]},{\"properties\":{\"entityType\":{\"const\":\"BUSINESS\"},\"businessName\":{\"type\":\"string\"}},\"required\":[\"entityType\",\"businessName\"]}]}}}"},"supportedParties":["FirstParty","ThirdParty"]},"quote":{"supported":true,"settlementTypes":["DVP"]},"rate":{"supported":true}},
connected = True,
accounts = [
{"id":"acc_9f4e2d8b1c6a5e73","name":"Main Trading Account"}
diff --git a/test/test_transaction_request.py b/test/test_transaction_request.py
index caf2fe30..450b7a2c 100644
--- a/test/test_transaction_request.py
+++ b/test/test_transaction_request.py
@@ -101,12 +101,12 @@ def make_instance(self, include_optional) -> TransactionRequest:
inputs_to_spend = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
inputs_to_exclude = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
fill_fee_for_selected_inputs = True, ), ),
customer_ref_id = 'abcdef',
diff --git a/test/test_transaction_response.py b/test/test_transaction_response.py
index c16acc7f..d948faa8 100644
--- a/test/test_transaction_response.py
+++ b/test/test_transaction_response.py
@@ -52,7 +52,8 @@ def make_instance(self, include_optional) -> TransactionResponse:
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
source_address = '',
tag = '',
destination = fireblocks.models.destination_transfer_peer_path_response.DestinationTransferPeerPathResponse(
@@ -61,7 +62,8 @@ def make_instance(self, include_optional) -> TransactionResponse:
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
destinations = [
fireblocks.models.transaction_response_destination.TransactionResponseDestination(
amount = '',
@@ -76,7 +78,8 @@ def make_instance(self, include_optional) -> TransactionResponse:
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
authorization_info = fireblocks.models.authorization_info.AuthorizationInfo(
allow_operator_as_authorizer = True,
logic = 'AND',
@@ -122,14 +125,16 @@ def make_instance(self, include_optional) -> TransactionResponse:
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
destination = fireblocks.models.destination_transfer_peer_path_response.DestinationTransferPeerPathResponse(
type = 'VAULT_ACCOUNT',
sub_type = '',
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
tx_hash = '',
network_fee = '',
asset_id = '',
diff --git a/test/test_transaction_response_destination.py b/test/test_transaction_response_destination.py
index 74d41152..6ca1957e 100644
--- a/test/test_transaction_response_destination.py
+++ b/test/test_transaction_response_destination.py
@@ -51,7 +51,8 @@ def make_instance(self, include_optional) -> TransactionResponseDestination:
id = '',
name = '',
wallet_id = '',
- trading_account = '', ),
+ trading_account = '',
+ tags = [{"id":"df4c0987-30da-4976-8dcf-bc2dd41ae331","label":"VIP"}], ),
authorization_info = fireblocks.models.authorization_info.AuthorizationInfo(
allow_operator_as_authorizer = True,
logic = 'AND',
diff --git a/test/test_transaction_tag.py b/test/test_transaction_tag.py
new file mode 100644
index 00000000..c67d2664
--- /dev/null
+++ b/test/test_transaction_tag.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.transaction_tag import TransactionTag
+
+
+class TestTransactionTag(unittest.TestCase):
+ """TransactionTag unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional) -> TransactionTag:
+ """Test TransactionTag
+ 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 `TransactionTag`
+ """
+ model = TransactionTag()
+ if include_optional:
+ return TransactionTag(
+ id = 'df4c0987-30da-4976-8dcf-bc2dd41ae331',
+ label = 'VIP'
+ )
+ else:
+ return TransactionTag(
+ id = 'df4c0987-30da-4976-8dcf-bc2dd41ae331',
+ label = 'VIP',
+ )
+ """
+
+ def testTransactionTag(self):
+ """Test TransactionTag"""
+ # 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_utxo_identifier.py b/test/test_utxo_identifier.py
index 5434921c..90a27a6d 100644
--- a/test/test_utxo_identifier.py
+++ b/test/test_utxo_identifier.py
@@ -39,7 +39,7 @@ def make_instance(self, include_optional) -> UtxoIdentifier:
return UtxoIdentifier(
tx_id = 'b70701f4-d7b1-4795-a8ee-b09cdb5b850e',
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0
+ index = 0
)
else:
return UtxoIdentifier(
diff --git a/test/test_utxo_input.py b/test/test_utxo_input.py
index 2e9f169a..ee88ea37 100644
--- a/test/test_utxo_input.py
+++ b/test/test_utxo_input.py
@@ -38,12 +38,12 @@ def make_instance(self, include_optional) -> UtxoInput:
if include_optional:
return UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0
+ index = 0
)
else:
return UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0,
+ index = 0,
)
"""
diff --git a/test/test_utxo_input_selection.py b/test/test_utxo_input_selection.py
index b6c266c8..8d64a827 100644
--- a/test/test_utxo_input_selection.py
+++ b/test/test_utxo_input_selection.py
@@ -40,12 +40,12 @@ def make_instance(self, include_optional) -> UtxoInputSelection:
inputs_to_spend = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
inputs_to_exclude = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
fill_fee_for_selected_inputs = True
)
diff --git a/test/test_utxo_selection_params.py b/test/test_utxo_selection_params.py
index 9b640ac1..561843de 100644
--- a/test/test_utxo_selection_params.py
+++ b/test/test_utxo_selection_params.py
@@ -49,12 +49,12 @@ def make_instance(self, include_optional) -> UtxoSelectionParams:
inputs_to_spend = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
inputs_to_exclude = [
fireblocks.models.utxo_input.UtxoInput(
tx_hash = 'b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c',
- vout = 0, )
+ index = 0, )
],
fill_fee_for_selected_inputs = True, )
)